質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Flash

Flashは、Webページにアニメーション、ビデオ、また対話型のアプリケーションを埋め込むためにAdobe社が提供しているクロスプラットフォームのインターネットマルチメディアランタイムです。

Flex 4

Flex 4とはRIAのライブラリです。version 4.6 まではAdobe Flex SDK でしたが、4.8.0 から Apache Flex SDK となりました。

ActionScript 3

ActionScript 3 (AS3)はAdobe FrashとAIRプラットフォームによる、オープンソースかつオブジェクト指向のプログラミング言語です。AS3はRIA、モバイルアプリケーション、デスクトップアプリケーションなど広く使われます。

Q&A

1回答

2910閲覧

mouseChildrenで無効に子のマウスイベントが元に戻らない

Qoo

総合スコア1249

Flash

Flashは、Webページにアニメーション、ビデオ、また対話型のアプリケーションを埋め込むためにAdobe社が提供しているクロスプラットフォームのインターネットマルチメディアランタイムです。

Flex 4

Flex 4とはRIAのライブラリです。version 4.6 まではAdobe Flex SDK でしたが、4.8.0 から Apache Flex SDK となりました。

ActionScript 3

ActionScript 3 (AS3)はAdobe FrashとAIRプラットフォームによる、オープンソースかつオブジェクト指向のプログラミング言語です。AS3はRIA、モバイルアプリケーション、デスクトップアプリケーションなど広く使われます。

0グッド

0クリップ

投稿2015/03/21 02:13

AS3でドラッグ中に子のマウスイベントを無効にし、
ドラッグ終了後、マウスイベントを有効にしたいのですが、
mouseChildrenをfalseにすると、無効になるのですが、
trueに戻しても、マウスイベントが有効になりません。
なぜでしょうか?

ドラッグイベント終了後、子がマウスイベントを受け取るようにするにはどうすれば良いでしょうか?

lang

1 2this.addEventListener(MouseEvent.MOUSE_DOWN, f_begin); 3this.addEventListener(MouseEvent.MOUSE_UP, f_end); 4 5private function f_begin(e:MouseEvent):void 6{ 7 this.mouseChildren=false; 8 this.startDrag(); 9} 10 11private function f_end(e:MouseEvent):void 12{ 13 this.stopDrag(); 14 this.mouseChildren=true; 15 16} 17 18

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

以下のようなコードを前提とした場合、78行目の 「_child1.mouseChildren = false;」により、画面上の水色の矩形をドラッグしたとき、”StopDragEcho” は表示されなくなります。
実際にご利用のコードがどんな内容かによって結果は代わってくると思いますが、参考になればご利用ください。

package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Rectangle; /** * ... * @author kenics */ [SWF(width="400",height="300",frameRate="24",backgroundColor="0x000000")] public class DragDrop extends Sprite { private var _canvas:Sprite = new Sprite(); private var _child1:Sprite = new Sprite(); private var _child2:Sprite = new Sprite(); private var _rec:Rectangle; public function DragDrop() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; addChild(_canvas); _canvas.x = 0; _canvas.y = 0; _canvas.graphics.clear(); createChild(_canvas,_child1,0,0,150,150,0xffffff); createChild(_child1,_child2,50,50,50,50,0x00fffff); _child1.addEventListener(MouseEvent.MOUSE_DOWN, dragStart); _child1.addEventListener(MouseEvent.MOUSE_UP, dragEnd); _child2.addEventListener(MouseEvent.MOUSE_DOWN, dragStartEcho); _child2.addEventListener(MouseEvent.MOUSE_UP, dragEndEcho); //ドラッグ範囲のプロパティ(範囲のx座標,範囲のy座標,範囲の横幅,範囲の縦幅) _rec = new Rectangle(0, 0,400 - _child1.width, 300 - _child1.height); } private function createChild(parent:Sprite,target:Sprite,x:int,y:int,w:int,h:int,color:int):void { target.graphics.beginFill(color); target.graphics.drawRect(0, 0,w, h); target.graphics.endFill(); target.x = x; target.y = y; target.useHandCursor = true; target.buttonMode = true; parent.addChild(target); } private function dragStart(event:MouseEvent):void { trace("StartDrag"); _child1.mouseChildren = false; _child1.startDrag(false, _rec); } private function dragEnd(event:MouseEvent):void { trace("StopDrag"); _child1.mouseChildren = true; _child1.stopDrag(); } private function dragStartEcho(event:MouseEvent):void { trace("StartDragEcho"); } private function dragEndEcho(event:MouseEvent):void { trace("StopDragEcho"); } } }

投稿2016/02/01 09:22

kenics

総合スコア179

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問