1

iOS と Android をターゲットとする AS3 Mobile AIR プロジェクトがあります。何らかの理由で、stageVideos にアクセスしようとすると、stage.stageVideos[0]...ステージで使用可能な stageVideos プロパティがありませんか?? 私が以前にやったように非常に奇妙です。私のアプリは Starling と Features UI フレームワークを使用しており、私のクラスは Screen を拡張しています。私は両方のフレームワークにかなり慣れていませんが、AS のベテランです。ありがとう!

4

2 に答える 2

1

Starling は、実際のフラッシュ ディスプレイ ステージの TOP にある Stage3D で実行されます。これを行うには、最初に Starling Stage3D を非表示にする必要があります。

Starling.current.stage3D.visible = false

次に、ステージビデオにアクセスして表示し、フラッシュ表示ステージに追加できます。

_stageVideo = Starling.current.nativeStage.stageVideos[0];

つまり、基本的にネイティブ フラッシュ ディスプレイ ステージは Starling.current.nativeStage プロパティにありますが、最初に Starling.current.stage3D を非表示にしないと表示できません。

回答ありがとうございます。これが同じ問題を抱えている他の人に役立つことを願っています。

于 2012-10-21T21:21:08.680 に答える
1

ハードウェアの問題である必要があります。特定のデバイスで StageVideo が利用できない場合、stage.stageVideos プロパティは空であるため、このように確認する必要があります。

var stageVideo:StageVideo;

if ( stage.stageVideos.length >= 1 ) {
    stageVideo = stage.stageVideos[0];
}

または StageVideoAvailabilityEvent をステージに登録する

stage.addEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY, stageVideoChange);

private function stageVideoChange(e:StageVideoAvailabilityEvent):void
{
    if(e.availability == AVAILABLE)
    {
         // (stage.stageVideos.length >= 1) is TRUE so we can use stageVideo[0]
    }
    else
    {
         // StageVideo become unavailable for example after going from fullscreen 
         // back to wmode=normal, wmode=opaque, or wmode=transparent
    }
}

もちろん、StageVideo が利用可能または否定的になるたびに通知されるため、2 番目のアプローチの方がより受け入れられます。StageVideoAvailabilityEvent に Listener を登録する時点でステージ ビデオが利用可能な場合、リスナー関数 (stageVideoChange) がすぐに呼び出されます。

于 2012-10-21T19:26:16.867 に答える