пропуск девяток в счетчике объекта, AS3 - PullRequest
0 голосов
/ 18 марта 2010

Поначалу это не так заметно, но мой счетчик переходит на ноль и игнорирует девятки.
Как мне заставить мой счетчик не пропускать девятки? Просмотр объекта
Это столбец по убыванию 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]) ); 

            }  

        }  


    } 
}

Вариация NumbersView.as с 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; 
    } 

Вариант 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; 
    }

ОБЩЕСТВЕННЫЙ КЛАСС расширяет MovieClip
поместите 'NumbersView.as' в тот же каталог

КЛАСС
Библиотека / Свойства "щелчка правой кнопкой мыши" / Класс: NumberImage

Символ
номер столбца 70x1080
номера 70x120

Tweener
папка caurina в локальном каталоге

Ответы [ 2 ]

1 голос
/ 18 марта 2010

Я изо всех сил стараюсь следовать вашему коду и точно понять, что вы имеете в виду, так что это немного догадка.

В NumbersView.as следует

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

быть:

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

Первый будет проходить через цифры от 0 до 8, а измененный - через цифры от 0 до 9.

Однако я, возможно, упустил момент, который вы пытались объяснить.

0 голосов
/ 18 марта 2010

ПРОПУСК 9 РЕШЕНИЕ
а. Слишком высокий уровень анимации 'Я установил свой уровень в .05, а не в три'
б. Число = 0; я <= 9; я ++ </strong> «хороший совет от Ричарда»
с. Изменить числовые значения на целые числа var numnum: int = 0; // number

У меня были некоторые рациональные значения, поэтому я изменил его с «Number» на «int», и это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...