ActionScript 3.0入門ノート CS4でタグ「addChild()」が付けられているもの

(section07-02 表示リストから抜粋)

 表示オブジェクトをメモリから消去する場合、イベントのリスナー関数を登録したままだとイベントが発生したタイミングで参照エラーになるので注意が必要です。表示オブジェクトを表示リストから取り除く際には、登録しておいたイベントのリスナー関数を忘れずに取り除かなければなりません。Event.ENTER_FRAMEイベントなどは表示リストに登録していなくてもイベントが発生します。
 次のサンプルは、FlowerAクラスのインスタンスを再生イベントの繰り返しを利用して作成し、ステージの上から下へと回転しながら降らせるムービーです。このサンプルではインスタンスを大量に作成しますが、作成してすぐに表示リストに追加するので、アニメーションの途中でメモリから消去されてエラーになることはありません。また、インスタンスを回転しながら降らせるためにインスタンスに再生イベントのリスナーonFrowerStep()を登録していますが、表示リストから消去する前にこのリスナー関数も取り除いています。

fig07-02-09b.jpgswfを試す

(section07-01 表示オブジェクトの追加から抜粋)

 次のサンプルではクリックした位置に花のインスタンスを作ります。先のサンプルと同じように表示するフレームとスケールはランダムに決めています。インスタンスの座標は6〜7行目でクリックした座標に設定しています。クリックした座標はMouseEvent.MOUSE_DOWNイベントの引数のイベントオブジェクトのstageX、stageYプロパティで取り出せます。
fig07-01-08b.jpgswfを試す

[:script:]クリックした位置にインスタンスを作る
1	stage.addEventListener(MouseEvent.MOUSE_DOWN, newFlower);
2	//クリックでインスタンスを作る
3	function newFlower(eventObj:MouseEvent):void {
4		var flower_mc:Flowers=new Flowers();
5		//クリックした座標に表示する
6		flower_mc.x=eventObj.stageX;
7		flower_mc.y=eventObj.stageY;
8		//スケールを0.8〜3.8の間でランダムに決める
9		var scale:Number=0.8+3*Math.random();
10		flower_mc.scaleX=flower_mc.scaleY=scale;
11		//表示するフレームをランダムに決める
12		var frame:uint=1+Math.floor(flower_mc.totalFrames*Math.random());
13		flower_mc.gotoAndStop(frame);
14		//ステージに表示する
15		addChild(flower_mc);
16	}	
まったく新しいAS3の世界!
694a.jpg
Adobe Flash CS4
詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

楽しいActionScript。
新たなる1歩へと踏み出しましょう。
■内容は?→ 目次を見る
■評判は?→ 書評を読む
この本を書いたわけ

タグ

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ