Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вывод массива (http://www.flasher.ru/forum/showthread.php?t=143371)

TIЕSTO 14.08.2010 21:50

Вывод массива
 
Здравствуйте !!
никак не могу понять как вывести массив на экран ???
помогите !!!
: )

нужно вывести через каждую секунду число из массива 10 чисел.

вот мой неправильно работающий код .
при запуске выдает Get Ready! , а через секунду сразу 10 =(

Код AS3:

package {
  import flash.display.*;
  import flash.events.*;
  import flash.utils.*;
  import flash.text.*;
 
    public class Race extends Sprite {
    private var startMsg:TextField;
      public function Race ( ) {
      stage.frameRate = 30;
 
    var timer:Timer = new Timer(1000, 10)//
      timer.addEventListener(TimerEvent.TIMER, timerListener);
      timer.start( );
 
      startMsg = new TextField( );
      startMsg.autoSize = TextFieldAutoSize.LEFT;
      startMsg.text = "Get Ready!";
                addChild(startMsg);
}
    private function timerListener (e:TimerEvent):void {
      var numbers:Array = [1,2,3,4,5,6,7,8,9,10];
      if ( startMsg.text !== numbers[9] ){
        for ( var i:int = 0; i !== numbers[9]; i++ ){
              startMsg.text = numbers[i];}
 
 
 
 
  }
  }
 }
}


t4arty 14.08.2010 21:56

эм.. ваш код странный =) я не вьеду в него :)

TIЕSTO 14.08.2010 22:17

чем же он странный ?))

TWETTI 14.08.2010 22:29

Вот так надо. Без цикла.
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.TimerEvent;
        import flash.text.TextField;
        import flash.text.TextFieldAutoSize;
        import flash.utils.Timer;
 
        public class Main extends Sprite
        {
                private var count:int = 0;
                private var numbers:Array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
                private var startMsg:TextField;
 
                public function Main():void
                {
                        startMsg = new TextField();
                        startMsg.autoSize = TextFieldAutoSize.LEFT;
                        startMsg.text = "Get Ready!";
                        addChild(startMsg);
 
                        var timer:Timer = new Timer(1000, 10);
                        timer.addEventListener(TimerEvent.TIMER, onTimer);
                        timer.start();
                }
 
                private function onTimer(e:TimerEvent):void
                {
                        startMsg.text = numbers[count];
                        count ++;
                        if (count == 11)
                        {
                                e.target.removeEventListener(TimerEvent.TIMER, onTimer);
                        }
 
                }
 
        }
 
}

А вообще зачем вам массив? Можно и без него.

SilverToad 14.08.2010 22:30

По всей видимости требовалось, что то типа этого:
Код AS3:

package
{
import flash.display.Sprite;
import flash.text.TextField;
 
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
 
public class Race extends Sprite
{
    private var startMsg:TextField;
 
    public function Race()
    {
        stage.frameRate = 30;
 
        var timer:Timer = new Timer(1000, 10)//
        timer.addEventListener(TimerEvent.TIMER, timerListener);
        timer.start();
 
        startMsg = new TextField();
        startMsg.autoSize = TextFieldAutoSize.LEFT;
        startMsg.text = "Get Ready!";
        addChild(startMsg);
    }
 
    private var count:uint = 0;
    private function timerListener(e:TimerEvent):void
    {
        var numbers:Array = [1,2,3,4,5,6,7,8,9,10];
        if (count != numbers.length)
        {
            startMsg.text = numbers[count];
            count++;
        }
    }
}
}

Добавлено через 1 минуту
Оу.. Надо чаще страницу обновлять, не разглядел, что уже ответили +))

gr_crd 14.08.2010 22:33

Код AS3:

for ( var i:int = 0; i !== numbers[9]; i++ ){
startMsg.text = numbers[i];}
}

вот здесь вы ведь сами указали, чтобы он установил последнее число.

можно просто добавить переменную-счетчик = 0.
каждый раз при срабатывании таймера startMsg.text = numbers[счетчик];
а также счетчик++ и никаких циклов не нужно

UPD
:)) поздно пишу)

TIЕSTO 14.08.2010 22:47

спасибо , помогли ..))

Добавлено через 5 минут
страницу можно и не обновлять и так работает.


Часовой пояс GMT +4, время: 14:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.