AS3 undefined属性stageVideos

时间:2012-10-21 17:40:35

标签: actionscript-3 starling-framework

我有一个针对iOS和Android的AS3移动AIR项目。出于某种原因,当我尝试访问stageVideos,即stage.stageVideos [0] ...舞台上没有stageVideos属性?很奇怪,因为我以前做过。我的应用程序使用Starling和Features UI框架,我的类正在扩展Screen。我对这两个框架都很陌生,但一直是AS的老手。谢谢!

2 个答案:

答案 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,否则无法显示。

感谢您的回复!希望这可以帮助其他人解决同样的问题。