在函数中停止yoyo()Tween

时间:2012-03-04 06:47:56

标签: actionscript-3 flash function tween

我想在声音停止时停止这个yoyo运动。

这不是所有代码,而是重要部分:

我宣布了这个功能的范围:

var BB:Tween;

........

function BounceBeau()
{
    var BB:Tween = new Tween(Beau,"y",Strong.easeOut,stage.stageHeight - BeauHeight,33,5,false);
    BB.addEventListener(TweenEvent.MOTION_FINISH, PlayBB);
    function PlayBB(e:TweenEvent):void 
               {
        BB.yoyo();
           }

}

BOUNCE随着声音和声音开始播出。

function PlaySound()
{

    var ThemeSong:SoundChannel;
    var s:Sound = new Sound(new URLRequest("MySound.mp3"));
    ThemeSong = s.play();

...

BounceBeau();

...

    ThemeSong.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); 
    function onPlaybackComplete(event:Event):void
        {
        BounceBeauStop();
        }
}

... 这个代码是,但我忘了发帖

function BounceBeauStop()
{
BB.stop();
}

我得到的错误: TypeError:错误#1009:无法访问空对象引用的属性或方法。

任何想法。 :)

2 个答案:

答案 0 :(得分:4)

BounceBeau()中,将var BB:Tween更改为BB。您无意中通过在本地重新声明来隐藏BB的声明。

function BounceBeau()
{
    BB = new Tween( ...
    ...

答案 1 :(得分:1)

我相信你在这里得到了错误:

var ThemeSong:SoundChannel;
var s:Sound = new Sound(new URLRequest("MySound.mp3"));
ThemeSong = s.play();

因为您没有实例化新的SoundChannel变量。然后,当您尝试播放声音并将其传递到通道时,后者未定义。我认为您应该尝试以这种方式更新您的代码:

var themeSong:SoundChannel = new SoundChannel();
var s:Sound = new Sound(new URLRequest("MySound.mp3"));
themeSong = s.play();

让我们知道它是否成功。祝你有美好的一天。