またハマったわけではないけど、ちょこっとハマったので覚え書き。
Flashでフルスクリーンにするとき、通常であればステージ幅とステージ高さがそのままで、単純に全体を拡大して表示されるんですが、パブリッシュ設定で拡大縮小を無効に設定してからフルスクリーンにすると、ステージ幅とステージ高さは、最大化したスクリーンの画面サイズになる。
実はこうやって最大化したとき、画面左上いわゆるスクリーンの原点は(0,0)にならないのです。これでしばらくハマりました。で、調べてみると、オリジナルの画面を最大化した画面の真ん中に配置しようとするため、このようなことがおこるらしい。
ということで、画面の左上、原点の座標(ox,oy)を求めるには、以下のようにする(あらかじめノーマル時のscreenWidth,screenHeightをnormalWidth,normalHeightに代入しておく)。
1 2 3 4 5 |
var ox:Number=0, oy:Number=0; if ( stage.displayState == StageDisplayState.FULL_SCREEN ) { ox = - ( stage.stageWidth - normalWidth ) / 2; oy = - ( stage.stageHeight - normalHeight ) / 2; } |
フルスクリーンになったときや、ノーマルに戻ったときは、FullScreenEvent.FULL_SCREENイベントが発生するので、これをとらえたときに上記のように原点を求めて再配置すればよいんではないでしょうか。
なにをやってるか、っていうと、YouTubeみたいなプレイヤーを作っています。アニメーション全部を最大化すると、ボタンまででっかくなっちゃうのに、YouTubeの最大化は、ボタンの大きさは変わっていなかったので、いろいろ調べていました。
ピンバック: AS3でのフルスクリーン時の座標その後 | 雑多なこと