iOS と Android をターゲットとする AS3 Mobile AIR プロジェクトがあります。何らかの理由で、stageVideos にアクセスしようとすると、stage.stageVideos[0]...ステージで使用可能な stageVideos プロパティがありませんか?? 私が以前にやったように非常に奇妙です。私のアプリは Starling と Features UI フレームワークを使用しており、私のクラスは Screen を拡張しています。私は両方のフレームワークにかなり慣れていませんが、AS のベテランです。ありがとう!
2 に答える
Starling は、実際のフラッシュ ディスプレイ ステージの TOP にある Stage3D で実行されます。これを行うには、最初に Starling Stage3D を非表示にする必要があります。
Starling.current.stage3D.visible = false
次に、ステージビデオにアクセスして表示し、フラッシュ表示ステージに追加できます。
_stageVideo = Starling.current.nativeStage.stageVideos[0];
つまり、基本的にネイティブ フラッシュ ディスプレイ ステージは Starling.current.nativeStage プロパティにありますが、最初に Starling.current.stage3D を非表示にしないと表示できません。
回答ありがとうございます。これが同じ問題を抱えている他の人に役立つことを願っています。
ハードウェアの問題である必要があります。特定のデバイスで 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) がすぐに呼び出されます。