我发现自己需要在课堂上的某个未知帧中引用某些动画。最好的方法是什么?我应该创建一个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种方法中,我发现第一种方法最令人满意,但有更好的方法吗?
答案 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并存储对它的引用,然后在函数调用时对它进行操作。
当谈到标签名称时,我通常将它们作为静态变量放在适当的类中。
多年来这对我来说效果很好:)