Forked from: flabaka's スマイリーマークっぽいもの diff:39 スマイリーマークっぽいもの(ループ処理) ProgressionのCommandでスマイリーマークっぽいものを作ってみる flabaka forked:0favorite:1lines:82license : All rights reserved modified : 2009-02-27 22:29:19 Embed Tweet // forked from flabaka's スマイリーマークっぽいもの //ProgressionのCommandでスマイリーマークっぽいものを作ってみる package { import flash.display.Sprite; import jp.progression.commands.*; import jp.progression.core.commands.*; public class Main extends Sprite { public function Main() { //シリアルリストインスタンス作成 var s:Sprite = new Sprite(); var loopList:SerialList = new SerialList(); var sList:SerialList = new SerialList(); //線の設定 s.graphics.lineStyle(3,0x000000); //コマンド登録 loopList.addCommand( new AddChild(this, s), function():void{ s.graphics.beginFill(0xFFFF33); s.graphics.drawCircle(100,100,50); s.graphics.endFill(); }, new Wait(1000), function():void{ s.graphics.beginFill(0x000000); s.graphics.drawEllipse(80,78,10,20); s.graphics.endFill(); }, new Wait(1000), function():void{ s.graphics.beginFill(0x000000); s.graphics.drawEllipse(110,78,10,20); s.graphics.endFill(); }, new Wait(1000), function():void{ s.graphics.moveTo(75,110); s.graphics.curveTo(75,120,65,120); }, new Wait(1000), function():void{ s.graphics.moveTo(125,110); s.graphics.curveTo(125,120,135,120); }, new Wait(1000), function():void{ s.graphics.moveTo(72,118); s.graphics.curveTo(100,150,128,118); }, new Wait(1000), function():void{ s.graphics.moveTo(128,118); s.graphics.curveTo(100,156,72,118); }, new Wait(1000), new DoTweener(s,{x: 150,y:150,scaleX:2,scaleY:2,time:2}) ); //ループコマンドを使って顔を描写させる sList.addCommand(new LoopCommand(loopList)); //コマンド実行 sList.execute(); } } } //northprintさんのループコマンドを使わせてもらう import jp.progression.commands.*; import jp.progression.core.commands.Command; import jp.progression.events.*; class LoopCommand extends Command{ private var _command:Command; public function LoopCommand(command:Command,initObject:Object = null){ super( _execute, _interrupt, initObject ); _command = command; } private function _execute():void{ _command.addEventListener(CommandEvent.COMMAND_COMPLETE,commandComp); _command.execute(); executeComplete(); } private function commandComp(e:CommandEvent):void{ _command.execute(); } private function _interrupt():void{ _command.removeEventListener(CommandEvent.COMMAND_COMPLETE,commandComp); interruptComplete(); } public override function clone():Command{ return new LoopCommand(_command); } } Code Fullscreen Preview Fullscreen emnobu Wait Command SerialList CommandEvent.COMMAND_COMPLETE clone CommandEvent AddChild interruptComplete executeComplete addCommand execute DoTweener removeEventListener scaleY scaleX addEventListener Object time Sprite