StageVideo显示以上内容?

时间:2011-10-05 07:33:57

标签: actionscript-3 video

所以我正在构建一个出现在嵌套(显示)层次结构中的视频播放器,而我真的就像保存背景一样简单。我有一个包含bg的Loader SWF,以及另一个SWF(包含视频播放器),可根据最终用户的环境在StageVideo和Video之间切换。我有StageVideo工作,但它始终显示以下其他内容。

现在我知道这是StageVideo的理想行为,因为它允许GPU直接将内容呈现到屏幕,而无需将视频源与显示列表内容合成(http://help.adobe.com/en_US /as3/dev/WSe9ecd9e6b89aefd2-68d5ef8f12cc8511f6c-7fff.html),但我真的希望能够在视频播放器后面显示我的背景(如果仅作为“相框”)。在玩家周围绘制一个简单的矩形框架,使其看起来像bg一样不起作用;我还需要能够在视频播放器本身后面显示图像和其他DisplayObject。

有没有可能出现这种情况的情况?有人发现解决这个问题的任何潜在的解决方法(甚至没有记录)?

2 个答案:

答案 0 :(得分:1)

如果您只需要一个围绕视频播放器的框架,请尝试使用与视频屏幕大小相同的矩形遮住背景并将其置于其上。

否则,您可能必须使用常规视频播放器而不是StageVideo播放器。

答案 1 :(得分: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;
    }