0

我发现自己需要在我的课程中引用某些未知帧中的某些动画。最好的方法是什么?我是否应该创建一个 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 种方法中,我发现第一种是最令人满意的,但有没有更好的方法?

4

2 回答 2

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);
   }
}
于 2012-08-05T12:14:59.437 回答
0

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

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

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

于 2012-08-06T17:54:51.203 回答