forked from: Tweener Bitmap(100*100)を100個でドン!
forked from Tweener Bitmap(100*100)を100個でドン! (diff: 47)
Tweener で100個の画像(50*50)を動かしてみる。 フレームレートが落ちるかどうかを見るためのテスト。
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;
}
}
