所以我正在构建一个出现在嵌套(显示)层次结构中的视频播放器,而我真的就像保存背景一样简单。我有一个包含bg的Loader SWF,以及另一个SWF(包含视频播放器),可根据最终用户的环境在StageVideo和Video之间切换。我有StageVideo工作,但它始终显示以下其他内容。
现在我知道这是StageVideo的理想行为,因为它允许GPU直接将内容呈现到屏幕,而无需将视频源与显示列表内容合成(http://help.adobe.com/en_US /as3/dev/WSe9ecd9e6b89aefd2-68d5ef8f12cc8511f6c-7fff.html),但我真的希望能够在视频播放器后面显示我的背景(如果仅作为“相框”)。在玩家周围绘制一个简单的矩形框架,使其看起来像bg一样不起作用;我还需要能够在视频播放器本身后面显示图像和其他DisplayObject。
有没有可能出现这种情况的情况?有人发现解决这个问题的任何潜在的解决方法(甚至没有记录)?
答案 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;
}