首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从当前位置,Tweener,AS3升级

从当前位置,Tweener,AS3升级
EN

Stack Overflow用户
提问于 2010-03-17 15:43:49
回答 1查看 1.1K关注 0票数 0

我希望我的动画每次前进120像素。相反,我的动画回到底部,而不是从它的新位置前进。它有一个新的位置,但总是先回到底部。如何使我的动画每次都从它当前的位置前进?

目标

我希望我的动画前进120像素从目前的新位置,并重复十后。

问题

动画每一次都会重置到底部,然后再前进。我不知道,如果这是一个推特问题,我如何设置我的循环,或其他无关的东西。如果您能给我一个如何修改这段代码的例子,我将不胜感激。

alt文本http://www.ashcraftband.com/myspace/videodnd/tweener.jpg

NumbersView.as‘代码工作,但方式混乱,正如所描述的’

代码语言:javascript
复制
package   
{ 
    import flash.display.DisplayObject; 
    import flash.display.MovieClip; 
    import flash.utils.Dictionary; 
    import flash.events.Event; 
    import caurina.transitions.Tweener; 

    public class NumbersView extends MovieClip 
    { 
        private var _listItems:Array; 
        private var previousNums:Array; 
        private const numHeight:int = 120; 

        public function NumbersView()  
        { 
            _listItems = new Array(); 
            previousNums = new Array(); 
            //Tweener.init();

            var item:NumberImage; 
            for (var i:Number = 0; i < 9; i++) { 
                item = new NumberImage(); 
                addChild(item); 
                item.x = i * item.width; 
                _listItems.push(item); 
            } 
        } 

        public function setTime($number:String):void { 
            var nums:Array = $number.split(""); 
            //trace("$number = " + $number);
            for (var i:Number = 0; i < nums.length; i++) { 
                if (nums[i] == previousNums[i]) continue; 
                Tweener.removeTweens(_listItems[i]);    

                //newY:int = -numHeight;
                var newY:int = int(nums[i]) * -numHeight;
                trace("newY = " + newY);
                trace("currY = " + _listItems[i].y);                
                if (_listItems[i].y < 0) _listItems[i].y = numHeight; 
                Tweener.addTween(_listItems[i], { y:newY, time:3 } ); 
            } 
            previousNums = nums; 
        } 
    } 
} 

.jpg

Tweener http://hosted.zeh.com.br/tweener/docs/en-us/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-17 16:15:02

我可以得到你的代码来动画项目,我看到每当这些项目在它们的位置上重新启动时,下面是我更改的内容,让它们从它们目前的位置上移动:

原件:

代码语言:javascript
复制
if (_listItems[i].y < 0) _listItems[i].y = numHeight;
Tweener.addTween(_listItems[i], { y:newY, time:3 } ); 

改为:

代码语言:javascript
复制
//if (_listItems[i].y < 0) _listItems[i].y = numHeight; //get rid of this line
Tweener.addTween(_listItems[i], { y:_listItems[i].y+newY, time:3 } ); 

对于这个循环部分,您可以使用计时器,下面是我为您提供的示例。它可能并不完美,但希望能给你一个关于你希望它做什么的想法:

代码语言:javascript
复制
package   
{ 
    import flash.display.DisplayObject; 
    import flash.display.MovieClip; 
    import flash.utils.Dictionary; 
    import flash.events.Event; 
    import flash.events.TimerEvent;
    import caurina.transitions.Tweener; 
    import flash.utils.Timer;

public class NumbersView extends MovieClip 
{ 
    private var _listItems:Array; 
    private var previousNums:Array; 
    private const numHeight:int = 120; 
    var t:Timer;

    public function NumbersView()  
    { 
        _listItems = new Array(); 
        previousNums = new Array(); 
        //Tweener.init();

        var item:NumberImage; 
        for (var i:Number = 0; i < 9; i++) { 
            item = new NumberImage(); 
            addChild(item); 
            item.x = i * item.width; 
            _listItems.push(item); 
        }

        t = new Timer( 1000 ) //1000ms = 1 second intervals
        t.addEventListener(TimerEvent.TIMER, onTimer);
        t.start();

    } 

    public function onTimer( e:TimerEvent):void {

        //this will run every 10th time firing
        if( t.currentCount % 10 == 0 ) {
            //do something to reset the listItems
            for (var i:Number = 0; i < _listItems.length; i++) { 
                _listItems[i].y = numHeight;
            }
        }

        //do your setTime function, I just randomly called it with random numbers
        setTime(Math.round(Math.random()*234567).toString());
    }

    public function setTime(number:String):void { 
        var nums:Array = number.split(""); 
        trace("$number = " + number);
        for (var i:Number = 0; i < nums.length; i++) { 
            if (nums[i] == previousNums[i]) continue; 
            Tweener.removeTweens(_listItems[i]);    

            //newY:int = -numHeight;
            var newY:int = int(nums[i]) * -numHeight;
            trace("newY = " + newY);
            trace("currY = " + _listItems[i].y);                

            Tweener.addTween(_listItems[i], { y:_listItems[i].y+newY, time:3 } ); 
        } 
        previousNums = nums; 
    } 
} 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2463667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档