2011-10-05 104 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元素創建一個蒙版('圖片')框架,以便視頻通過,那麼這也不起作用... –