フラッシュをつくる 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