as3加载,播放和静音外部swf

时间:2010-08-16 03:04:26

标签: actionscript-3 audio

我有一个文件,我没有源 - 一个带有令人讨厌的声音介绍的闪光标题,我需要将所有声音静音。如果没有来源,我的能力就会受到限制。我有一些as3代码,我正在尝试将swf加载到静音(在FlashDevelop中构建)。以下是有问题的代码:

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。所以,我的问题是:

如何将外部音频静音? 我如何直接显示外部swf?

非常感谢任何有用的示例/文档的建议或指示

1 个答案:

答案 0 :(得分: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;

我删除了完整的处理程序,因为它不再需要了。