0

フラッシュで情報キオスクを作成しましたが、コンテンツを外部からロードする際に非常に厄介な問題が発生しました。すべての SWF ファイルをエクスポートし、独自の SWF を作成して、メイン メニューを一番上にしてすべてをロードしました。主な問題は、YouTube からビデオをストリーミングすることです。それは完全に読み込まれますが、別のページに移動するとページが変わりますが、ビデオは一度再生されると停止しません(サウンドは再生し続けます)。これが私のコードです:

loader1.fla:

// Container
var pageLoader:Loader = new Loader();

// Url Requests
var loadRequest1:URLRequest = new URLRequest("basics1.swf");
var loadRequest2:URLRequest = new URLRequest("climatechange.swf");  

// Initial Page Loaded
pageLoader.load(loadRequest1)
addChild(pageLoader)

// Button Functions
function goHome (e:MouseEvent):void{
pageLoader.load(loadRequest1)
addChild(pageLoader)
}
hpage.addEventListener(MouseEvent.CLICK, goHome);

//go to climate change page
function climatePage (e:MouseEvent):void{
pageLoader.load(loadRequest2);
addChild(pageLoader);
}
climatep.addEventListener(MouseEvent.CLICK, climatePage);

気候変動.fla:

Security.allowDomain("http://www.youtube.com")

// load video
var pageLoader:Loader = new Loader();

// Url Requests
var loadRequest1:URLRequest = new URLRequest("overviewvideo.swf");

// Intial Page Loaded
pageLoader.load(loadRequest1)
addChild(pageLoader)

概要ビデオ.fla:

/*youtube video*/

var player:Object;

var loader:Loader = new Loader();

var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
context.securityDomain = SecurityDomain.currentDomain;
context.applicationDomain = ApplicationDomain.currentDomain;

loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
Security.allowDomain("http://www.youtube.com")
loader.load(new URLRequest("http://www.youtube.com/v/6s8iiIFgPMU&list=PL9C6D9D2AF8999F85&index=12"));

function onLoaderInit(event:Event):void {
    addChild(loader);
    loader.x= 40;
    loader.y=130;
    loader.content.addEventListener("onReady", onPlayerReady);
    loader.content.addEventListener("onError", onPlayerError);
    loader.content.addEventListener("onStateChange", onPlayerStateChange);
    loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
}

function onPlayerReady(event:Event):void {
    // Event.data contains the event parameter, which is the Player API ID 
    trace("player ready:", Object(event).data);

    // Once this event has been dispatched by the player, we can use
    // cueVideoById, loadVideoById, cueVideoByUrl and loadVideoByUrl
    // to load a particular YouTube video.
    player = loader.content;
    // Set appropriate player dimensions for your application
    player.setSize(480, 260);
}

function onPlayerError(event:Event):void {
    // Event.data contains the event parameter, which is the error code
    trace("player error:", Object(event).data);
}

function onPlayerStateChange(event:Event):void {
    // Event.data contains the event parameter, which is the new player state
    trace("player state:", Object(event).data);
}

function onVideoPlaybackQualityChange(event:Event):void {
    // Event.data contains the event parameter, which is the new video quality
    trace("video quality:", Object(event).data);
}

誰でも助けることができますか?誰かが私を助けてくれたらうれしいです。ありがとうございました

4

1 に答える 1

0

新しいswfをローダーにロードする前に、最初に以下を呼び出す必要があります。

pageLoader.unloadAndStop();

子SWFファイルの内容をアンロードし、ロードされたSWFファイルからのコマンドの実行を停止しようとします。このメソッドは、子SWFファイルのEventDispatcher、NetConnection、Timer、Sound、またはVideoオブジェクトへの参照を削除することにより、Loader.load()またはLoader.loadBytes()を使用してロードされたSWFファイルをアンロードしようとします。その結果、子SWFファイルと子SWFファイルの表示リストに対して次のことが発生します。

音が止まります。ステージイベントリスナーが削除されます。enterFrame、frameConstructed、exitFrame、activateおよびdeactivateのイベントリスナーが削除されます。タイマーが停止します。カメラとマイクのインスタンスが切り離されているムービークリップが停止しています。

アドビのドキュメント

于 2013-01-04T20:47:13.113 に答える