forked from: Tweener Bitmap(100*100)を100個でドン!

by djakarta_trap forked from Tweener Bitmap(100*100)を100個でドン! (diff: 47)
Tweener で100個の画像(50*50)を動かしてみる。
フレームレートが落ちるかどうかを見るためのテスト。
♥0 | Line 82 | Modified 2009-12-11 17:45:42 | MIT License | (replaced)
play

ActionScript3 source code

/**
 * Copyright djakarta_trap ( http://wonderfl.net/user/djakarta_trap )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/krCo
 */

// forked from djakarta_trap's Tweener Bitmap(100*100)を100個でドン!
// forked from djakarta_trap's Tweener Bitmapを100個でドン!
// forked from djakarta_trap's Tweener graphicを100個でドン!
// Tweener で100個の画像(50*50)を動かしてみる。
// フレームレートが落ちるかどうかを見るためのテスト。
package {
	import flash.display.Bitmap;
	import flash.display.PixelSnapping;
    import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.net.URLRequest;
	import flash.system.LoaderContext;
	import jp.progression.casts.CastBitmap;
	import jp.progression.casts.CastSprite;
	import jp.progression.casts.getInstanceById;
	import jp.progression.commands.CommandInterruptType;
	import jp.progression.commands.display.RemoveAllChildren;
	import jp.progression.commands.lists.ParallelList;
	import jp.progression.commands.lists.SerialList;
	import jp.progression.commands.net.LoadBitmapData;
	import jp.progression.commands.Prop;
	import jp.progression.commands.tweens.DoTweener;
	import jp.progression.data.getResourceById;
	import jp.progression.data.Resource;
	import net.hires.debug.Stats;
	import flash.events.Event;
	
	[SWF(width="465", height="465", frameRate="60")]
	
    public class FlashTest extends Sprite {
		private var _instances:Array;
		private const _uri:String = "http://assets.wonderfl.net/images/related_images/1/10/1075/1075924b555f355b479d1758495d3f9f0ff84fc9";
        public function FlashTest() {
            this.addChild(new CastSprite( { id:"container" } ));
			this.addChild(new Stats());
			_instances = [];
			
			//画像をロード
			new LoadBitmapData(new URLRequest(_uri),{context:new LoaderContext(true), onComplete:function():void { createInstances(200) } } ).execute();
			stage.addEventListener(MouseEvent.CLICK, animateInstances);
			
        }
		
		private function animateInstances(e:MouseEvent):void 
		{
			new RemoveAllChildren(getInstanceById("container") as CastSprite).execute();
			
			_instances = [];
			
			createInstances(200);
			
			var comm:ParallelList = new ParallelList();
			for (var i:int = 0; i < _instances.length; i++)
			{
				comm.addCommand( 
					[
						new DoTweener(_instances[i], { /*fakeX:Math.random() * stage.stageWidth*10,*/ fakeY:Math.random() * stage.stageHeight*10, time:1, transition:"easeOutExpo" }, { interruptType:CommandInterruptType.SKIP } )
						//new Prop(_instances[i], { x:_instances[i].x, y:_instances[i].y } )
					]
				)
			}
			comm.execute();
		}
		
		private function createInstances(num:int):void
		{
			for (var i:int = 0; i < num; i++)
			{
				var cast:Tile = new Tile( { fakeX:Math.random() * stage.stageWidth*10, fakeY:Math.random() * stage.stageHeight*10 } );
				cast.addChild(new CastBitmap(Resource(getResourceById(_uri)).toBitmapData(), PixelSnapping.NEVER, true, {/*cacheAsBitmap:true,*/  x:-50,y:-50 } ));
				_instances.push(cast);
				(getInstanceById("container") as CastSprite).addChild(cast);
			}
		}
    }
}

import jp.progression.casts.CastSprite;

//セッター、ゲッター経由でプロパティを計算させる。
internal class Tile extends CastSprite {
	
	private var _fakeX:Number;
	private var _fakeY:Number;
	
	public function Tile(initObject:Object) {
		super(initObject);
		
	}
	
	public function get fakeX():Number { return _fakeX; }
	
	public function set fakeX(value:Number):void 
	{
		_fakeX = value;
		this.x = value / 10;
	}
	
	public function get fakeY():Number { return _fakeY; }
	
	public function set fakeY(value:Number):void 
	{
		_fakeY = value;
		this.y = value / 10;
	}
	
	
}