2012-01-17 38 views
0

出於某種原因,在一個實例中,我無法獲取goToAndStop(2)來停止播放影片剪輯的第二幀,該幀有兩個幀,並且已加載!AS3 goToAndStop()BUG?

我將movieclip添加到類的構造函數的舞臺上。然後在Button1的點擊,我改變了幀幀2.然後回到BUTTON2上的點擊框1 ..

他們沒有工作.....

但是...如果將movieclip設置爲構造函數上的第2幀,那麼它會在第2幀上啓動,當我點擊button1時它停留在第2幀上(就像我告訴它轉到第2幀),然後單擊button2成功將其更改爲第一幀。然後我可以再次點擊button1並將其更改爲第二幀。

從構造函數中刪除_movie.gotoAndStop(2),它們都不再工作。

public function changeBackground($frame:int):void 
{ 
    trace('gotoFrame', $frame); 
    _movie.gotoAndStop($frame); 
    trace('currentFrame',_movie.currentFrame); 
} 

Button1的Click輸出

gotoFrame 2 
currentFrame 2 

BUTTON2選擇輸出

gotoFrame 1 
currentFrame 1 

所以說,這是正確的框架,不過在其他方面顯示!

有definatly只有一個在舞臺上

+0

該代碼應該工作。其他的一定是錯的。 – weltraumpirat 2012-01-17 14:33:49

回答

-2

我傾向於使用通常被傳遞$前綴瓦爾的功能,爲_瓦爾私有函數或類和無公共變量的前綴,個人偏好,即時通訊不會分享我的代碼,所以沒關係。事實證明,這是一個問題,我使用Flex的特定版本來與FlashDevelop進行compl ...以及快速更新,並且它一切正常,它在不同的對象上碰到並錯過它是否實際上是gotoAndStop在框架上....

0

首先這個類的一個實例,請刪除$在您的變量。他們不需要可讀性,只會拖慢你的速度。

其次,不要認爲gotoAndStop有bug。雖然有可能,但有數以千計,甚至可能是數百萬的Flash遊戲使用這種方法沒有問題。我不會說這是爲了罵,但我希望你能記住這一點,因爲很多程序員都在追逐鬼魂......認爲bug是語言問題。

既然你說構造函數改變了框架就可以找到,我認爲你的_movie和按鈕不一樣。試着改變_movie的位置,看看你是否在跟正確的對象說話。

而且,這個問題可能是因爲舞臺是不是無效不夠快: AS3 - gotoAndStop with immediate action

+0

'-1'您的前兩段不相關。至於第一句,使用'$'沒有任何缺點,並且是OP自己的風格,這是非常好的(除非該項目將作爲Flash遊戲或類似的基礎發佈,在這種情況下,每個人都會撕毀它們頭髮)。 – Marty 2012-01-18 02:20:58

+0

@Marty,我不同意。格式化非常重要,因爲它是所分析表達式的語言。代碼是公開的,因爲它已經在這裏共享。在任何領域向同事正確表達自己的問題非常重要。 – 2012-01-18 02:30:43

+0

我傾向於通常使用'$'作爲傳遞給函數的變量,'_'作爲函數或類專用的變量,公共變量沒有前綴,個人偏好,我不會共享我的代碼,所以它並不重要。事實證明,這是我用來與FlashDevelop complile的特定版本的Flex的問題..和快速更新,它一切運行良好,它被擊中和不同的對象上是否會實際gotoAndStop框架或不..... – rorypicko 2012-01-19 17:33:31

1

可以先有點誇大其詞......

我也曾在AS3發現了一些嚴重的問題令人沮喪與gotoAndStop。如果在舞臺上存在多個該影片剪輯的實例,則似乎在渲染影片剪輯的正確幀時會出現問題。我可以理解,有時框架可能無法及時呈現,以便代碼引用該框架上的對象,但在Flash呈現下一個框架後,所有剪貼片都應該顯示框架上的內容!!?我發現很難相信Flash的基本概念之一 - 時間軸電影剪輯 - 似乎不能在as3中100%工作。

現在我希望一個有用的答案...

我設法避開這是通過源圖像影片剪輯類,(無論是在舞臺上隱藏或只是在代碼中創建從唯一的辦法圖書館)。然後,我可以僅在一個影片剪輯上使用gotoAndStop,根據需要多次使用BitmapData類繪製它,並將這些圖像添加到我需要的顯示對象中。