2010-03-18 4 views
0

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

+0

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

+0

NumbersView.as est problématique. Je déteste battre un cheval mort avec ça. –

Répondre

1

Je me bats pour suivre votre code et déterminer exactement ce que vous signifie, donc c'est un peu une conjecture.

Dans NumbersView.as devrait

(var i:Number = 0; i < 9; i++) 

être:

(var i:Number = 0; i <= 9; i++) 

Le premier passera par numéros 0 à 8 et modifié passera par les numéros 0 à 9.

Cependant J'ai peut-être manqué le point que vous essayiez d'expliquer.

+0

a5 est différent de a = 5 aussi, voir comment cela fait la différence? :) –

+0

Probablement juste à propos de la boucle d'être «moins ou égal», mais je suis toujours coincé. –

+0

On dirait que cela a aidé et vous avez compris le reste. Content que tu l'as trié. –

0

SKIPPING 9 SOLUTION
a. Jeu d'interpolation trop élevé 'J'ai mis le mien à 0,05 au lieu de trois'
b. Nombre = 0; i < = 9; i ++ 'bon conseil de Richard'
c.valeurs numériques Modifier à des entiers var NumNum: int = 0; // nombre

J'ai eu quelques valeurs qui étaient rationnels, donc je l'ai changé de « Nombre » à « int » et cela a fonctionné.