我正在使用AS2,但我也可以在AS3中使用它。
我正在制作一个简单的动画,大约有10个“硬币”在屏幕上。我有一个电影剪辑,它可以使另一个电影剪辑翻转。我想从库中随机拉出一个电影剪辑到嵌套剪辑中,这样每次“翻转”时都会出现一个随机的硬币面孔。
我已经将所有的剪辑名称放入一个数组中(coin1、coin2、coin3等)。
我认为它可以被描述为_root.coin_container.coin_animation.random_coin_here
主舞台上将有10个coin_container,其中嵌套了coin_animation。在动画开始时,应将数组中的随机影片剪辑调用到coin_animation中,然后coin_animation将运行几帧,重复,调用另一个随机影片剪辑,然后重复。
此外,如果我可以为动画设置一个随机的暂停时间,这样10个动画就会随机翻转,那就更好了。
我希望这已经足够清楚了。谢谢!
发布于 2009-09-25 08:02:44
我最近和AS3一起工作,所以这就是我要给出的解释。
你有很多方法可以做到这一点。你可以使用补间引擎,比如我最喜欢的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。
至于你想如何开始你的随机化,这取决于你。默认情况下,它们都会自己开始播放,除非您添加了停止操作,因此第一次它们都将同步,但随后将开始交错。要随机化开始,您必须在每个动作的开头放置停止操作,然后我将迭代容器剪辑,告诉每个孩子在随机数秒后开始玩,就像我们上面所做的那样。
发布于 2011-09-09 08:26:00
一个as2示例。将其粘贴到空flash文件的第1帧中,创建一个名为"coin“的电影剪辑,并通过属性将其链接标识符设置为"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);的空白关键帧
https://stackoverflow.com/questions/1474279
复制相似问题