2012-11-28 45 views
2

我编程闪存的一个小游戏,编程角色动画与AS3

,我编程人物的动画,

人物的身体是由不同的对象,例如,我有一个电影剪辑即头,躯干,手臂,手,腿等。

和我正在与AS3的动画,例如:

(仅程序性1个腿部运动)

public function walk(){ 
     if(_etapa==5){ 
      _etapa=1; 
     } 
     var etapa=_etapa; 

     switch(etapa){ 

      case 1: 
       Animar(musloDer,22,RetomarAnimacion); 

      break; 

      case 2: 

       Animar(musloDer,0,RetomarAnimacion); 
      break; 

      case 3: 
       Animar(musloDer,-22,RetomarAnimacion); 
      break; 

      case 4: 
       Animar(musloDer,0,RetomarAnimacion); 
      break; 

     } 




    } 

步行动画富人4个阶段,

然后我有Animar功能:

private function Animar(parte, valor, callback){ 
     trace(direccion); 
     if(direccion=="SE" || direccion=="NO"){ 

      valor=valor+45 
      valor=Math.abs(valor); 
      if(valor>180){ 
       valor=360-valor; 
      } 
      if(valor<0){ 

      } 

      _scaleY = (1-(valor)/90); 
      trace(_scaleY); 
      _rotation = 0; 


     } 
     else if(direccion=="N" || direccion=="S"){ 



      _scaleY = .5; 
      _rotation = -valor; 
     } 

     _etapa++; 
     TweenLite.to(parte, 2.5, {rotation:_rotation, scaleY:_scaleY,ease:Linear.easeNone, onComplete:caminar}); 

    } 

该功能将身体部分移动到度数我决定要做什么,角色可以在8个方向,前后,左右和对角线上行走,而角色则从等角视图中显示出来。所以动画功能根据角色的方向决定做什么。例如,如果角色向右走,从侧面看,在这种情况下,将一条腿旋转22度非常简单,只需要LeftLeg.rotation = 22;很好,但是当角色面向相机时,腿部旋转不是旋转,是scaleY属性的变化,例如,由于身体处于等轴测视图,所以正常位置的1条腿的缩放比例为.5(或50%),当腿在45º时,scaleY是1,依此类推。

但是我有一个问题,例如,如果LEG的初始位置是0º(scaleY = 0.5),我想将它移动到90º,90º也是scaleY = 0.5,所以我的函数什么都不做,它从.5到.5(无)的补间,它应该从.5到0,然后再到.5。

我希望有人能够理解我的问题。

最好,

阿尔瓦罗

+0

嗯,我已经修好了,我最终作出第三种功能划分举例来说,主要步行动画有4个阶段,不是我不会为舞台制作1个补间,我将舞台分成10个,并为4个阶段中的每一个制作10个补间,大振幅旋转的问题。 –

回答