日別アーカイブ: 2010年10月5日

AS3でのフルスクリーン時の座標その後

AS3でのフルスクリーン時の座標」でハマった件、実は中途半端だったことがわかりました。ということで追加のメモ書き。

気づきの発端は、せっかくオプションscaleをnoscaleにしているから、ムービーのサイズをHTMLで変更してやれ、と思って変更したことに始まります。

最初ムービーサイズを320×240で制作していたのですが、ビデオプレイヤーの作り上、サイズに依存せず、動的にstage.stageWidthなどで値を読み取って、レイアウトを可変するようにしていたわけです。よってHTMLでwidthとheightを変えれば、すんなり変わってくれるだろう、と思いました。

ところが、実際に変えてみると、640×480の領域の真ん中、320×240の領域に、640×480に拡大されたビデオの左上の320×240の部分だけが表示されてしまうのでした。

そこで、なにかオプションがあるはず、と思って探した結果、salignというオプションでTL(上端と左端にあわせる)という指定を加えることで、見事に640×480の表示がきれいにできました。やれやれ。

ではついでに、最大化も試そうと、最大化ボタンを押したところ、こんどはフルスクリーンには変わったものの、動画全体が左上からはみ出ているような格好になりました。

ピンときました。

フルスクリーン時に真ん中に来るのは、salignのデフォルトの中央配置が生きている時だけなんだ、と思いました。

HTMLでのsalignの指定は、stage.alignで読み取れます。stage.align==””のときには、無指定なので、真ん中に来ているから画面左上座標の補正をする、ってことでいいのではないでしょうか。

ということで、画面の左上、原点の座標(ox,oy)を求めるには、以下のようにする(あらかじめノーマル時のscreenWidth,screenHeightをnormalWidth,normalHeightに代入しておく)。

とりあえずTLで試したら、上記のやり方でうまくいきました。よかったよかった。他のsalignは試していません。