2012-03-04 42 views
0

當聲音停止時,我想停止這個yoyo運動。在一個函數內停止一個yoyo()吐溫

這還不是全部的代碼,但重要的部分:

我聲明瞭函數的VAR OUTSIDE:

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(); 
      } 

} 

當聲音響起時,聲響開始。

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(); 
     } 
} 

... 此代碼IN但我忘了將它張貼

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

錯誤 我GET: TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。

任何想法。 :)

+0

你會在哪一行發現錯誤?你是否嘗試過實際_debugging_你的代碼一行一行? – 2012-03-04 08:12:43

回答

4

在您的BounceBeau()中,將var BB:Tween更改爲BB。通過在本地重新宣佈,您無意中隱藏了BB的聲明。

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

是的,沒錯。斑點:) – 2012-03-04 10:00:13

+0

不知道該怎麼寫這行。我GOOGLE了它,但找不到任何東西。你能告訴我你的意思是什麼?非常感謝。 – 2012-03-04 20:39:50

+0

@ user894237用代碼片段更新了我的答案。 – Manish 2012-03-04 21:47:43

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(); 

讓我們知道它是否工作。祝你有美好的一天。

+0

非常感謝您的建議。但它沒有奏效。我相信它是BB.stop()的一個問題;因爲我刪除它並且代碼工作正常。它調用跟蹤等...但我補充說,和BAM。 :(我知道它的一個VAR範圍問題......嗯,我相信。:/ – 2012-03-04 07:30:29

+0

在你的問題中沒有BB.stop或BounceBeauStop方法,所以很難猜出一個答案,試着添加這個答案,以便我們可以得到關於代碼的一個更好的主意 – 2012-03-04 07:34:27

+0

不確定你的意思BB.stop();指的是我創建的TWEEN,它應該阻止它BounceBeauStop()是我創建的函數,我將更新代碼。我沒有添加它們,所以對不起。 – 2012-03-04 07:48:13