レス数:4 / 状態:解決済み / No:129 / ATOM
1
名前:Eupatorium
日付:2013/12/19(木)11:00:15
ID:pQmouxuFALIQ
初歩的な知識かも知れませんが、、、
ご教示のほど、よろしくお願いいたします。
FlashCS5.5、Action Script3.0を使用しています。
埋め込みアセットクラスMcを準備します。
Mcには、width 30、height 30の四角いビットマップ画像が保存されています。
var myMc:Mc = new Mc();
myMc.x = 100;
myMc.y = 100;
addChild(myMc);
このスクリプトでMcのインスタンスが表示されますが、
そのMcインスタンスをクリックすることで、Mcインスタンスの参照が保存されている変数を
調べることは、できるでしょうか?
質問内容を知りたい目的は、
100個ほどMcインスタンスを画面上に配置しまして、
それらをクリックすることでremoveChildし、
クリックされたMcインスタンスの参照が保存されていた変数にnullを代入したいため、
となります。
ご教示のほど、何卒、よろしくお願いいたします。
ご教示のほど、よろしくお願いいたします。
FlashCS5.5、Action Script3.0を使用しています。
埋め込みアセットクラスMcを準備します。
Mcには、width 30、height 30の四角いビットマップ画像が保存されています。
var myMc:Mc = new Mc();
myMc.x = 100;
myMc.y = 100;
addChild(myMc);
このスクリプトでMcのインスタンスが表示されますが、
そのMcインスタンスをクリックすることで、Mcインスタンスの参照が保存されている変数を
調べることは、できるでしょうか?
質問内容を知りたい目的は、
100個ほどMcインスタンスを画面上に配置しまして、
それらをクリックすることでremoveChildし、
クリックされたMcインスタンスの参照が保存されていた変数にnullを代入したいため、
となります。
ご教示のほど、何卒、よろしくお願いいたします。
2
日付:2013/12/22(日)18:54:36
ID:uqGvQ4UrzKin
クロージャを利用すると、クリックイベントにデータを持たせる事ができます。
配列の番地や、null を代入する為のオブジェクトそのものを渡す事ができます。
---------------------------------------------------------------------------------------
import flash.display.MovieClip;
import flash.display.Graphics;
import flash.events.MouseEvent;
var mc_list:Array = new Array();
var i:Number;
var num:Number = 100;
for(i=0;i<num;i++){
// 匿名関数を即時実行
(function():void{
// プライベート変数
var index:Number = i;
// ムービークリップを作成
var mc:MovieClip = new MovieClip();
// クリックされた時に実行されるイベント
mc.addEventListener(MouseEvent.CLICK,function(e:MouseEvent):void {
ムービークリップを除外
mc.parent.removeChild(mc);
trace("CLICK!! index:" + index);
mc_list[index] = null;
});
// ムービークリップに矩形をレンダリング
var g:Graphics;
g = mc.graphics;
g.lineStyle (5, 0xAA0000, 1.0);
g.beginFill (0xFF4444, 1.0);
g.drawRect (0,0,30,30);
// ステージにムービークリップを配置
stage.addChild(mc);
mc.x = Math.random() * stage.stageWidth;
mc.y = Math.random() * stage.stageHeight;
mc_list[index] = mc;
}).call(this);
}
---------------------------------------------------------------------------------------
他にも様々な方法で、イベントにデータを渡すことができます。
http://hakuhin.jp/as3/event.html#EVENT_03
配列の番地や、null を代入する為のオブジェクトそのものを渡す事ができます。
---------------------------------------------------------------------------------------
import flash.display.MovieClip;
import flash.display.Graphics;
import flash.events.MouseEvent;
var mc_list:Array = new Array();
var i:Number;
var num:Number = 100;
for(i=0;i<num;i++){
// 匿名関数を即時実行
(function():void{
// プライベート変数
var index:Number = i;
// ムービークリップを作成
var mc:MovieClip = new MovieClip();
// クリックされた時に実行されるイベント
mc.addEventListener(MouseEvent.CLICK,function(e:MouseEvent):void {
ムービークリップを除外
mc.parent.removeChild(mc);
trace("CLICK!! index:" + index);
mc_list[index] = null;
});
// ムービークリップに矩形をレンダリング
var g:Graphics;
g = mc.graphics;
g.lineStyle (5, 0xAA0000, 1.0);
g.beginFill (0xFF4444, 1.0);
g.drawRect (0,0,30,30);
// ステージにムービークリップを配置
stage.addChild(mc);
mc.x = Math.random() * stage.stageWidth;
mc.y = Math.random() * stage.stageHeight;
mc_list[index] = mc;
}).call(this);
}
---------------------------------------------------------------------------------------
他にも様々な方法で、イベントにデータを渡すことができます。
http://hakuhin.jp/as3/event.html#EVENT_03
3
名前:Eupatorium
日付:2013/12/23(月)17:31:51
ID:1lf2XtRfyk5M
アドバイスありがとうございます!
今までクロージャを知りませんでした。
教えていただき、できることが増えました^^
リンク先も、しっかり読ませていただきます。
大変助かりました。
ありがとうございます!
今までクロージャを知りませんでした。
教えていただき、できることが増えました^^
リンク先も、しっかり読ませていただきます。
大変助かりました。
ありがとうございます!
4
名前:状態変更
日付:2013/12/24(火)17:15:51
ID:1lf2XtRfyk5M
この質問の状態を『解決』に変更しました。
このスレッドについて
質問の状態 : | 解決済み |
投稿開始日 : | 2013/12/19(木)11:00:15 |
投稿終了日 : | 2013/12/31(火)17:15:52 |
投稿者 : | Eupatorium |
レス総数 : | 4 |
スレッド番号 : | 129 |