我在flash中编写一个小游戏,
我正在编写角色的动画,
角色身体由不同的物体组成,例如,我有一个头像,躯干,手臂,腿,等等的影片剪辑。
我正在使用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腿在正常位置的scaleY是.5(或当腿在45º时,scaleY为1,依此类推。但是我有一个问题,因为,例如,如果LEG初始位置是0º(scaleY = 0.5)并且我想将它移动到90º,90º也将是scaleY = 0.5,所以我的函数什么都不做,它是补间从.5到.5(无),它应该从.5到0然后再到.5。
我希望有人理解我的问题。
最好的,
阿尔瓦罗