- 2009-10-28 (水) 12:28
- ActionScript
別件でFlex Builder 3を使ってAdobe AIRアプリを作っていたのですが、あれ所々WindowsとMacで動作が違うのですよね。そのひとつでようやく動作がだいたい掴めたことがあるのでメモしておきます。
ドラッグでオブジェクトを動かすプログラムで、Winでまともに動いたものをMacで動かすと微妙に位置がずれます(逆の言い方もできますが)。どうやらドラッグドロップ時に各イベントハンドラに返されるマウス座標の値が、WinとMacで違うようです。どっちかがおかしいのかと思ったのですがどっちもマニュアルの記述と少しずつ違うような……?
Windows(Vista)の場合
DragEvent.DRAG_COMPLETEイベントで渡されるstageX、stageYの値が、ウィンドウの左上基準ではなく、デスクトップの左上基準になっている?
DragManager.doDragに渡すドラッグイメージの透明度が正しく反映されず、円形のグラデーション状に半透明になる? →ドラッグイメージのサイズを実体の倍程度まで大きくするとある程度回避できる。
Macintosh(OSX Snow Leopard)の場合
DragEvent.DRAG_COMPLETEイベントで渡されるstageX、stageY、localX、localYの値がドラッグイメージのサイズ分ずれる。localXにドラッグイメージのwidth/2を足し、localYからheight/2を引くと丁度いい?
厳密には検証してないんですが、OSのドラッグ&ドロップの挙動の違いがそのまま反映されちゃっているような印象です。両方で動くソースが思いつかなかったので、とりあえずCapabilities.osでOSを調べて、「Win」を含む場合と「Mac」を含む場合で、イベントハンドラを付け替えています。スマートな解決方法とはいえませんね。
- Newer: GDI+でどこまでできるか
- Older: 【告知】ゲームアップローダーをテスト公開!
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://i-libro.net/wpmu/blog/archives/377/trackback
- Listed below are links to weblogs that reference
- [ActionScript3]Adobe AIRのドラッグアンドドロップのバグ? from わくわくプログラミング自習室 Blogs
