メイン ActionScript 3.0 特設会議室 as3における onReleaseOutsideについて | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
j-kojima | Åê¹ÆNo.33828 投稿日時: 2007-6-25 13:10 |
新米 居住地: 投稿: 3
使用環境:
Mac OSX Tiger Flash CS3, 8 |
as3における onReleaseOutsideについて はじめまして。j-kojimaという者です。
Flash CS3でハマってしまっています。 as3におけるonReleaseOutside(またはdragOut)の処理についてなのですが、 今、一つのMCの1フレ目に以下のスクリプトが書いてあります。 this.addEventListener(MouseEvent.MOUSE_OVER, onRollOverFunc); this.addEventListener(MouseEvent.MOUSE_OUT, onRollOutFunc); this.addEventListener(MouseEvent.MOUSE_DOWN, onPressFunc); this.buttonMode = true; function onRollOverFunc(e:MouseEvent):void{ mouseOverMC.visible = true; } function onRollOutFunc(e:MouseEvent):void{ mouseOverMC.visible = false; } function onPressFunc(e:MouseEvent):void{ mouseDownMC.visible = true; this.addEventListener(MouseEvent.MOUSE_UP, onReleaseFunc); stage.addEventListener(MouseEvent.MOUSE_UP, onReleaseOutsideFunc); } function onReleaseFunc(e:MouseEvent):void{ mouseDownMC.visible = false; this.removeEventListener(MouseEvent.MOUSE_UP, onReleaseFunc); stage.removeEventListener(MouseEvent.MOUSE_UP, onReleaseOutsideFunc); } function onReleaseOutsideFunc(e:MouseEvent):void{ mouseDownMC.visible = false; this.removeEventListener(MouseEvent.MOUSE_UP, onReleaseFunc); stage.removeEventListener(MouseEvent.MOUSE_UP, onReleaseOutsideFunc); } ロールオーバー、アウト、プレス、リリース、リリースアウトサイドを 実装する最低限の事しか書いていません。 これを、Mac版Safari又はFlashのプレビューで実行するとちゃんとonReleaseOutsideの処理が 実行されるのですが、Firefoxで見ると不安定になります。 不安定というのはどういう状況かと言うと、MCの上でマウスクリック→ そのままMCの外に移動してしっかりマウスを止める→マウスリリース という風にすれば平気なのですが、例えばマウスを素早く動かしてリリース、 という風に、"動かしながら"外でリリースすると高い確率でダメです。 onReleaseFunc及びonReleaseOutsideFuncが呼ばれない、 つまりmouseDownMC.visibleがtrueのままになってしまってしまいます。 Safari及びFlashのプレビューでは全く問題無く動作しているのですが、 Firefox上のみ不安定になります。ちなみにFirefoxのバージョンは2.0.0.3です。 Firefox上でも正常に動作するように、もっと確実にreleaseOutsideを検知するには どうしたらよいのでしょうか。 上記の説明で伝わるか不安なのですが、よろしくお願いします。 |
野中文雄 | Åê¹ÆNo.33831 投稿日時: 2007-6-25 17:19 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: as3における onReleaseOutsideについて もっと問題を単純化すべきです。MovieClipインスタンスmouseOverMCやmouseDownMCの役割が説明されておらず、その他に何かエレメントが配置されているのかどうかもわかりかねます。
これらのMovieClipを削除して、単純にシェイプだけ置き、visibleプロパティもいじらないようにすると、動作は変わりますか? MouseEvent.MOUSE_OVERやMouseEvent.MOUSE_OUTに対するイベントリスナーの登録も、一旦は外した方がよいでしょう。 なお、FirefoxはMac OS X版ですか? 引用: j-kojimaさんは書きました: |
j-kojima | Åê¹ÆNo.33833 投稿日時: 2007-6-25 18:31 |
新米 居住地: 投稿: 3
使用環境:
Mac OSX Tiger Flash CS3, 8 |
Re: as3における onReleaseOutsideについて mouseOverMCやmouseDownMCは、ブラウザ上での確認の為だけに置いてあった物です。
mouseOverMC、mouseDownMCも削除してチェックをthis.alphaでの確認に変更しました。 ステージにはこのスクリプトが書いてあるMC一個だけが置いてあり、 中身はシェイプだけ。 リスナー登録もMOUSE_DOWNだけにしました。コードは以下です。 this.addEventListener(MouseEvent.MOUSE_DOWN, onPressFunc); function onPressFunc(e:MouseEvent):void{ this.alpha = 0.5; this.addEventListener(MouseEvent.MOUSE_UP, onReleaseFunc); stage.addEventListener(MouseEvent.MOUSE_UP, onReleaseOutsideFunc); } function onReleaseFunc(e:MouseEvent):void{ this.alpha = 1; this.removeEventListener(MouseEvent.MOUSE_UP, onReleaseFunc); stage.removeEventListener(MouseEvent.MOUSE_UP, onReleaseOutsideFunc); } function onReleaseOutsideFunc(e:MouseEvent):void{ this.alpha = 1; this.removeEventListener(MouseEvent.MOUSE_UP, onReleaseFunc); stage.removeEventListener(MouseEvent.MOUSE_UP, onReleaseOutsideFunc); } 確認しているFirefoxはOS X版です。 ですが、症状は変わりません…。 |
野中文雄 | Åê¹ÆNo.33836 投稿日時: 2007-6-25 23:13 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: as3における onReleaseOutsideについて SWFの領域外で、マウスボタンを放していませんか? SWF領域内では、MouseEvent.MOUSE_UPイベントが発生しないという問題は再現しませんでした。Firefox 2.0.0.4/Flash Player 9.0r45/Mac OS X.4.9です。
Safari 2.0.4およびInternet Explorer 5.2(ともにFlash Player 9.0r45/Mac OS X.4.9)では、SWF領域外でもMouseEvent.MOUSE_UPイベントは発生しました。 また、Firefox 2.0.0.4/Flash Player 9.0r45/Windows XP(SP2)では、SWF領域外のMouseEvent.MOUSE_UPイベントは取得できました。その点からすると、バグという評価もできそうです。しかし、Internet Explorer 6.0(Flash Player 9.0r45/Windows XP)では、イベントが発生しません。 これまでもSWF領域外ではマウス座標が取得できなかったり、マウス情報のサポートは完全なものではありませんでした。ですから、バグか仕様かは、微妙に思えます。 |
j-kojima | Åê¹ÆNo.33848 投稿日時: 2007-6-26 11:30 |
新米 居住地: 投稿: 3
使用環境:
Mac OSX Tiger Flash CS3, 8 |
Re: as3における onReleaseOutsideについて ステージサイズを、通常やNO_SCALE等で試してみたところ、
やはりステージ外で起きる現象のようです。 MacOS X.4.10 Firefox2.0.0.3/FlashPlayer 9.0.45 で、ステージ外でMOUSE_UP発生しません。 Safari2.0.4ではステージ外でも問題ありませんでした。 お騒がせして申し訳ありませんでした。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |