2013-02-07 76 views
0

我正在構建包含不同外部和內部(osmf)播放器對象的自定義視頻播放器。我在我的圖書館中有獨立的as3組件的播放器代碼。直接在MXML添加玩家對象後SWF文件大小大於它需要,因爲所有obejct已添加(但不加載)mxml將自定義as3組件動態添加到舞臺

<osmf:OSMFPlayer id="playerOSMF" depth="1" /> 

我怎樣才能動態地添加AS3的組件的階段?

我MXML包含一個主腳本

<fx:Script source="main.as" /> 

當我在init()函數applicationComplete()

public var player:OSMFPlayer; 

private function init():void { 
    player = new OSMFPlayer(); 
    addChild(player); 
} 

這不工作,我已經嘗試過了所有我能想到添加任何人都得到了一些有用的建議?

回答

1

您不能直接將OSMFPlayer添加到舞臺。

看到下面的代碼。

//flash imports 
import flash.display.Sprite ; 
import flash.events.MouseEvent ; 
//osmf imports 
import org.osmf.containers.MediaContainer ; 
import org.osmf.layout.LayoutMetadata ; 
import org.osmf.media.MediaPlayer ; 
import org.osmf.media.MediaElement ; 
import org.osmf.media.MediaFactory ; 
import org.osmf.media.DefaultMediaFactory ; 
import org.osmf.media.URLResource ; 
import org.osmf.elements.SerialElement ; 

//point to two separate pieces of media 
const MEDIA_URL:String = "myVideo.mp4"; 
const VIDEO_WIDTH:int = 1024; 
const VIDEO_HEIGHT:int = 768; 
//variable declarations 
var mediaFactory:MediaFactory; 
var serialElement:SerialElement; 
var mediaElement:MediaElement; 
var mediaPlayer:MediaPlayer; 
var mediaContainer:MediaContainer; 
var layout:LayoutMetadata ; 

function loadPlayer() 
{ 
    //create a new DefaultMediaFactory 
    mediaFactory = new DefaultMediaFactory(); 
    //use the mediaFactory to create two new MediaElement objects 
    mediaElement = mediaFactory.createMediaElement(new URLResource(MEDIA_URL)); 
    //create, size and position two LayoutMetadata objects 
    layout1 = new LayoutMetadata(); 
    layout1.width = VIDEO_WIDTH; 
    layout1.height = VIDEO_HEIGHT; 
    layout1.x = 0; 
    layout1.y = 0; 
    //create a new SerialElement 
    serialElement = new SerialElement() ; 
    //tie each LayoutMetadata object to one of the MediaElement objects 
    mediaElement.addMetadata(LayoutMetadata.LAYOUT_NAMESPACE, layout); 
    //create a new MediaPlayer instance 
    mediaPlayer = new MediaPlayer(); 
    //set the mediaPlayer not to begin playback by default 
    mediaPlayer.autoPlay = false; 
    //set the media property of the mediaPlayer to the serialElement 
    mediaPlayer.media = serialElement; 
    //create a new MediaContainer 
    mediaContainer = new MediaContainer(); 
    //add both MediaElement instances to the serialElement 
    serialElement.addChild (mediaElement) ; 
    //add the serialElement to the MediaContainer 
    mediaContainer.addMediaElement(serialElement); 
    //add the mediaContainer to the display list 
    addChild(mediaContainer); 
    //listen for the click event on the stage 
    stage.addEventListener (MouseEvent.CLICK , onPlayToggle) ; 
} 

function onPlayToggle (evt : MouseEvent) : void 
{ 
    //if the mediaPlayer is running 
    if (mediaPlayer.playing) 
    //pause the mediaPlayer 
    mediaPlayer.pause () ; 
    else 
    //resume the mediaPlayer 
    mediaPlayer.play () ; 
} 

loadPlayer(); 

我推薦閱讀OSMF文檔。

OSMF

,並參考一的Adobe官方示例代碼。

OSMF Market Place