MouseEventではまった事

マウスオーバーとクリックでインスタンス名が違う・・。

//コンストラクタ
private var tex:TextField = new TextField();
private var sp:Sprite = new Sprite();

addChild(sp);
tex.text = “hoge”;
sp.addChild(tex);

//イベントリスナー
sp.addEventListener(MouseEvent.ROLL_OVER, btnOver);
sp.addEventListener(MouseEvent.CLICK, btnCK);

イベント内容

private function btnOver(e:MouseEvent):void
{
trace(e.target.name, sp.name, e.target == sp);
}
private function btnCK(e:MouseEvent):void
{
trace(e.target.name, sp.name, e.target == sp);
}

なんで違うインスタンス名になっちゃうのーーーーーーー
きーってなってましたが、ここみて解決しました。

http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/events/MouseEvent.html#CLICK

target
ポインティングデバイスの下にある InteractiveObject インスタンスです。target は、必ずしもイベントリスナーを登録した表示リスト内のオブジェクトとは限りません。現在イベントを処理している表示リスト内のオブジェクトにアクセスするには、currentTarget プロパティを使用します。

currentTargetを使えってことですか
そうですか。こうですか。わかりました。

>>サンプルソース

//コンストラクタ
private var tex:TextField = new TextField();
private var sp:Sprite = new Sprite();

addChild(sp);
tex.text = “hoge”;
sp.addChild(tex);

//イベントリスナー
sp.addEventListener(MouseEvent.ROLL_OVER, btnOver);
sp.addEventListener(MouseEvent.CLICK, btnCK);

イベント内容

private function btnOver(e:MouseEvent):void
{
trace(e.target.name, sp.name, e.target == sp);
}
private function btnCK(e:MouseEvent):void
{
trace(e.target.name, sp.name, e.target == sp);
}

イベント内容

private function btnOver(e:MouseEvent):void
{
trace(e.currentTarget.name, sp.name, e.currentTarget == sp);
}
private function btnCK(e:MouseEvent):void
{
trace(e.currentTarget.name, sp.name, e.currentTarget == sp);
}

くそ!

Tags:

flashがどこで開かれたか知りたい

swfが開かれているurlを調べたい
javascriptで簡単にできました。

location.href

例)

<script type="text/javascript">
alert(location.href);
</script>

サンプル

これだけです
こいつをflashvarsでSWFにおくればflashでもどこから来たのか解析できますね。

Tags: