0

我希望这些不断增长的圆圈影片剪辑在设定的时间内随机开始,然后在整个影片循环播放之前不再重复。那有意义吗?附件是一个 fla 和 swf 来显示我想要的,除了当然,它们还没有随机开始。

  • 动画应该是固定的时间长
  • 动画应该重复,但每个 mc 的开始时间是随机的
  • 所有 mc 都应该在动画循环之前播放
  • 没有 mc 应该播放到 10 帧

fla https://mega.co.nz/#!8Nwi0KzZ!QlutQQVo-KoPyNaGta9-7GLsYFthI0lMSAqTqtIIiDY

瑞士法郎 https://mega.co.nz/#!4cRFjZ5A!H0ndXA2DfFh79wJGua2Tgk9SquZ1rpEzZE3RCPwYfW4

任何帮助都会很可爱!

谢谢,罗林

4

1 回答 1

3

您已在第 1 帧停止圆形影片剪辑,然后使用 setTimeOut 内置函数根据随机数播放它。

您可以使用此函数生成一个随机数:

function GenerateRandomNumber(max:Number, min:Number = 0):Number
{
     return Math.random() * (max - min) + min;
}

您可以使用参数 max 和 min 定义设置的时间量,如下所示:

GenerateRandomNumber(4,1);

这将为您提供 1 到 4 秒之间的随机时间。您可以根据需要更改这些值。

您最好在圆形动画剪辑的父级中定义此函数,以便在需要时在其他地方重用它。

然后,在您停止它的圆形影片剪辑的最后一帧,您需要检查是否所有圆形影片剪辑都停止或不重播动画。您可以通过使用所有已完成影片剪辑的总数增加一个计数器来实现此目的。

您可以使用在圆形影片剪辑的父级中定义的函数来执行此操作,以跟踪所有这些剪辑,如下所示:

var CircleMcsPlayedCount:int = 0;
var TotalCirclesCount:int = 12;

function CircleMcFinishedPlayback()
{
     CircleMcsPlayedCount++;
     if(CircleMcsPlayedCount == TotalCirclesCount){
         CircleMcsPlayedCount = 0;
         this.gotoAndPlay(1);
     }
}

您可以在圆形影片剪辑的最后一帧使用这行代码调用它:

MovieClip(parent).CircleMcFinishedPlayback();

在此函数中,当帐户等于影片剪辑的总数时,您再次将计数设置为零并将播放头再次移动到第一帧以再次播放动画。您可以将此函数中的任何代码放在所有圆圈播放完毕后需要执行的 if 语句中。

我已经修改了您上传的文件并应用了所有更改,以防您想在自己尝试之前看到它的实际效果。

这是文件:

https://mega.co.nz/#!JxtFgTJK!LWpuFCXTYrkmMK_6tm_1cAp3MKpB1h33URufrr1Pkk4

我已将其保存为 flash cs4,因为我不知道您的版本,也没有旧版本。

于 2013-02-18T22:16:48.173 回答