Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как правильно работать с for each? (http://www.flasher.ru/forum/showthread.php?t=169300)

fantomasdnb 02.10.2011 14:32

Как правильно работать с for each?
 
И так. На сцене лежит спрайт codeContainer, в нем есть спрайт codePlateSp. В него по нажатию кнопки добавляются спрайты типа commandBlock.

Код AS3:

package
{       
        import flash.display.Sprite;
        import flash.text.TextField;
 
        public class commandBlock extends Sprite
        {               
                public static var codeBlocksAmount:uint;
                public static var added: Boolean;
                public var command: String;               
 
                public function get getCommand():String
                {
                        return command.concat(textF1.text, textF2.text);               
                }
        }
}

далее из главного класса вызывается эта функция.
Код AS3:

private function startPlayCode(event:MouseEvent):void
{
        for each(var block:commandBlock in this.codeCont.codePlateSp)
        {
                trace(block.getCommand);
        }                       
}

Я так делаю, чтобы собрать строки со всех commandBlock'ов. Но ничего не происходит. Вообще. Что не так?. Не хочу добавлять имена каждого в массив , потому что экземпляров может быть очень много.

scarbo 02.10.2011 14:39

вот так надо:
Код AS3:

var numChildren:uint = this.codeCont.codePlateSp.numChildren;
for(var i:uint = 0; i < numChildren; i++){
var block:commandBlock = this.codeCont.codePlateSp.getChildAt(i) as commandBlock;
trace(block.getCommand);
}

То есть дети контейнера, не являются его свойством, соответственно их нельзя извлечь через оператор "."

P.S. несколько замечаний:
1)цикл for, быстрее цикла for each
2)для более быстрого перебора детей контейнера, их лучше сложить в Vector, а не getChildAt юзать.


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

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