| Irishman |
04.03.2011 06:54 |
Непонятно работает addChild
Здравствуйте. Извините, что обращаюсь с подобным вопросом, просто, наверное, нужен "незамыленный" взгляд на код. Вроде бы простой кусочек программы, который должен наполнять массив 20ю объектами класса Smile и выводить их на экран. Привожу самый упрощенный уже вариант, потому что и он не работает.
Код AS3:
package smilegame
{
import flash.display.*;
/**
* ...
* @author Irishman
*/
public class MainClass extends Sprite
{
var smile:Smile;
var masSmile:Array = new Array();
public function MainClass()
{
init();
}
internal function init():void
{
trace("start stage child= " + stage.numChildren);//1
for (var i = 0; i < 10; i++)
{
smile = new Smile();
masSmile.push(smile);
masSmile.unshift(smile);
trace("mas len= " + masSmile.length);//2
}
k = 0;
trace(masSmile.length);//3
for (var q = 0; q < 20; q++)
{
masSmile[k].y = q * 10 + 10;
stage.addChild(masSmile[k]);
trace(k,stage.contains(masSmile[k]),stage.numChildren);//4
k++;
}
}
}
}
В итоге, первый trace выдает начальное значение 1, цикл вторых трейсов показывает исправное увеличение массива за каждый шаг на 2 элемента, третий трейс выдает количество элементов в массиве равно 20(сколько и нужно), а вот 4 трейс ведет себя странно. k исправно принимает значения до 19(+нулевой элемент, то есть проходим все 20 элементов массива), stage.contains выдает true все 20 раз, а вот numChildren перестает увеличиваться после 10го шага и остается равным 11. Уже не знаю на что подумать, руки прямее достать пока не судьба=)
Визуальный результат - добавляется всего 10 элементов, причем, такое ощущение, что из "середины" массива, так по идее, первой y-координатой должно быть 10, а на самом деле 50-60.
|