flash on 2012-5-23
♥0 |
Line 192 |
Modified 2012-05-23 23:53:13 |
MIT License
archived:2017-03-30 23:00:56
ActionScript3 source code
/**
* Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/aSSF
*/
package {
import flash.events.Event;
import flash.utils.ByteArray;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public var gamea:Game;
public var gameb:Game;
public var gamec:Game;
public var gamed:Game;
public function FlashTest() {
// write as3 code here..
gamea = new Game(); //server (simulated, not using net)
gameb = new Game();
gamec = new Game();
gamed = new Game();
addChild(gamea);
addChild(gameb);
addChild(gamec);
addChild(gamed);
gamea.y = 10;
gamea.x = 10;
gamea.initDefault();
gameb.y = 10;
gameb.x = 200+20;
gamec.x = 10;
gamec.y = 200+20;
gamed.x = 200+20;
gamed.y = 200+20;
var b:ByteArray;
b = gamea.getData();
gameb.readData( b );
addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var d:int = 0;
public var k:int = 0;
public var j:int = 0;
public function onEnter(e:Event):void
{
gamea.update();
gameb.update();
d += 1; k+=1; j += 1;
if ( d >= 10) { d=0; }
if ( k >= 30) { k =0;}
if (j >= 2) { j = 0;}
if (d == 0 || k == 0 || j == 0)
{
var b:ByteArray;
b = gamea.getData();
}//endif
if (d == 0) gameb.readData( b );
if (k == 0) gamec.readData(b);
if (j == 0) gamed.readData(b);
}//onenter
}//classend
}
import flash.utils.Dictionary;
import flash.utils.ByteArray;
import flash.display.Graphics;
import flash.display.Sprite;
internal class Game extends Sprite
{
public function Game()
{
vecActor = new Vector.<Actor>;
dictActor = new Dictionary();
graphics.clear();
graphics.lineStyle(2,0);
graphics.beginFill(0xFFffFFff*Math.random(),0.5);
graphics.drawRect(0,0,200,200);
graphics.endFill();
var m:Sprite;
var g:Graphics;
m = new Sprite();
g = m.graphics;
g.clear();
g.beginFill(0,1);
g.drawRect(0,0,200,200);
g.endFill();
m.visible = false;
this.mask = m;
addChild(m);
}//ctor
public var vecActor:Vector.<Actor>;
public var dictActor:Dictionary;
public function update():void
{
var i:int;
var num:int;
var a:Actor;
num = vecActor.length;
for (i = 0; i < num; i++)
{
a = vecActor[i];
a.update();
}//nexti
}//update
public function addActor(a:Actor, id_:int = -1):Actor
{
if (a == null) { return null; }
if (id_ == -1)
{
a.id = idc;
idc += 1; }
else { a.id = id_; }
vecActor.push(a);
dictActor[a.id] = a;
addChild(a);
return a;
}//addactor
public var idc:int = 0;
public function initDefault():void
{
var a:Actor;
var i:int;
for (i = 0; i < 10; i++)
{
a = new Actor();
a.x = Math.random() * 200;
a.y = Math.random() * 200;
addActor(a);
}//nexti
}//initdef
public function getData():ByteArray
{
var ba:ByteArray;
ba = new ByteArray();
var i:int;
var num:int;
var a:Actor;
num = vecActor.length;
ba.writeInt(num);
for (i = 0; i < num; i++)
{
// x += Math.random();
// y += Math.random();
a = vecActor[i];
ba.writeInt(a.id);
ba.writeFloat(a.x);
ba.writeFloat(a.y);
ba.writeInt(a.color);
}//nexti
return ba;
}//getdata
public function readData(ba:ByteArray):void
{
ba.position = 0;
var i:int;
var num:int;
var a:Actor;
var id:int;
var cx:Number;
var cy:Number;
var col:int;
num = ba.readInt();
//y+= num;
//if (num <= 0) { y+= 20; }
for (i = 0; i < num; i++)
{
// x += Math.random();
// y += Math.random();
id = ba.readInt();
cx = ba.readFloat();
cy = ba.readFloat();
col = ba.readInt();
//y+= num;
a = dictActor[id];
if (a == null) { a = addActor(new Actor(col), id); }
// y+= num;
// a.x = ba.readFloat();
// a.y = ba.readFloat();
// a.color = ba.readInt();
a.x = cx;
a.y = cy;
}//nexti
}//readdata
}//game
internal class Actor extends Sprite
{
public var id:int = -1;
public var game:Game;
public var color:int = 0;
public var vx:Number = 0;
public var vy:Number = 0;
public function Actor(color_:int = -1)
{
if (color_ == -1)
{
color = 0xffFFffFF * Math.random();
}
else
color = color_;
graphics.clear();
graphics.beginFill(color, 1);
graphics.drawCircle(0,0,8);
graphics.endFill();
}//ctor
public function update():void
{
x += (Math.random() - Math.random())*5;
y += (Math.random() - Math.random())*5;
if (x >= 200) { x = 0;}
if (y >= 200) { y = 0;}
}//update
}//actor