プロが教えるわが家の防犯対策術!

Flash初心者です。
MouseEventについて教えてください。

作業の環境はCS5 AS3です。

下記のソースでbot1を押しても出力結果で[object MovieClip]と
表示されるだけでターゲットのインスタンス名を割り出せませんでした。
MouseEvent.ROLL_OVER等でしたら出来たのですが、
どうしてもCLICKでは上手くいきませんでした。

簡単なことだとは思うのですが、僕には分からなく困り果てています。
どうか教えてください、宜しくお願いいたしす。

============================================
使用ソース
============================================

bot1.addEventListener(MouseEvent.CLICK, onClick);

function onClick(e:MouseEvent):void{
trace(e.target);
}


以上です。
宜しくお願いいたします。

A 回答 (1件)

答え自体は簡単に書けるのですが,


少し模索する方向がずれていらっしゃるように思うので
その点を書きます。

とりあえずは
次のページを良く読んで理解してみてください。

「[AS3] MovieClipインスタンスとインスタンス名」
http://f-site.org/articles/2008/04/19014939.html

 

=============================

今回のご質問に ただ単に回答するだけでしたら
次のスクリプト↓で終わりです。

------------------
bot1.addEventListener(MouseEvent.CLICK, onClick);

function onClick(e:MouseEvent):void {
trace(e.target.name);
}
------------------

または上記の
trace(e.target.name);
の部分を
trace(e.currentTarget.name);
のようにしても良いです。

 

=============================

しかし...
 「そのインスタンス名を取得して何かメリットがありますか?」
というのが
最初に書いた「[AS3] MovieClipインスタンスとインスタンス名」のページに書かれてあることです。
インスタンス名を取得する必要など普通はないと思います。

たとえば
 「bot1 をクリックしたときに bot1 を右に 20px 移動させる」
とします。
その場合は次のようにすれば良いだけです。

------------------
bot1.addEventListener(MouseEvent.CLICK, onClick);

function onClick(e:MouseEvent):void {
e.target.x += 20;
}
------------------

インスタンス名など出てきません。

でも確かにインスタンス名のような名前が必要な場合も出てきますよね。
しかし,その場合も次のようにすれば良いだけです。

------------------
bot1.addEventListener(MouseEvent.CLICK, onClick);

function onClick(e:MouseEvent):void {
var my_mc:MovieClip = MovieClip(e.target);
my_mc.x +=20;
}
------------------

これは
 インスタンスを名指しで呼びたいときには
 インスタンス名や最初の変数名など関係なく
 勝手にインスタンスを参照する変数を作って
 その名で呼べば良いでしょう
ということです。

最初に書いたページに書かれてある
「変数によりインスタンスを参照するというのが、ActionScript 3.0の基本だといえます。」
の具体的な一例にもなっています。
 

 
話が前後しますが

bot1.addEventListener(MouseEvent.CLICK, onClick);

ここで使っていらっしゃる 「bot1」 も,
この時点ではすでに 「インスタンス名」 ではありません。

この 「bot1」 は
インスタンス名 と同名で自動命名されたそのインスタンスを参照する 「変数名」 なのです【図】↓。

その他 URL
「Adobe ActionScript 3.0* 変数と定数」
http://help.adobe.com/ja_JP/ActionScript/3.0_Pro …
 
「MouseEventについて教えてくださ」の回答画像1
    • good
    • 0
この回答へのお礼

BlurFiltan 様
お忙しい中大変親切にご回答頂きまして
本当にありがとうございます。

インスタンスに対して全然違う考え方をしていました。
教えて頂いたページを何度も呼んでちゃんと
理解していきます。


回答だけでなくインスタンスの概念まで
親切に教えて頂きましてありがとうございました。

これからも頑張って勉強していきます。

本当にありがとうございました。

お礼日時:2011/03/24 00:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!