2

我正在用 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 为 0.5(或50%)当腿在 45º 时 scaleY 为 1,依此类推。

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

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

最好的,

阿尔瓦罗

4

1 回答 1

-1

不知道这个有没有用...

http://dragonbones.github.com/index.html#.ULZvXqUq54F

于 2012-11-28T20:10:00.443 回答