フラッシュをつくる 6
wonderfl build flash online | 面白法人カヤック
import flash.display.Graphics; import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.Event; class FlashTest4 extends Sprite { public function new() { super(); //var g = graphics; //g.beginFill(0xFFFFFF, 1.0); //g.drawRect(0, 0, 465, 465); // <del>塗りつぶさないとマウスイベントが受け取れなかった</del> //addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); //訂正 (2009/03/27) flash.Lib.current.stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); } private function mouseDownHandler(e) { var ball = new Ball(); ball.x = mouseX; ball.y = mouseY; ball.addEventListener("owata", owataHandler); addChild(ball); } private function owataHandler(e) { var ball:Ball; try ball = cast(e.target, Ball) // キャストして代入。例外が出る。 catch(e:Dynamic) // 下の例ような式中の例外は、Flash9では使えない。 return; // var x = try f() catch(e:Dynamic) null; ball.removeEventListener("owata", owataHandler); removeChild(ball); ball = null; } public static function main() { flash.Lib.current.addChild(new FlashTest4()); } } class Ball extends Sprite { private var yMove:Float; private var bound:Int; private var grav:Float; public function new() { super(); // フィールドの初期化はコンストラクタに書かないとダメらしい。 yMove = 0; bound = 0; grav = 0.2; var g = graphics; // 乱数はIntを返すStd.randomと、Floatを返すMath.randomの二つがある。 var color = Std.random(0xFFFFFF); g.beginFill(color, 1.0); g.drawCircle(0, 0, 20); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(e) { y += yMove; yMove += grav; if (y > 400) { y = 400; yMove *= -0.8; bound++; } if (bound > 3) { removeEventListener(Event.ENTER_FRAME, enterFrameHandler); dispatchEvent(new Event("owata")); } } }
haxe -swf9 test4.swf -main FlashTest4 -swf-header 465:465:60:FFFFFF