![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Feb 2010
Сообщений: 9
|
Здравствуйте. Извините, что обращаюсь с подобным вопросом, просто, наверное, нужен "незамыленный" взгляд на код. Вроде бы простой кусочек программы, который должен наполнять массив 20ю объектами класса Smile и выводить их на экран. Привожу самый упрощенный уже вариант, потому что и он не работает.
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++; } } } } Визуальный результат - добавляется всего 10 элементов, причем, такое ощущение, что из "середины" массива, так по идее, первой y-координатой должно быть 10, а на самом деле 50-60.
__________________
я обитаю здесь Последний раз редактировалось Irishman; 04.03.2011 в 07:02. |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
addChild работает правильно. Вы в первом цикле делаете push и unshift, дублируя ссылку на новый Smile, поэтому и получаете после цикла с 10 итерациями массив с 20 повторяющимися элементами. А потом в цикле до 20 вставляете эти смайлы и видите только 10, потому, что фактически вы создали их ровно столько же. Нельзя один и тот же клип добавить в потомки сто раз и увидеть сто разных клипов, только один и останется.
__________________
hauts.ru Последний раз редактировалось Hauts; 04.03.2011 в 07:23. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|