|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: May 2012
Сообщений: 166
|
Заполнение массива определенными свойствами другого
Подскажите пожалуйста, есть пустой массив и массив с экземплярами класса, у каждого экземпляра свои свойства. Как заполнить пустой массив определенными свойствами экземпляров другого массива?
Например положением по X так пробую: for (var en:int=0; en<Enemy.enAll.length; en++) { Agr.push(Enemy.enAll[en].x); trace(Agr[2]); } undefined undefined 1078.55 1078.55 1078.55 Наверно не правильно заполняю если есть undefined?
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение. Последний раз редактировалось Tetraeon; 08.07.2012 в 19:08. |
|
|||||
Почему неправильно? все нормально вы делаете.
И трейсится все правильно - первые 2 раза выводят undefined, потому что Arg[2] это третий элемент массива. Естественно что его в массиве нет. А на третьей итерации он у Вас появляется. Вероятнее всего Вам хотелось написать Arg[en] и выводить текущего противника. Мой всам совет - именуйти классы с большой буквы, а переменные с маленькой. Это упрощает чтение кода
__________________
...вселенская грусть |
|
|||||
Регистрация: May 2012
Сообщений: 166
|
Спасибо. Кстати эта переменная Agr единственная осталась (с давних времен) с большой буквы, просто переименовать все никак руки не доходят)))
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение. |
|
|||||
[+1 22.04.13]
[+1 06.03.13] Регистрация: Apr 2012
Сообщений: 239
|
во flash develop выделяешь переменную и во вкладке refactor выбираешь rename нажимаешь интер и у тебя она во всем классе переименовывается
|
|
|||||
Регистрация: May 2012
Сообщений: 166
|
Решил новую тему не создавать, возник похожий вопрос.
В классе с врагами есть переменная "agr:Boolean" она отвечает за состояние врага (атака, спокойствие) Мне нужно создать условие, если все враги agr=false; то выполняется действие, иначе ничего не происходит. Загвоздка вот в чем любые маневры с этой переменной применяются по отдельности ко всем экземплярам, т.е. я не могу проверить всех сразу. Так же и в массиве, беру весь массив объектов и кроме как по отдельности проверить я его никак не могу(через цикл). Есть идеи как можно состряпать это условие?
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение. |
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
тебе достаточно свойства спрятать внутрь общего класса- как набора всех твоих врагов - в классе, через private и обращаться с ним не напрямую, а через get и set
ну и перед присвоением true/false, счетчик там завести, сколько всего true, сколько false и при изменении значения счетчики менять. как-то так. Последний раз редактировалось Krusty; 09.07.2012 в 01:34. |
|
|||||
Регистрация: May 2012
Сообщений: 166
|
Подскажите пожалуйста как проделать всю туже процедуру сохранения определенных свойств объектов массива в тип data. Вот аналог без использования data:
for (var en:int=0; en<Enemy.allEnemys.length; en++) { Agr[en] = Enemy.allEnemys[en].agr; // Agr - пустой массив; } // Enemy.allEnemys - массив с объектами, agr - свойство объекта for (var en:int=0; en<Enemy.allEnemys.length; en++) { saveGame.data.Agr[en] = Enemy.allEnemys[en].agr; // не получается так } Добавлено через 19 минут И еще дополнительная проблема при загрузке данных из data т.е. присваивании всех данных из data элементам массива с объектами, раньше при использовании 2х массивов я делал так: А если придется присваивать значения объектам массива по отдельности я не смогу использовать saveGame.data.Agr[en] т.к. data не является массивом и в цикле я не смогу с ним работать
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение. |
Часовой пояс GMT +4, время: 16:58. |
|
« Предыдущая тема | Следующая тема » |
|
|