0

さまざまな外部および内部 (osmf) プレーヤー オブジェクトを含むカスタム ビデオ プレーヤーを構築しています。ライブラリ内の個別の as3 コンポーネントにプレーヤー コードがあります。プレイヤー オブジェクトを mxml に直接追加すると、すべてのオブジェクトが既に追加されている (ただしロードされていない) ため、swf ファイルサイズが必要以上に大きくなります。

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

as3 コンポーネントをステージに動的に追加するにはどうすればよいですか?

私のmxmlにはメインスクリプトが含まれています

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

applicationComplete() に init() 関数を追加すると

public var player:OSMFPlayer;

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

これは機能せず、考えられることはすべて試しましたが、誰か役立つアドバイスがありましたか?

4

1 に答える 1

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

アドビの公式サンプルコードを参照してください。

OSMFマーケットプレイス

于 2013-02-07T17:10:28.953 に答える