0

画面の位置がブラウザが存在するモニターの解像度に依存するいくつかのコンポーネントがあります。

loginBox.x = (flash.system.Capabilities.screenResolutionX - loginBox.width) / 2; loginBox.y = (flash.system.Capabilities.screenResolutionY - loginBox.height) / 2;

私が直面している問題は、flash.system.Capabilities メソッドが、コンピューターに接続されているプラ​​イマリ モニターの解像度を取得することです。ほとんどの場合、これは問題にはなりませんが、私のコンピューターの 1 つは 1680x1050 と 1440x900 です。職場では、1920x1200 と 1680x1050 を使用しているため、小さいモニターのブラウザでページを開くと、中央に配置されず、ツール パネルが画面の右側に完全にずれています。

HTML と php の両方で試した JavaScript のブロックがありますが、問題は、httpRequest または urlLoader を使用して html ファイルを取得すると、html のソースを取得し、php スクリプトを試してみると、 Cookie を書き込もうとしているスクリプト ブロックを取得します。フラッシュ サイトを読み込む前にそのページにアクセスしたことがない場合、または Cookie が無効になっている場合は、書き込まれることはなく、どこにもいません。

最初のモニターの解像度だけでなく、ブラウザーが実際にオンになっているモニターの解像度を検出するために、Cookie に依存しない方法はありますか?

4

2 に答える 2

1

ポジショニングの目的でstage.stageWidthとstage.stageHeightを使用してみませんか?

編集:わかりました、ここに例があります。このコードは、loginBoxも存在するコンテナー内に配置することを検討しています。オブジェクトがDisplayListに追加されない限り、stageプロパティは未定義であるため、オブジェクトが追加されたときにリッスンしてから、loginBoxを配置する必要があります。

// in the constructor
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

その後

private function onAddedToStage(evt:Event) {
    loginBox.x = (stage.stageWidth - loginBox.width)/2;
    loginBox.y = (stage.stageHeight - loginBox.height)/2;
}

また、ステージscaleModeをnoScaleに設定している場合(これが当てはまる場合もあります)、ブラウザーのサイズ変更に基づいてloginBoxを常に再配置する必要がある場合は、Event.RESIZEイベントをリッスンする必要があります。

stage.addEventListener(Event.RESIZE, onResize);
于 2009-09-16T10:36:09.407 に答える
0

Flash と JavaScript の間で通信しようとしている場合は、ExternalInterfaceが最適です。Cookie を書き込むのではなく、javascript から情報を取得し、コールバックを介してフラッシュに送信します。

于 2009-09-16T00:12:06.457 に答える