TechHUB:Flash1:05:ENTER_FRAME
forked from TechHUB:Flash1:04:MouseEvent (diff: 57)
ActionScript3 source code
/**
* Copyright yprops ( http://wonderfl.net/user/yprops )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/a5yA
*/
// forked from yprops's TechHUB:Flash1:04:MouseEvent
package {
import flash.text.*;
import flash.display.*;
import flash.events.*;
public class FlashTest extends Sprite {
/*
*/
//変数-------------------------------
private var myText :TextField;
private var ositene :Sprite;
private var children :Array;
private var count :int;
//コンストラクタ-----------------------
public function FlashTest() {
stage.frameRate = 5;
count = 0;
initOutput();
makeOsitene();
}
//メイン処理--------------------------
private function makeOsitene() :void{
var i :int;
var sp :Sprite;
ositene = new Sprite();
addChild(ositene);
ositene.x = 100;
ositene.y = 200;
// Spriteインスタンスに イベントリスナー設定
ositene.addEventListener(
Event.ENTER_FRAME,
onOsiteneUpdate
);
// Spriteインスタンスに イベントリスナー設定
ositene.addEventListener(
MouseEvent.CLICK,
onOsiteneClick
);
//children = new Array();
children = [];
for( i = 0; i < 10; i++){
sp = makeSprite();
sp.x = Math.random() * 100 - 50;
sp.y = Math.random() * 100 - 50;
ositene.addChild(sp);
children.push(sp); //chldren 配列の一番後ろにspを追加
}
}
private function onOsiteneClick(event:MouseEvent) :void{
this.removeChild(ositene);
ositene.removeEventListener(
Event.ENTER_FRAME, onOsiteneUpdate
);
ositene.removeEventListener(
MouseEvent.CLICK, onOsiteneClick
);
ositene = null;
children = null;
}
//イベントハンドラメソッド---------------------
private function onOsiteneUpdate(event:Event) :void{
var i :int;
var sp :Sprite;
//ositeneを横移動
ositene.x = ositene.x + 5;
if(ositene.x > 300){
ositene.x = 100;
}
//children に記憶したもの全てを適当に移動
for(i = 0; i < children.length; i++){
sp = children[i] as Sprite;
sp.x = Math.random() * 100 - 50;
sp.y = Math.random() * 100 - 50;
sp.scaleX = Math.random() * 0.2 + 0.8;
sp.scaleY = sp.scaleX;
}
renewOutput(event.type);
count++;
}
//その他メソッド-----------------------
private function makeSprite() :Sprite{
var sp :Sprite = new Sprite();
var gra :Graphics = sp.graphics;
gra.beginFill(0, 0.5);
gra.drawRect(-50, -50, 100, 100);
gra.endFill();
return sp;
}
private function initOutput() :void{
myText = new TextField();
myText.width = 400;
myText.height = 40;
myText.border = true;
addChild(myText);
}
private function renewOutput(message :String) :void{
myText.text = "再生回数:" + count + "\n" + message;
}
}
}
