0

我正在闪存中制作一个计数器。效果就像一台老虎机,有一列,其中包含两个带有数字的精灵(9,0,1,2,3,4,5,6,7,8)。我正在检查它们中的每一个的 y 位置,如果它们小于某个 y 值,那么我将它向下移动到另一个下方,以便它变得连续。无论如何 - 我有一个每 100 毫秒运行一次的计时器,每次它触发时都会将值更新 1。然后我想让数字滚动到那个位置,但是一切都很快,所以它一直来回跳动 =没有无缝循环。

有任何想法吗?

更新说明

该值不会仅增加 1,而是会在“tick”中增加“inpValue”。我将有 x 个股票代码,计数到一个递增的值(每次我的计时器触发时,例如每 100 毫秒),例如该值可以是“1.03”,下次计时器触发时它可以是类似的“1.14”。我把这个数字分成三个“列”=tickers,每个ticker都有它的值;股票 1:1 股票 2:1 股票 3:4

当ticker3 获得下一个“0”-value = 10 时,ticker2 应该更新为“2”,依此类推。问题是让数字滚动,所以如果数字第一次是“4”,下一次是“2”,它实际上应该滚动浏览那个之间的所有数字,依此类推,而不是跳回来排。

因此,例如,如果我将代码停止在值“1.14”,那应该是代码停止的值。

编辑:代码

package gui {
import flash.events.Event;
import com.greensock.TweenMax;
import com.greensock.easing.Linear;
import com.greensock.TweenLite;

import flash.display.MovieClip;
import flash.display.Sprite;

public class Ticker extends Sprite {

    public var windowBg_mc:MovieClip;

    private var _stepValue:int = 0;

    public var row1:MovieClip;
    public var row2:MovieClip;
    private var _activeRow:MovieClip;

    public var stopBtn:MovieClip;

    public function Ticker() {
        init(0);
    }

    private function init(val:int):void{

        this.addEventListener(Event.ENTER_FRAME, updateConnection);

        _stepValue = val;

        TweenMax.to(row2, 0, {tint: 0xff0000});

        _activeRow = row1;

        var yMoveTarget_num:Number = -(Number(_stepValue) * 34);

        TweenLite.to(_activeRow, 5, {y: yMoveTarget_num, ease: Linear.easeNone});

        updateConnection(null);
    }

    private function updateConnection(e:Event):void{

        if(_activeRow.y <= -342){
            _activeRow.y = 340;
            if( _activeRow == row1 ){
                _activeRow = row2;
            }else{
                _activeRow = row1;
            }
        }

        if( _activeRow == row1 ){
            row2.y = row1.y + 340;
        }else{
            row1.y = row2.y + 340;
        }

    }

    public function tick(inpValue:int):void{

        if(_stepValue == inpValue) return;

        var oldValue : int = _stepValue;
        _stepValue = inpValue;

        if( _stepValue < oldValue ){
            //target must be change here
        }

        var yMoveTarget_num:Number = -(Number(_stepValue) * 34);
        TweenLite.to(_activeRow, .4, {y: yMoveTarget_num, ease: Linear.easeIn});
    }

}
}

而“tick”是每 100 毫秒调用一次的方法。

4

0 回答 0