flash on 2012-5-23

by mutantleg
♥0 | Line 192 | Modified 2012-05-23 23:53:13 | MIT License
play

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