2012-08-12 93 views
0

对编程来说是新手,慢慢地掌握它。我遇到了一个问题,我花了几个小时试图修复,但似乎无法得到我期待的结果。我为我的角色制作了运行动画。他向左,向上,向下,向右跑,向上,向下,向下但是向上和向下左动画不播放。他在正确的方向移动,但正在播放的动画是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; 
     } 


    } 


} 

}

+0

如果更改动画效果,问题可能不在于您的发布代码,更可能与您的动画有关。验证“UpLeft”和“DownLeft”动画是您认为的动画。 – 2012-08-12 18:50:38

+0

谢谢,我一遍又一遍地翻过来,一遍又一遍地改变他们的名字。 – user1593823 2012-08-12 19:15:58

回答

0

乍一看我没有看到任何你的代码错误。我总是建议不要使用框架标签,而是使用它们的编号。 函数“goUp”和“goDown”的名称暗示了一个错误的方向,我会将它们更改为“goVertical”和“goHorizo​​ntal”。 leftPressed,rightPressed,...变量是如何设置的?你有没有尝试在每个“if”中放置一个跟踪,以查看问题是否错误的if块被执行或动画被错误地解决?你有没有仔细检查框架的名称,并可能尝试使用它们各自的数字?

+0

感谢您的迅速回复,我已将动画名称更改为帧数(我不知道您可以这样做),但它更清晰,谢谢您。虽然它没有解决我的问题。我的leftPressed和rightPrssed变量是布尔值,并且都设置为False,我在父“Character”文件中有一个switch语句在false和true之间切换,具体取决于它们是否被按下。作为一个新手,我想也许这与我没有“runBack”动画的事实有关,我没有添加一个动画,因为一旦我点击了左键,动画就会朝相反的方向播放。 – user1593823 2012-08-12 19:10:35