嘿所以我正在尝试将补间应用于数组中的每个项目(这只是一个实验......我正在尝试更多地了解补间)。这是我的代码:
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 :(得分: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);
}
此外,由于您正在使用Flash浏览Tweens世界,因此我强烈建议您查看Tween Lite / Tween Max库。
答案 1 :(得分: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);
}
答案 2 :(得分:0)
如果您的主要代码位于时间轴框架中而不是.as文件中,则可能会被循环“播放头”反复触发。尽早添加'stop()'可能会解决问题(?)
要么将Flash文件链接到外部Document.as类,要么将主代码放在那里。