AS3动画不会播放
对编程来说是新手,慢慢地掌握它。我遇到了一个问题,我花了几个小时试图修复,但似乎无法得到我期待的结果。我为我的角色制作了运行动画。他向左,向上,向下,向右跑,向上,向下,向下但是向上和向下左动画不播放。他在正确的方向移动,但正在播放的动画是upRight和downRight。我已经将upLeft和downLeft的动画更改为我的“空闲”动画,并且工作正常。如果所有其他动画都能正常工作,我不确定为什么会发生这种情况。AS3动画不会播放
这是我的播放器动画代码。任何帮助或建议都会很棒。在此先感谢
包{
import flash.display.MovieClip;
import flash.display.*;
import flash.events.*;
public class PlayableCharacter extends Character
{
private var dx:int;
private var dy:int;
var ready:Boolean;
public function PlayableCharacter(x:int=0, y:int=0, dx:int = 3, dy:int = 3)
{
// constructor code
this.x = x;
this.y = y;
this.dx = dx;
this.dy = dy;
ready = true;
gotoAndStop("Idle");
addEventListener(Event.ENTER_FRAME,onEnter);
addEventListener(Event.ADDED_TO_STAGE, onStage);
}
private function onEnter(e:Event)
{
//doing animation stuff
if(!leftPressed && !rightPressed && !downPressed && !upPressed)
{
gotoAndStop("Idle");
}
//Go Left
if(leftPressed && !upPressed && !downPressed && !rightPressed)
{
//do something left
goDown(-dx)
gotoAndStop("Run");
}
//Go Right
if(rightPressed && !upPressed && !downPressed && !leftPressed)
{
//do something right
goDown(dx)
gotoAndStop("Run");
}
//Go Up
if(upPressed && !leftPressed && !rightPressed && !downPressed)
{
goUp(-dy)
gotoAndStop("RunUp");
}
//Go Down
if(downPressed && !upPressed && !rightPressed && !leftPressed)
{
goUp(dy)
gotoAndStop("RunDown");
}
//Go UpRight
if(rightPressed && upPressed && !leftPressed && !downPressed)
{
goDown(dx)
goUp(-dy)
gotoAndStop("UpRight");
}
//Go DownRight
if(rightPressed && downPressed && !leftPressed && !upPressed)
{
goDown(dx)
goUp(dy)
gotoAndStop("DownRight");
}
//Go UpLeft
if(leftPressed && upPressed && !rightPressed && !downPressed)
{
goDown(-dx)
goUp(-dy)
gotoAndStop("UpLeft");
}
// Go Downleft
if(leftPressed && downPressed && !rightPressed && !upPressed)
{
goDown(-dx)
goUp(dy)
gotoAndStop("DownLeft");
}
if (x > stage.stageWidth)
x = stage.stageWidth;
else if (x < 0)
x = 0;
if (y > stage.stageHeight)
y = stage.stageHeight;
else if (y < 0)
y = 0;
}
public function onStage(e:Event)
{
}
public function goUp(dy:int=0)
{
y += dy;
if(scaleY > 0 && dy < 0)
{
scaleY *= 1;
}
else if(scaleY < 0 && dy > 0)
{
scaleY *= -1;
}
}
public function goDown(dx:int =0)
{
x += dx;
if(scaleX > 0 && dx < 0)
{
scaleX *= -1;
}
else if(scaleX< 0 && dx > 0)
{
scaleX *= -1;
}
}
}
}
乍一看我没有看到任何你的代码错误。我总是建议不要使用框架标签,而是使用它们的编号。 函数“goUp”和“goDown”的名称暗示了一个错误的方向,我会将它们更改为“goVertical”和“goHorizontal”。 leftPressed,rightPressed,...变量是如何设置的?你有没有尝试在每个“if”中放置一个跟踪,以查看问题是否错误的if块被执行或动画被错误地解决?你有没有仔细检查框架的名称,并可能尝试使用它们各自的数字?
感谢您的迅速回复,我已将动画名称更改为帧数(我不知道您可以这样做),但它更清晰,谢谢您。虽然它没有解决我的问题。我的leftPressed和rightPrssed变量是布尔值,并且都设置为False,我在父“Character”文件中有一个switch语句在false和true之间切换,具体取决于它们是否被按下。作为一个新手,我想也许这与我没有“runBack”动画的事实有关,我没有添加一个动画,因为一旦我点击了左键,动画就会朝相反的方向播放。 – user1593823 2012-08-12 19:10:35
如果更改动画效果,问题可能不在于您的发布代码,更可能与您的动画有关。验证“UpLeft”和“DownLeft”动画是您认为的动画。 – 2012-08-12 18:50:38
谢谢,我一遍又一遍地翻过来,一遍又一遍地改变他们的名字。 – user1593823 2012-08-12 19:15:58