0813,2008
Flash Player9 Mac版バグ ブラウザからフォーカスが外れるとマウス座標がおかしくなる
例えば、このサイトのテキストスクロール部分のように stage.mouseY; をもとにしている場合で
・ActionScript 3.0
・Mac OS 10.4/5
・Flash Player 9.x
この環境でflashコンテンツを操作している途中で
ブラウザ以外のアプリにフォーカスが移ったら(デスクトップをクリックする など)
stage.mouseY の値が -90000とか、適当なおかしな値が返ってきます。
上記以外の他の環境では発生しません。
確認していませんが、状況から判断するとFlashPlayerの環境依存したバグだと思われます。
対応策は
例
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のフォーカスが外れてマウスポインタの座標値が取れなくなったことが原因のように思われます。
投稿者: 野中 文雄 | 2008年08月12日 21:40
そうなんです、、
問題はこれが環境依存してしまうんですよね
投稿者: uk | 2008年08月19日 19:46