我有一个针对iOS和Android的AS3移动AIR项目。出于某种原因,当我尝试访问stageVideos,即stage.stageVideos [0] ...舞台上没有stageVideos属性?很奇怪,因为我以前做过。我的应用程序使用Starling和Features UI框架,我的类正在扩展Screen。我对这两个框架都很陌生,但一直是AS的老手。谢谢!
答案 0 :(得分: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可用或负面时都会通知您。请注意,如果在StageVideoAvailabilityEvent上注册Listener时,舞台视频可用,则会立即调用侦听器函数(stageVideoChange)。
答案 1 :(得分:1)
在实际的闪光显示阶段的TOP上,Starling在Stage3D上运行。所以为了做到这一点,你需要首先隐藏Starling Stage3D:
Starling.current.stage3D.visible = false
然后你可以访问并显示... etc stageVideos并添加到flash显示阶段:
_stageVideo = Starling.current.nativeStage.stageVideos[0];
基本上,本机闪存显示阶段在Starling.current.nativeStage属性上,但是,除非您首先隐藏Starling.current.stage3D,否则无法显示。
感谢您的回复!希望这可以帮助其他人解决同样的问题。