2

私は経験豊富な AS3 開発者で、iPhone アプリを作成するために初めて AIR 開発を行います。StageOrientationEvent および関連するクラスを使用して、さまざまなデバイスの向きを考慮しようとしています。デスクトップ マシンでテストしようとすると、VerifyError が発生します。これは、向きに関連するクラスがモバイル デバイス固有であるためと考えられます。

iPhone パッケージャーの Adob​​e ドキュメントは、Stage.supportsOrientationChange などのフラグを使用して、実際に使用する前に機能をテストする限り、モバイル固有のコードを含むアプリをテストできることを暗示しています。残念ながら、AIR は起動時に受け入れられないクラスをチェックしているように見えるので、チェックは役に立ちません。

デバイスを切り替えるたびにモバイル固有のコードをコメントアウトせずに、デスクトップでこのアプリをテストするにはどうすればよいですか?

関連するコード:

package 
{
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageOrientation;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.StageOrientationEvent;

public class Main extends Sprite 
{
    public function Main():void 
    {
        if (stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void 
    {
        removeEventListener(Event.ADDED_TO_STAGE, init);

        if (Stage.supportsOrientationChange) 
        {
            stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, onOrientationChange);
        }
    }

    private function onOrientationChange(event:StageOrientationEvent):void
    {
        switch (event.afterOrientation) 
        {
            case StageOrientation.DEFAULT: //ignore.  Landscape.
                break;
            case StageOrientation.ROTATED_RIGHT:
                    stage.setOrientation(StageOrientation.ROTATED_RIGHT);
                break;
            case StageOrientation.ROTATED_LEFT:
                stage.setOrientation(StageOrientation.ROTATED_LEFT);
                break;
            case StageOrientation.UPSIDE_DOWN: //ignore.  Landscape.
                break;
        }
    }
}

}

そして、私が得るエラー:

[Fault] exception, information=VerifyError: Error #1014: Class flash.events::StageOrientationEvent could not be found.
4

2 に答える 2

1

これを処理するために私が見つけた最善の方法は、コードを if ステートメントでラップすることです。

if(ApplicationDomain.currentDomain.hasDefinition("flash.events.StageOrientationEvent")){
    if(Stage.supportsOrientationChange)
    stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, orientationChange);
}

次に、一般的なイベント関数を追加し、結果のイベントを StageOrientationEvent クラスにキャストします。

private function orientationChange(event : Event):void{
    switch ((event as StageOrientationEvent).afterOrientation) {
        case StageOrientation.DEFAULT:
           break;
    }
}
于 2013-06-22T06:32:09.453 に答える
0

デスクトップ内でテストするには、必要のないもの、または完全にサポートされていないものをすべて削除またはコメントしてください。他にできることは、StageOrientation 以外の別の回避策を試すことです。デバイスの向きを取得するためにアクセラレータとステージの幅と高さを使用する良い例があります。

于 2010-11-06T18:53:07.720 に答える