0

我正在将 Flash 8 中内置的 swf 嵌入到 as3 项目中。当我调用 stop() 或 gotoAndStop(0); 在表示嵌入 swf 实例的 MovieClip 上,它会停止一秒钟,然后继续。尝试在 mc 上调用 removeChild 会将其从显示屏中删除,但 swf 中的音频会继续播放。swf,在这种情况下必须嵌入,我不能使用加载器。有任何想法吗

编码:

    [Embed (source = "t1.swf")]
    private var t1:Class;

    private var mc:MovieClip;

      public function iphoneTest()
      {
       var tf:TextField = new TextField();   
       tf.x = 10;
       tf.y = 100;
       tf.width = 100;
       tf.height = 50;
       tf.text = "Hello worl";
       mc = new t1();
       var button:CustomSimpleButton = new CustomSimpleButton();
       button.width = 50;
       button.height = 50;
       button.x = 10;
       button.y = 150;
       button.addEventListener(MouseEvent.CLICK, onClick);

       this.addChild(mc);
       this.addChild(tf);
       this.addChild(button);
   }

   private function onClick(e:MouseEvent):void {

       mc.stop();    
       this.removeChild(mc);
   }
4

3 回答 3

0

在最坏的情况下,您可以杀死 SWF 中的所有声音...

确保导入混音器类,然后杀死声音..

import flash.media.SoundMixer; 
SoundMixer.stopAll();
于 2010-10-12T09:57:00.540 回答
0

你试过了mc = null;吗?

也因为你知道它是一个 as2 swf,所以应该使用avm1movie而不是MovieClip

于 2010-10-09T17:47:21.450 回答
0

如果您的 SWF 有任何层次结构,则需要通过它递归来停止所有影片剪辑。

private function stopAll(do:DisplayObject):void
{
    var clip:MovieClip = do as MovieClip;
    if (clip != null)
        clip.stop();

    var container:DisplayObjectContainer = do as DisplayObjectContainer;
    if (container != null)
    {
        for (var i:int = 0; i < container.numChildren; ++i)
        {
            stopAll(container.getChildAt(i));
        }
    }
}
于 2011-11-02T17:30:03.853 回答