1

電話が横向きまたは縦向きの場合に異なるメニューを持つアプリを作成しています。

電話が横向きから縦向きに、またはその逆に移動するときに新しいフレームに移動するようにフラッシュに指示する必要があると思いますが、向きイベントリスナーを作成した後の正確なコードはわかりません。

4

2 に答える 2

1

2 つの方法があります。aStageOrientationEventまたは をリッスンしEvent.RESIZEます。私は個人的に RESIZE を使用することを好みます。これは、呼び出される頻度がわずかに高く、インターフェイスの同期が維持されるためです。

var landscapeNav:Sprite; // this would be your landscape nav. Obviously does not have to be a Sprite
var portraitNav:Sprite; // same as landscapeNav, but this represents your portrait nav
stage.addEventListener( Event.RESIZE, this.stageResizeHandler );

function stageResizeHandler( e:Event ):void {
    if ( stage ) { //just to make sure the stage is loaded in this class so we avoid null refs
        if ( stage.stageWidth >= stage.stageHeight ) {
            landscapeNav.visible = true;
            portraitNav.visible = false;
        }
        else {
            landscapeNav.visible = false;
            portraitNav.visible = true;
        }
    }
}

これは間違いなくクリーンアップされる可能性があります ( landscapeNav.visible = stage.stageWidth > stage.stageHeight) が、これで先に進むことができるはずです。Atriace が提案したようにアニメーションを実行したい場合は、visible を true/false に設定する代わりに、関数の条件内で TweenLite/Max 呼び出しを実行します (ただし、アニメーションが完了したら、visible を false に設定する必要があります)。最適化と同じ)

于 2013-03-28T16:29:14.403 に答える
0

新しいフレームを作成する必要はありません。実際、( TweenLite のように) 古いメニューがスライド オフし、新しいメニューがアニメーション化されるのを見る方が視覚的に魅力的かもしれません。

向きの変更に関するドキュメントは、モバイル AIR アプリケーションに固有の Adob​​e の ActionScript API: "Screen Orientation"およびAPIにあります。

于 2013-03-28T16:21:13.323 に答える