一开始并不明显,但我的计数器跳过零并忽略了9。如何让我的计数器不跳过9?
显示对象
这是一个从0-9下降的列。 '除跳过'
我的FLA
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
var timer:Timer;
var count:int = 0;
var fcount:int = 0;
var numbers:NumbersView;
trace("-----new NumberDocument created");
timer = new Timer(10);
timer.addEventListener(TimerEvent.TIMER, incrementCounter);
timer.start();
numbers = new NumbersView();
addChild(numbers);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
//addEventListener(Event.ADDED_TO_STAGE, traceMeOut);
function incrementCounter(event:TimerEvent)
{
count++;
fcount=int(count*count/1000);
}
function formatCount(i:int):String
{
return ("000000000" + i).substr(-9, 9);
}
function enterFrameHandler(e:Event):void
{
numbers.setTime(formatCount(fcount));
}
function traceMeOut()
{
trace("-----Im here on stage!");
}
NumbersView.as
//NumbersView.as - Your Document Class
package {
import flash.display.MovieClip;
public class NumbersView extends MovieClip {
private var _listItems:Array;
private const numHeight:int = 120;
public function NumbersView()
{
_listItems = new Array();
var item:NumberImage;
for (var i:Number = 0; i < 9; i++) {
item = new NumberImage();
addChild(item);
item.x = i * item.width;
_listItems.push(item);
}
setTime('123456789');
}
public function setTime($number:String):void {
var nums:Array = $number.split("");
trace(nums);
for (var i:Number = 0; i < nums.length; i++) {
_listItems[i].start( int(nums[i]) );
}
}
}
}
使用Tweener
的NumbersView.as 的变体//...SNIPPET
public function setTime($number:String):void {
var nums:Array = $number.split("");
for (var i:Number = 0; i < nums.length; i++) {
if (nums[i] == previousNums[i]) continue;
Tweener.removeTweens(_listItems[i]);
var nuNum:int = int(nums[i]);
var nuY:int = nuNum == 0 ? 0 : (nuNum - 1) * -numHeight;
trace("nuY = " + nuY);
trace("cY = " + _listItems[i].y);
Tweener.addTween(_listItems[i], { y:nuY, time:0 } );
}
previousNums = nums;
}
NumbersView.as 的变化,不会跳过9,但会从每个计数的底部重置
//...SNIPPET
public function setTime($number:String):void {
var nums:Array = $number.split("");
for (var i:Number = 0; i < nums.length; i++) {
if (nums[i] == previousNums[i]) continue;
Tweener.removeTweens(_listItems[i]);
var newY:int = int(nums[i]) * -numHeight;
if (_listItems[i].y < 0) _listItems[i].y = numHeight;
Tweener.addTween(_listItems[i], { y:newY, time:3 } );
}
previousNums = nums;
}
PUBLIC CLASS 扩展了MovieClip
将'NumbersView.as'放在同一目录中
类
库/'右键单击'属性/类:NumberImage
SYMBOL
编号栏70x1080
数字70x120
中间人
本地目录中的caurina文件夹
答案 0 :(得分:1)
我正在努力遵循你的代码并确切地理解你的意思,所以这是一个猜测。
在NumbersView.as中
(var i:Number = 0; i < 9; i++)
是:
(var i:Number = 0; i <= 9; i++)
第一个将通过数字0到8,更改将通过数字0到9。
但是我可能错过了你试图解释的那一点。
答案 1 :(得分:0)
跳伞9解决方案
一个。 补间设置太高'我设置为.05,而不是三个
湾数字= 0;我&lt; = 9;来自理查德的好建议
C。 将数值更改为整数 var numnum:int = 0; //数字
我有一些理性的值,所以我将它从'Number'更改为'int'并且它有效。