2013-07-22 35 views
0

嘿所以我試圖將補間應用到數組中的每個項目(這只是一個實驗......我想了解更多關於補間)。這裏是我的代碼:AS3/CS6:補間動畫片段陣列:它們都停止,除了1

import flash.events.Event 
import fl.transitions.TweenEvent 
import flash.events.MouseEvent; 
import flash.utils.Dictionary; 
import flash.display.MovieClip; 
import fl.transitions.Tween; 
import fl.transitions.easing.*; 
import fl.motion.Color; 

var bubbles:Array = []; 
var numBubbles:int=55; 

for (var i:Number=0; i<=numBubbles-1;i++){ 
    bubbles.push(new bubble()); 
    stage.addChild(bubbles[i]); 
    startMotion(bubbles[i]); 
} 

function startMotion(TheBubble:bubble){ 
    var tweenY:Tween = new Tween(TheBubble, "y", Regular.easeIn, TheBubble.y, -5, 3, true); 
} 
我遇到的是,大部分的時間,補間開始玩,但隨後所有的補間停止除了在氣泡的一個

有時他們會完成,並且當numBubbles設置爲像5到10這樣的低數字時,完成更有可能。請問這是一個補間限制問題嗎?我沒有認爲這很可能。

繼續前進的氣泡不是數組的第一個氣泡或最後一個氣泡。我仍然試圖縮小它是哪一個,但是我已經通過對第一個和最後一個顏色着色了。 編輯:這似乎是(有點)隨機。有時候,有色人種會成爲它 - 大部分時間是其他人之一。

哦,這裏的氣泡類別:

package{ 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import fl.transitions.Tween; 
    import fl.transitions.easing.*; 

    public class bubble extends MovieClip{ 
     var bubbleSize:int; 
     public function bubble(){ 
      this.bubbleSize=Math.ceil(Math.random()*15)+15; 
      this.width=bubbleSize; 
      this.height=bubbleSize; 
      this.x = Math.random()*(550-bubbleSize); 
      this.y = 400+Math.random()*400; 
     } 
    } 
} 

我會很感激任何幫助或洞察力!

+0

它看起來不像你的實例化的問題。也許你的補間班有問題正確跟蹤項目。你嘗試過TweenLite嗎?我想你會喜歡它的。 (http://www.greensock.com/tweenlite/) – Atriace

回答

0

或許有一個競爭條件回事,嘗試他們肯定被添加到舞臺後,動畫

... 
for (var i:Number=0; i<=numBubbles-1;i++){ 
    bubbles.push(new bubble()); 
    bubbles[i].addEventListener(Event.ADDED_TO_STAGE, startMotion); 
    stage.addChild(bubbles[i]); 
} 

function startMotion(evt:Event){ 
    var TheBubble:bubble = bubble(evt.target); 
    var tweenY:Tween = new Tween(TheBubble, "y", Regular.easeIn, TheBubble.y, -5, 3, true); 
} 

而且,因爲你正在探索吐溫的世界中閃光,我強烈建議查看Tween Lite/Tween Max庫。

+0

你好,感謝回覆。這是一個很好的想法,起初我認爲它解決了這個問題,因爲它連續工作了4次,但之後問題又回來了。任何其他想法? – user2305673

0

問題已Adobe公司論壇上得到修復某人:http://forums.adobe.com/thread/1260275

我們應該使用這個代碼:

import flash.events.Event 

import fl.transitions.TweenEvent 

import flash.events.MouseEvent; 

import flash.utils.Dictionary; 

import flash.display.MovieClip; 

import fl.transitions.Tween; 

import fl.transitions.easing.*; 

import fl.motion.Color; 



var bubbles:Array = [ ]; 

var numBubbles:int=55; 

var tweenY:Tween; 

var tweenA:Array = []; 



for (var i:Number=0; i<=numBubbles-1;i++){ 

    bubbles.push(new bubble()); 

    stage.addChild(bubbles[i]); 

    startMotion(bubbles[i]); 

} 



function startMotion(TheBubble:bubble){ 

    tweenY = new Tween(TheBubble, "y", Regular.easeIn, TheBubble.y, -5, 3, true); 

tweenA.push(tweenY); 

} 
0

如果你的主要代碼是在時間軸框架,而不是一個。作爲文件,它可能會被循環的「播放頭」一遍又一遍地觸發。早點添加一個'stop()',並且可能會修復一些東西(?)
要麼是將Flash文件鏈接到外部Document.as類,而要將主代碼放在那裏。