Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.06.2015, 14:45
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 1  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
По умолчанию numChildren исходя из значений в массиве

Есть такой вот код
Код AS3:
var sprite_1:Sprite;
var sprite_2:Sprite;
arr:Array = [{name:"sprite_1"},
                  {name:"sprite_2"}];
///////////
//////////
///////////Где то тут код, по добавлению объектов в спрайты, то есть они уже не пустые.
//////////
 
 
//Пробегаемся по циклу и измеряем количество детей в спрайтах, после чего удаляем их
for (i = 0; i < arr.length; i++)
			{
				numChildrenSlot = [arr[i].name].numChildren;
                                trace(numChildren);
				for (j = 0; j < numChildrenSlot; j++)
				{
 
					 [arr[i].name]removeChildAt(0);
				}
 
			}
Но вот незадача, трейс постоянно показывает 0 во всех спрайтах, хотя это не так, если измерить обычным способом к примеру sprite_1.numChildren.
В чем собственно ошибка может быть?

Старый 08.06.2015, 15:18
KBAC вне форума Посмотреть профиль Отправить личное сообщение для KBAC Найти все сообщения от KBAC
  № 2  
Ответить с цитированием
KBAC
 
Аватар для KBAC

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
numChildren вместо numChildrenSlot
__________________
Будь проще.

Старый 08.06.2015, 15:27
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 3  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
[arr[i].name]removeChildAt(0);
Код AS3:
this[arr[i].name].removeChildAt(0);
__________________
There is no thing in this world that is not simple.

Старый 08.06.2015, 16:37
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 4  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Код AS3:
this[arr[i].name].removeChildAt(0);
Да я и так делал. Проблема не в удалении, а в numChildren.
numChildrenSlot = sprite_1.numChildren; - так выдает трейс 3
numChildrenSlot = [arr[i].name].numChildren; - так выдает 0.
Заметил что при проверке [arr[0].name].numChildren выдает undenfined. Но объект есть, странно почему он не видит его

Старый 08.06.2015, 16:44
ObOs вне форума Посмотреть профиль Отправить личное сообщение для ObOs Найти все сообщения от ObOs
  № 5  
Ответить с цитированием
ObOs
 
Аватар для ObOs

Регистрация: Jul 2009
Сообщений: 149
Код AS3:
(arr[i].name as Sprite).numChildren

Старый 08.06.2015, 16:51
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 6  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Неа. Чет нефига. Все тот же udenfined

Старый 08.06.2015, 17:02
ObOs вне форума Посмотреть профиль Отправить личное сообщение для ObOs Найти все сообщения от ObOs
  № 7  
Ответить с цитированием
ObOs
 
Аватар для ObOs

Регистрация: Jul 2009
Сообщений: 149
Не заметил.
Замените
Код AS3:
arr:Array = [{name:"sprite_1"},
                  {name:"sprite_2"}];
На
Код AS3:
arr:Array = [{name:sprite_1},
                  {name:sprite_2}];
Тогда мой способ должен заработать.

PS
А зачем вы оборачиваете каждый спрайт в объект?
Почему бы просто не заносить в массив ссылки на сами спрайты
Код AS3:
arr:Array = [sprite_1, sprite_2];
[/as3]

И обращаться как
Код AS3:
(arr[i] as Sprite).numChildren

Старый 08.06.2015, 17:10
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 8  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
К сожалению я так тоже уже делал, еще до того как тему создал. Тот же udenfined. Не пойму почему
MW.DI.check.txt_trace.text += [(arr[i].name as Sprite)].numChildren;
undefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefined
Спрайты точно созданы и они есть, потому что если напрямую делать numChild все выводится как надо, а через массив косяк какой-то

Добавлено через 2 минуты
PS.
Если с этим вариантом ничего не выйдет, попробую тогда как вы сказали

Старый 08.06.2015, 17:48
meiciuc вне форума Посмотреть профиль Отправить личное сообщение для meiciuc Найти все сообщения от meiciuc
  № 9  
Ответить с цитированием
meiciuc

Регистрация: Nov 2005
Сообщений: 149
вот эта строчка всегда 0 выдает?

Код AS1/AS2:
trace(numChildren);
так может, в спрайте, где запускается весь код, ДЕЙСТВИТЕЛЬНО нет детей? Ведь дети, судя по коду, удаляются совсем в другом месте?

Код AS1/AS2:
[arr[i].name].numChildren
вот если бы сделать trace([arr[i].name].numChildren), тогда показало бы число, отличное от нуля

Старый 08.06.2015, 17:56
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 10  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Да не. Дети 100% есть, т.к в этом же цикле можно сделать вот так
trace(sprite_1.numChildren); и выдаст нормальное число. Конкретно с массивом что-то не хочет он разбираться.
В общем сделал по совету ObOs.

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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