我正在使用AS2,但我也可以在AS3中使用它。
我正在制作一个简单的动画,屏幕上有大约10个“硬币”。我有一个电影剪辑,动画另一个影片剪辑翻转。我想将一个随机的影片剪辑从库中拉到嵌套的剪辑中,这样每次“翻转”就会出现一个随机的硬币面。
我已将所有剪辑名称放入数组(coin1,coin2,coin3等)
我认为它会被描述为_root.coin_container.coin_animation.random_coin_here
主舞台上将有10个coin_container,其中coin_animation嵌套在里面。在动画开始时,应该将数组中的随机影片剪辑调用为coin_animation,然后coin_animation将运行几帧,重复,调用另一个随机影片剪辑并重复。
此外,如果我可以设置动画的随机时间暂停,那么10个动画会随机翻转,这样会很好。
我希望这很清楚。 谢谢!
答案 0 :(得分:0)
这些天我和AS3合作,这就是我要给出的解释。
有很多方法可以解决这个问题。您可以使用Tweening引擎,例如我最喜欢的Tweenlite之一,并使用其onComplete参数,或者您只需创建一个创建计时器并设置随机等待的函数,然后在等待完成后,您的动画火灾;一旦您的动画触发,它将调度一个事件,该事件正在您的每个硬币动画片段动画上进行监听。
mc1.addEventListener(Event.COMPLTE, _onComplete);
private function _onComplete(e:Event):void
{
var target:MovieClip = e.target;
var timer:Timer = new Timer(Math.random() * 5 + 5, 1); //Returns a number between 5 and 10
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();
function onTimer(e:TimerEvent):void
{
target.play();
}
}
现在我们所要做的就是从所有硬币动画的最后一帧发送Event.COMPLETE。
至于你想如何开始你的随机化。默认情况下,除非您添加了停止操作,否则它们都将自行开始播放,因此第一次它们将全部同步,但随后将开始交错。要在开始时随机化,你必须在每个开始时设置停止动作,然后我将遍历容器剪辑,告诉每个孩子在随机秒数后开始播放,如上所述。
答案 1 :(得分:0)
as2示例。将其粘贴到空flash文件的第1帧中,创建一个名为“coin”的movieclip,并通过属性将其链接标识符设置为“coin”。您可以根据需要调整它。不需要几个框架......
var numCoins:Number = 10;
var coins:Array = new Array();
var offset:Number = 500;
//add coins to the stage
addCoinsToStage(this);
//shuffle the order
fisherYatesShuffle(coins);
//play them one by one with a random offset
playMovies(coins, offset);
function addCoinsToStage(obj:Object):Void{
for(var i:Number = 0; i < numCoins; i++){
obj.attachMovie("coin", "coin"+i, obj.getNextHighestDepth());
coins.push(obj["coin"+i]);
//position on stage
coins[i]._x = Math.random() * Stage.width;
coins[i]._y = Math.random() * Stage.height;
}
}
function fisherYatesShuffle(arr:Array):Void{
for(var i:Number = arr.length - 1; i > 1; i--){
var j = Math.round(Math.random() * i);
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
function playMovies(arr:Array, delay:Number){
for(var i:Number = 0; i < arr.length; i++){
var d = i * delay;
trace(d);
setTimeout(playMovie, d, arr[i]);
}
}
function playMovie(movie:MovieClip){
movie.play();
}
您需要正确创建硬币动画片段。您应该在第1帧和最后一帧上有stop();
一个空白的空关键帧gotoAndPlay(2);