Actionscript 3 类文件中的动画?
我发现自己需要在我的课程中参考一些未知帧中的某些动画。最好的方法是什么?我是否应该创建一个custum名称并指定该类的所有实例都应该将某个动画标记为相同的东西。例如:Actionscript 3 类文件中的动画?,actionscript-3,Actionscript 3,我发现自己需要在我的课程中参考一些未知帧中的某些动画。最好的方法是什么?我是否应该创建一个custum名称并指定该类的所有实例都应该将某个动画标记为相同的东西。例如: public class CanBeHurt{ public CanBeHurt() extends MovieClip{ // constructor code here } public function hurt():void{ gotoAndPlay("hurt"
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);
}
}
不幸的是,对于多个动画,现在我不得不按一定的顺序设置动画标签,以便能够正确地引用它们。在这三种方法中,我发现第一种是最令人满意的,但是有更好的方法吗?您不需要存储标签名称,只要您想要有效的方法 例如:
public class CanBeHurt{
private var label: String;
public CanBeHurt() extends MovieClip{
label= "hurtLabel";
}
public function hurt():void{
currentFrameLabel != "hurtLabel" ? gotoAndPlay("hurtLabel") : null;
}
}
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);
}
}
您应该检查当前帧的标签,然后播放动画以避免帧阻塞。(动画始终位于第一帧)
对于游戏,大多数开发者使用一个函数来控制动画,这就是handleAnimation函数
例如:
public class CanBeHurt{
private var label: String;
public CanBeHurt() extends MovieClip{
label= "hurtLabel";
}
public function hurt():void{
currentFrameLabel != "hurtLabel" ? gotoAndPlay("hurtLabel") : null;
}
}
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);
}
}
我通常不会为我的代码扩展movieclip。我创建了一个类,它在构造函数中接受一个MovieClip,并存储对它的引用,然后在函数调用中对它进行操作 当涉及到标签名称时,我通常将它们作为静态变量放在适当的类中
这几年来一直对我很有效:)以某种方式存储标签名称是否更有效?为什么我会卡在第一帧上,除非我反复调用hert函数?如果我反复调用它,检查当前标签不会有任何作用,因为动画中的后续帧没有命名为“hurtLabel”。为什么我需要一个handleAnimation函数,而我可以告诉它在需要的时候播放我需要的任何动画?还有一个handleAnimation函数将我所有的动画限制在一个类中。你可以为标签添加+1层。假设您从enter\u frame事件函数调用了hert函数,然后可以重复调用它。为了使程序更清晰、更高效,最好将显示和类的核心分开处理。如果我使用ENTER_FRAME事件,我会在动画的第一到第二帧上卡住,因为它会在第二帧上留下帧标签。我看不出如果我单独做而不是一次全部做会更有效率。随着你的动画架构变得越来越复杂,你通常会建立一个跟踪动画逻辑的模型。有些动画是可中断的,有些是不可中断的,有时在开始动画时需要触发回调,有时在完成动画时需要触发回调,有时根本不需要。有些动画循环,有些则不循环。所有这些逻辑最好封装到一个专用类中,该类被合成到您的
MovieClip