TweenLite序列在各个补间之间没有延迟

时间:2012-03-13 08:50:23

标签: flex actionscript tweenlite

我正在开发一款游戏并实现了寻路算法。我的路径查找返回一个节点数组,角色必须通过这些节点才能到达目的地。基本上我需要逐个节点补间,所以我使用TimelineLite并将所有补间添加到序列中。有用。

然而,

节点之间的补间(角色移动,然后停止,然后再次移动......)有延迟,我无法弄清楚原因。我该如何解决?

以下是代码:

    public function walk(startNode:Node,destinationNode:Node):void{
//retrieve the path of the character
            var path:Array = Pathfinder.findPath(startNode,destinationNode,GenericMap.findConnectedNodes);
            currentPath=path;
            if(path!=null){
                var pastX:Number;
                var pastY:Number;
                for(var index:int=0;index<path.length;index++)
                {
                    var currentNode:Node = path[index] as Node;
                    testMoveThroughNodes(currentNode.x,currentNode.y);
                }
            }
        }
        private var speed:Number = 0.7;
        private var timeline:TimelineLite = new TimelineLite();
        /** tween the sprite through nodes of path*/

        private function testMoveThroughNodes(targetX:Number,targetY:Number):void{
            timeline.append(new TweenLite(monster,speed,{x:targetX,y:targetY}));
        }

我能够通过TweenLite对每个节点进行补间,但是它会移动,停止和移动,看起来完全不自然。

2 个答案:

答案 0 :(得分:3)

是的,很难说没有看到任何代码,但我不知道这是否只是一个缓和的问题,使它看起来就像事情正在暂时停止,即使它们不是。请记住,默认的简易是Quad.easeOut,因此移动在每个补间的末尾减慢(为了更自然的“感觉”)。如果想要线性移动,可以使用Linear.easeNone。

答案 1 :(得分:0)

当您创建新路径时,Proberly继续更新他的位置,因此character.x和y会立即更新,这是您的问题还是动画本身如果是这样创建一个开关ex();

 var switching = 0;
 if(switching >0){
    character.animationWalk.play();
 }

 if(switching <0){
    character.animationWalk.stop();
 }

下面是我为了好玩而制作的文件,但它有很好的时间和动画控制在as2但是概念是相同的。附件是源文件。

http://ffiles.com/flash/games/sonic_hd_basic_sounds_animation_and_vector_3436.html

悉尼BJM