我有一个针对 iOS 和 Android 的 AS3 Mobile AIR 项目。出于某种原因,当我尝试访问 stageVideos 即 stage.stageVideos[0]...舞台上没有可用的 stageVideos 属性?很奇怪,因为我以前做过。我的应用程序正在使用 Starling 和 Features UI 框架,而我的课程正在扩展 Screen。我对这两个框架都很陌生,但一直是老手。谢谢!
问问题
960 次
2 回答
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 上注册侦听器时舞台视频可用,则立即调用侦听器函数 (stageVideoChange)。
于 2012-10-21T19:26:16.867 回答
1
事实证明,Starling 在实际 Flash 显示舞台的 TOP 上的 Stage3D 上运行。所以为了做到这一点,你需要先隐藏 Starling Stage3D:
Starling.current.stage3D.visible = false
然后您可以访问并显示...等 stageVideos 并添加到 flash 显示阶段:
_stageVideo = Starling.current.nativeStage.stageVideos[0];
所以基本上,原生 Flash 显示阶段位于 Starling.current.nativeStage 属性上,但是,除非您首先隐藏 Starling.current.stage3D FIRST,否则无法显示。
感谢您的回复!希望这可以帮助其他有同样问题的人。
于 2012-10-21T21:21:08.680 回答