我正在闪存中制作一个计数器。效果就像一台老虎机,有一列,其中包含两个带有数字的精灵(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 毫秒调用一次的方法。