2010-08-16 89 views
2

我有一個文件,我沒有來源 - 一個閃爍的頭部與令人討厭的聲音介紹,我需要靜音所有的聲音。如果沒有來源,我的能力有限,我可以做些什麼。我有一些as3代碼,用於嘗試加載swf並靜音(在FlashDevelop中構建)。這是有問題的代碼:as3加載,播放和靜音外部swf

package 
{ 
import flash.display.MovieClip; 
import flash.display.Sprite; 
import flash.events.Event; 
import flash.media.SoundTransform; 
import flash.net.URLRequest; 
import flash.display.Loader; 
import flash.media.SoundTransform; 

public class Main extends Sprite 
{ 
    private var mLoader:Loader; 
    private var mc1:MovieClip; 
    private var holder:Sprite; 
    private var mSound:SoundTransform; 

    public function Main():void 
    { 
     if (stage) init(); 
     else addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

    private function init(e:Event = null):void 
    { 
     var mRequest:URLRequest = new URLRequest('header_v8.swf'); 
     mLoader = new Loader(); 
     mLoader.load(mRequest); 
     holder = new Sprite(); 
     holder.addChild(mLoader); 
     addChild(holder); 
     mSound = new SoundTransform(0); 
     holder.soundTransform = mSound; 

    } 

} 

}

上面這段代碼仍然播放音頻和不被顯示原始瑞士法郎。所以,我的問題是:

我將如何靜音外部音頻? 如何直接顯示外部swf?

任何建議或指針有用的例子/文檔將不勝感激

回答

4

你在調試播放器中運行呢?看你的代碼,它似乎應該在這條線拋出至少一個錯誤:

holder.addChild(mLoader); 

看來holder沒有在這一點上初始化。也許有一個錯誤,你沒有看到,打破了你的代碼...靜音的代碼看起來是正確的(雖然我沒有嘗試過)。也許你可以將它應用到holder而不是內容本身;否則可能會導致頭文件swf部分加載,並在調用完整處理程序之前開始播放聲音。

另外SoundMixer讓你控制全局音量(我提到它,因爲它可能不是這樣做的理想方式,也許它只是在這裏工作)。

編輯

這有效地靜音加載的SWF在快速測試我所做的:

var mRequest:URLRequest = new URLRequest('banner.swf'); 
var mLoader:Loader = new Loader(); 
mLoader.load(mRequest); 
var holder:Sprite = new Sprite(); 
holder.addChild(mLoader); 
addChild(holder); 
var t:SoundTransform = new SoundTransform(0); 
holder.soundTransform = t; 

我刪除了完整的處理程序,因爲它不再需要。

+0

回頭看,持有人變量並不是真的需要。刪除它後,只需使用addChild(mLoader);它按預期加載了swf。但是,在調試播放器中查看後,我發現加載的swf是AVM1Movie。 我將不得不做更多的研究,以便如何正確加載和靜音。 – tomfmason 2010-08-16 03:37:12

+0

在這種情況下,您無法直接與其通信。但也許(我從來沒有這樣做)有一個持有人'雪碧'和靜音它可以工作以靜音加載瑞士法郎。 – 2010-08-16 03:41:44

+0

我試過了(見編輯的OP),但它仍在播放加載的swf中的音頻。有什麼建議麼? – tomfmason 2010-08-16 03:49:21