Ce n'est pas si perceptible au début, mais mon compteur passe à zéro et ignore les neuf.
Comment puis-je faire en sorte que mon compteur ne saute pas les neuf?sauter les neuf dans le compteur objet, AS3
Affichage objet
Il est une colonne descendante de 0-9. 'L'objet et les valeurs apparaissent correcte à l'exception du saut'
ma 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]));
}
}
}
}
Variation de NumbersView.as avec Tweener
//...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;
}
Variation de NumbersView.as qui ne saute pas 9, mais remet à zéro du bas chaque compte
//...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;
}
CLASSE PUBLIC extends MovieClip
place 'NumbersView.as' dans le même répertoire
cLASSE
Bibliothèque/'clic droit sur' Propriétés/classe: Num berImage
SYMBOLE
colonne Numéro 70x1080
numéros 70x120
Tweener
dossier de caurina dans le répertoire local
Je supprimerais sérieusement ce code, c'est affreux. L'avez-vous trouvé dans un livre? C'est impossible à comprendre, et vous revenez après chaque question à laquelle vous obtenez une réponse quand le prochain problème survient. La solution que je vous ai donnée auparavant était beaucoup plus simple et fonctionnait parfaitement. Je ne vois pas pourquoi vous ne voulez pas utiliser quelque chose de plus concis, plus facile à déboguer, et clairement moins vicié. – debu
NumbersView.as est problématique. Je déteste battre un cheval mort avec ça. –