AS3 で swapDepths 的なことをやる時

例えばオブジェクトをマウスダウンでドラッグ開始させるときに最前面に再配置したい時:

sprite.addEventListener(MouseEvent.MOUSE_DOWN, dragStart);
sprite.addEventListener(MouseEvent.MOUSE_UP, dragStop);
function dragStart(e:MouseEvent):void {
setChildIndex(Sprite(e.currentTarget), numChildren - 1);
e.currentTarget.startDrag();
}
function dragStop(e:MouseEvent):void {
e.currentTarget.stopDrag();
}

Sprite 型にキャストすること。再配置する場所は numChildren – 1 になるということ。
ブログにでも書いておかないとすぐ忘れるw

ついでとして、ドラッグさせたいオブジェクトがステージ上にたくさんある場合、こうやって最前面にしてやらないと、下側のオブジェクト(A)を上側の別オブジェクト(B)上(正確にはAがBに潜りこんでいる感じ)でマウスアップしてドラッグ解除した時に、Aのマウスアップを検出したいのにBのマウスアップを検出してしまっておかしなことになる。それを防ぐ効能もあり。

このエントリーをはてなブックマークに追加
はてなブックマーク - AS3 で swapDepths 的なことをやる時

Comments:2

tmw 08-09-14 (日) 4:14

はじめまして、こんにちは。いつも楽しく拝見させていただいております。
ちょっとだけ気になりましたのでコメントをさせていただきます。

単に最上位に配置しなおす場合、
setChildIndex(Sprite(e.currentTarget), numChildren – 1);
の部分は
addChild(Sprite(e.currentTarget));
とするだけで大丈夫だったと思います。

意図している事と違うようでしたら、ごめんなさい。。

tera 08-09-14 (日) 13:35

tmw様
はじめまして。コメントありがとうございます。
ほんとだ!それでいけそうですね。その方がスマートな感じがしますね。
ちょっと後でやってみます。ありがとうございました。とりいそぎ。

あと個人的メモ:
重なった時、下のリスナーが動いてないか確かめること(この辺もまだあやふやな理解w)

Comment Form
Remember personal info

Trackbacks:2

Trackback URL for this entry
http://www.trick7.com/blog/2008/09/11-144122.php/trackback
Listed below are links to weblogs that reference
AS3 で swapDepths 的なことをやる時 from trick7
pingback from 散蓮華 » Blog Archive » 色変えただけ・・・ 09-05-26 (火) 12:05

[...] trick7 – AS3 で swapDepths 的なことをやる時 [...]

pingback from GEN » Blog Archive » as3でswapDepths 09-11-11 (水) 23:01

[...] 参考サイト:trick7 タグ: as3.0, basic コメント (RSS)  |  トラックバック [...]

Return to page top