フラッシュでカウンターを作っています。この効果は、数字 (9、0、1、2、3、4、5、6、7、8) を持つ 2 つのスプライトを含む 1 つの列を持つスロット マシンのようなものです。私はそれらのそれぞれの y 位置をチェックしており、それらが特定の y 値よりも小さい場合は、それを他の値の下に移動して、連続的になるようにします。とにかく-100ミリ秒ごとに実行されるタイマーがあり、起動するたびに値が1ずつ更新されます。次に、数字をその位置までスクロールさせたいのですが、すべてが高速になるため、代わりに前後にジャンプし続けます=シームレスなループはありません。
何か案は?
更新の説明
値は 1 だけ増加するのではなく、「tick」の「inpValue」だけ増加します。たとえば、値が「1.03」になる可能性があり、次回タイマーが起動するときは、次のようになります。 「1.14」。この数値を 3 つの「列」=ティッカーに分割し、各ティッカーに値を設定します。ティッカー1: 1 ティッカー2: 1 ティッカー3: 4
ticker3 が次の「0」値 = 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 ごとに呼び出されるメソッドです。