我正在闪光灯中制作一个计数器。效果就像一台老虎机,有一列,包含两个带有数字的精灵(9,0,1,2,3,4,5,6,7,8)。我正在检查每个人的y位置,如果他们的y值小于某个y值,那么我将其移动到另一个y值以下,这样它就会连续变化。无论如何 - 我有一个每100毫秒运行一次的计时器,每次触发它都会更新一个值1.然后我想让数字滚动到那个位置,但这一切都变得很快,所以它一直来回跳跃=没有无缝循环。
有什么想法吗?
更新说明
该值不仅仅增加1,而是通过“tick”中的“inpValue”递增。我将有x个数量的代码,它们计数到一个递增的值(每次我的定时器触发时,例如每100ms),例如值可以是“1.03”,下次定时器触发时它可以是类似的“1.14”。我把这个数字分成三个“列”=代码,每个代码都有它的价值; ticker1:1 ticker2:1 ticker3: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”是每100ms调用一次的方法。