2011-10-05 62 views
1

所以我建出现在嵌套(显示)层次结构中的视频播放器,我就真的一个简单的方法来保持背景。我有一个装载程序SWF,其中包含一个bg,另一个SWF(其中包含视频播放器),可根据最终用户的环境在StageVideo和Video之间切换。我有StageVideo工作,但它始终显示以下其他内容。StageVideo显示以上内容?

现在我知道,这是对于的StageVideo所期望的行为,因为它允许GPU直接呈现内容的屏幕,而无需复合材料显示列表内容的视频馈送(http://help.adobe.com/ en_US/as3/dev/WSe9ecd9e6b89aefd2-68d5ef8f12cc8511f6c-7fff.html),但我真的希望能够在视频播放器后面显示我的背景(如果只是作为'相框')。在播放器周围绘制一个简单的矩形框架,使其看起来有bg不起作用;我需要能够在视频播放器本身后面显示图像和其他DisplayObject。

有没有这种可能的情况?任何有可能解决此问题的潜在解决办法(甚至无证)?

回答

1

好的 - 明白了。事实证明,将所有背景内容放入一个容器中,并用框形掩码来掩盖容器,实际上可以使StageVideo有效地渲染到顶层。

例如:

bg_container.x = video_container.x; 
    bg_container.y = video_container.y; 
    set_frame_mask(video_width, video_height, frame_width, bg_container); 

    // Helper function. 
    protected function setFrameMask(width:Number, height:Number, frame_width:Number, container:Sprite):void 
    { 
     var frame:Sprite = new Sprite(); 
     frame.graphics.beginFill(0xFF0000); 
     frame.graphics.drawRect(0, 0, width, frame_width); 
     frame.graphics.drawRect(0, frame_width, frame_width, width - frame_width); 
     frame.graphics.drawRect(width - frame_width, frame_width, frame_width, height - frame_width); 
     frame.graphics.drawRect(frame_width, height - frame_width, width - 2 * frame_width, frame_width); 
     frame.graphics.endFill(); 
     frame.x = container.x; 
     frame.y = container.y; 
     container.mask = frame; 
    } 
1

如果你需要的是视频播放器周围的框架,试图掩盖背景的长方形的视频画面的大小,并把它放在它上面。

否则,你可能需要使用与普通的视频播放器,而不是使用的StageVideo球员。

+0

不幸的是,这是行不通的;我需要通过可能在后台显示多个显示对象来显示视频。用视频的大小屏蔽背景图层将完全混淆视频。如果您的意思是为bg元素创建一个蒙版('图片')框架,以便视频通过,那么这也不起作用... –