2017-09-20 82 views
1

我看到很多问题,询问如何在导致主时间轴中的帧的影片剪辑中制作按钮,然后看看它们。但是,如果你想在一组特定的帧中随机选择帧,它会不同吗?除了像stop()这样简单的东西外,我从来没有真正使用过AS3。或gotoAndPlay。制作一个按钮,转到主时间轴上的随机帧(来自阵列)。如何从影片剪辑中完成?

这里是我的主时间轴看起来像此刻: Figure 1

下面是我用谷歌这么远代码:当我用它

var frameB:Array=[1,28,45,56,71,91,106,126]; 
blue_circle1.addEventListener(MouseEvent.CLICK, choose); 

function choose1(event:MouseEvent):void { 
    var randomFrame:Number = frameB[Math.floor(Math.random() * frameB.length)]; 
    trace(randomFrame); 
    gotoAndPlay(randomFrame); 
} 

的代码工作正常主时间轴中的旋转按钮。但是,当我将它放入影片剪辑中的按钮时,它不起作用。我需要改变它,所以它的工作。如果有更好的方法做到这一点,我愿意尝试。

编辑:我应该澄清更多的东西。我从左到右移动了轮子上的矩形。它在影片剪辑中执行此操作。我想让按钮随之移动。但是当我将按钮放入所述影片剪辑时,按钮上的代码停止工作。我希望我不会让事情变得更加混乱。

回答

1

当您将按钮和/或代码放入movieClip中时,它会更改gotoAndPlay()所引用的movieClip。您需要指定您正在调用gotoAndPlay()的哪个movieClip。对于主时间轴的gotoAndPlay()的作品,而是一个MovieClip里面你必须使用此:

parent.gotoAndPlay(randomFrame); 

或者你可能需要父母的类型设置为这样的影片剪辑:

MovieClip(parent).gotoAndPlay(randomFrame); 

然而,这是最好的使用外部.as文件,因为它使您可以最大限度地控制代码。

  • 保存下面的代码在一个名为“MyFlashAnimation.as”
  • 创建一个名为“mycodefolder”文件夹,并把它放在同一个目录/文件夹作为你的根。
  • 使用'MyFlashAnimation.as'作为文档类。在Flash /动画IDE找到属性面板,然后发布部分
  • 在发布部分地方说,“类”输入:mycodefolder.MyFlashAnimation(不要加。至于)

CODE:

package mycodefolder { 

    import flash.display.MovieClip; 
    import flash.events.MouseEvent; 

    public class MyFlashAnimation { 

     private var animationClip:MovieClip; 
     private var blueCircle1:Button; 

     private var frameB:Array = [1,28,45,56,71,91,106,126]; 

     // constructor 
     public function MyFlashAnimation() { 

      // this your main robot/car animation 
      // this assumes animation_clip is on the main stage 
      animationClip = this.animation_clip; 

      // this is your button. this assumes blue_circle1 is a child of 
      // your animation_clip. update the path if necessary. 
      // for example, it might be: animationClip.robot_body.blue_circle1 
      blueCircle1 = animationClip.blue_circle1; 

      // add listener 
      blue_circle1.addEventListener(MouseEvent.CLICK, choose); 
     } 

     function choose1(event:MouseEvent):void { 
      var randomFrame:Number = frameB[Math.floor(Math.random() * frameB.length)]; 
      trace(randomFrame); 

      // tell animation clip to gotoAndPlay 
      animationClip.gotoAndPlay(randomFrame); 
     } 

    } 
} 

这应该工作。如果你有所有的影片剪辑路径正确。

0

“的代码,当我使用它的主时间轴旋转按钮正常工作。但是,当我把它放在一个按钮,在 影片剪辑这是行不通的。”

将按钮粘贴到MClip的实例名称是什么?该MC名称将“添加”到按钮的最终路径。

例子:

(1)如果您在舞台上blue_circle1(你已经可以做到这一点):

blue_circle1.addEventListener(MouseEvent.CLICK, choose); 

与...

2)如果您blue_circle1在另一个MClip内(例如:thingMC):

thingMC.blue_circle1.addEventListener(MouseEvent.CLICK, choose); 
相关问题