MEMOUK

Flash Player9 Mac版バグ ブラウザからフォーカスが外れるとマウス座標がおかしくなる

例えば、このサイトのテキストスクロール部分のように stage.mouseY; をもとにしている場合で

・ActionScript 3.0
・Mac OS 10.4/5
・Flash Player 9.x

この環境でflashコンテンツを操作している途中で
ブラウザ以外のアプリにフォーカスが移ったら(デスクトップをクリックする など)
stage.mouseY の値が -90000とか、適当なおかしな値が返ってきます。

上記以外の他の環境では発生しません。

確認していませんが、状況から判断するとFlashPlayerの環境依存したバグだと思われます。

対応策は

ロクナナワークショップ Summer Camp 2008

if (stage.mouseY >= 0 && stage.mouseY < stage.stageHeight ) {
	targetY = stage.mouseY;
} else {
	//!!
}

当たり前の方法しかないのですが、ステージの上下よりもデカい値がきたら無視 とします。
これによって他の環境でバグが出ることはありません。

返ってくる値に一貫性がないので、なんとも防ぎようがないのですが、経験値としては3000以上か-2500以下が返ってくるようです。


(kani君ありがとう)


Posted by uk at 00:42 | パーマリンク | コメント (2) | トラックバック (0)

このエントリーのトラックバックURL:
http://www.67.org/blog/mt-tb.cgi/944

コメント

ActionScript 2.0ではプロパティにNaNやundefinedなどの不適切な値が設定されようとすると、それを無視する処理が内部的に加えられていました。しかし、3.0では、値がそのまま代入されて、とんでもない数値になるようです(データ型のチェックは行われます)。

「値に一貫性がない」理由は思いつきませんが、Flash Playerのフォーカスが外れてマウスポインタの座標値が取れなくなったことが原因のように思われます。

そうなんです、、
問題はこれが環境依存してしまうんですよね

コメントを投稿

MEMOUKROKUNANA

SITE FEED

  • 個人やグループでの貸し切り受講、企業や学校への出張講座、各種イベントへの講師派遣もご相談ください

    出張講座・貸し切り講座

Search