トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   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_OVERMouseEvent.MOUSE_OUTに対するイベントリスナーの登録も、一旦は外した方がよいでしょう。

なお、FirefoxはMac OS X版ですか?
引用:
j-kojimaさんは書きました:
これを、Mac版Safari又はFlashのプレビューで実行するとちゃんとonReleaseOutsideの処理が
実行されるのですが、Firefoxで見ると不安定になります。
不安定というのはどういう状況かと言うと、MCの上でマウスクリック→
そのままMCの外に移動してしっかりマウスを止める→マウスリリース
という風にすれば平気なのですが、例えばマウスを素早く動かしてリリース、
という風に、"動かしながら"外でリリースすると高い確率でダメです。
onReleaseFunc及びonReleaseOutsideFuncが呼ばれない、
つまりmouseDownMC.visibleがtrueのままになってしまってしまいます。


----------------
 

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ではステージ外でも問題ありませんでした。

お騒がせして申し訳ありませんでした。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops