类文件中的动画?

时间:2012-08-04 23:00:29

标签: actionscript-3

我发现自己需要在课堂上的某个未知帧中引用某些动画。最好的方法是什么?我应该创建一个custum名称并指定该类的所有实例都应该将某个动画标记为相同的东西。例如:

public class CanBeHurt{

    public CanBeHurt() extends MovieClip{
        // constructor code here
    }

    public function hurt():void{
        gotoAndPlay("hurt");
    }
}

然后,该类的任何实例都将被强制标记受伤动画“伤害”的开始。或者,我可以在构造函数中接受指定框架的字符串,如下所示:

public class CanBeHurt{
    private var hurtAnimationLabel: String;

    public CanBeHurt(hurtAnimationLabel: String) extends MovieClip{
        this.hurtAnimationLabel = hurtAnimationLabel;
    }

    public function hurt():void{
        gotoAndPlay(hurtAnimationLabel);
    }
}

但不幸的是,对于更复杂的对象,我已经为构造函数提供了许多其他输入参数,并且有很多动画,我真的不想再添加它了。最后,我提出的最后一个选项是:

public class CanBeHurt{
    private var hurtAnimationLabel: String;

    public CanBeHurt() extends MovieClip{
        this.hurtAnimationLabel = this.currentLabels[0];
    }

    public function hurt():void{
        gotoAndPlay(hurtAnimationLabel);
    }
}

不幸的是,有了多个动画,现在我被迫以某种顺序拥有动画标签,以便能够正确引用它们。在3种方法中,我发现第一种方法最令人满意,但有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

只有在您想要有效的方式时,才需要存储标签名称。

示例:

public class CanBeHurt{
    private var label: String;

    public CanBeHurt() extends MovieClip{
        label= "hurtLabel";
    }

    public function hurt():void{
        currentFrameLabel != "hurtLabel" ? gotoAndPlay("hurtLabel") : null;
    }
}

您应检查当前帧的标签,然后播放动画以避免帧卡住。 (动画总是在第一帧)

对于游戏,大多数开发人员使用函数来控制动画,它是handleAnimation函数。

示例:

public class Example{
   private var label:String = "someLabel1";

   public Example() extends MovieClip{
      //constructor code here
   }
   private function handleAnimation(){
      if(condition){
         label = "someLabel1";
      }
      if(condition2){
         label = "someLabel2";
      }
      gotoAndPlay(label);
   }
}

答案 1 :(得分:0)

我通常不会为我的代码扩展movieclip。我创建了一些类,它在构造函数中接受一个MovieClip并存储对它的引用,然后在函数调用时对它进行操作。

当谈到标签名称时,我通常将它们作为静态变量放在适当的类中。

多年来这对我来说效果很好:)