Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Перебор экземпляров класса (http://www.flasher.ru/forum/showthread.php?t=195491)

KingMaks 07.03.2013 23:10

Перебор экземпляров класса
 
допустим есть класс Player и я создал 3 экземпляра этого класса, класс НЕ расширяет мувиклип.
Как мне перебрать все экземпляры класса? переменные не помещал в массив, называл каждую своим именем:)

GBee 08.03.2013 00:01

поместить в массив или в модный в узких кругах вектор :)

Bgg 08.03.2013 00:28

Кто/что создает экземпляры, тот/то и их и перебирает.

mikhailk 08.03.2013 00:31

Вообще-то, если все они в одном контейнере валяются, то можно массивов не создавать, а прекрасно перебирать детей контейнера.

Вопрос - зачем это нужно, сколько их там может быть, какая нужна скорость доступа и т.д.

KingMaks 08.03.2013 01:46

Цитата:

Сообщение от mikhailk (Сообщение 1124126)
Вообще-то, если все они в одном контейнере валяются, то можно массивов не создавать, а прекрасно перебирать детей контейнера.

Вопрос - зачем это нужно, сколько их там может быть, какая нужна скорость доступа и т.д.

Нужно, чтоб для каждого игрока вызвать функцию update, которая находиться в классе игрок, а сколько игроков, заранее неизвестно, можно добавлять, можно удалять.
А чилдов перебирать можно, вроде, только если экземпляры класса мувиклипы??

mikhailk 08.03.2013 10:25

Цитата:

А чилдов перебирать можно, вроде, только если экземпляры класса мувиклипы??
Код AS3:

for (var i:int=0;i<container.numChildren;i++)
{
  var gamer:Gamer = container.getChildAt(i) as Gamer;
  if (gamer) gamer.update();
}

Но в Вашем случае (обновление юнитов по событию или таймеру) типовым решением является массив.

caseyryan 08.03.2013 10:49

Цитата:

А чилдов перебирать можно, вроде, только если экземпляры класса мувиклипы??
Откуда такая информация? Программы на ас3 можно создавать вообще не используя мувиклипов.
Детьми могут быть любые наследники класса DisplayObject, сюда относятся и Sprite и Shape и Bitmap и любые свои классы, так или иначе унаследованные от DisplayObject
Цитата:

Нужно, чтоб для каждого игрока вызвать функцию update, которая находиться в классе игрок
Самый разумный способ - положить их все в массив и в цикле вызывать функцию update для каждго

KingMaks 08.03.2013 15:08

Цитата:

Сообщение от caseyryan (Сообщение 1124148)

Самый разумный способ - положить их все в массив и в цикле вызывать функцию update для каждго

Помнится в С++ можно было создавать переменную в классе, чтоб она была одной для всех объектов данного класса, было бы неплохо внутри класса счетчик создать, в конструкторе +1, а вот как насчет деструктора? и вообще можно ли так в экшн скрипте?

AlexLucas 08.03.2013 15:38

Цитата:

Помнится в С++ можно было создавать переменную в классе, чтоб она была одной для всех объектов данного класса,
Статичные переменные вам в помощь
Код AS3:

public static var numObjects:int = 0;


caseyryan 08.03.2013 17:23

Цитата:

Помнится в С++ можно было создавать переменную в классе чтоб она была одной для всех объектов данного класса
Цитата:

Статичные переменные вам в помощь
Честно сказать, с С++ не знаком, но если речь о статических свойствах, то это не правда. Статические свойства вообще не относятся к экземплярам. Они относятся к самим классам. И из статических методов нельзя вызывать не статические свойства / методы. Так что это вообще к данное теме не относится.
Цитата:

а вот как насчет деструктора? и вообще можно ли так в экшн скрипте?
В ас3 нет деструкторов. Тут есть автоматический сборщик мусора. Чтобы объект стал доступным для сборки мусора, нужно удалить на него все ссылки. Для этого часто создают методы, в которых зануляются все сссылки на объекты созданные внутри экземпляра.


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

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