![]() |
В массиве одинаковые объекты
Здравствуйте.
Вроде всё должно быть просто, но никак не получается. Есть экземпляр класса Stone, наследованый от MovieClip. Есть StoneFactory, которая отдаёт этот объект. В контроллере пишу ф-ию, которая создаёт новый камень и добавляет его в массив всех камней. Так вот проблема в том что вроде бы пишу 'new', массив камней заполняется, но выходит что в массиве ссылка на один и тот же камень. Класс Stone: Код AS3:
Класс StoneFactory: Код AS3:
Контроллер: Код AS3:
|
Мб из за этого?
Код AS3:
|
А это чо?
Код AS3:
|
так у вас type для всех камней одинаковый задается.
ваш getStone дергает первый попавшийся стоун из массива и все. в чем уникальность то? апд..не внимательно прочитал ( попробуйте так: Код AS3:
|
2 leofit:
Массив камней - это model.stones А беру я из фабрики, перед этим написав new Stone(). Если я ничего не путаю - то в массив model.stones добавится новый обьект. 2 Bgg: Это перебор видов камней в фабрике. Возвращает объект по его типу. 2 Cleptoman: В этой функции рабочий только цикл for each, всё что после - это чтобы компилятор не ругался. У меня всегда запрашиваются существующие типы камней, поэтому функция должна заканчиваться на первом return'e. |
Если Вы вызываете
Код AS3:
|
А как сделать чтобы возвращался каждый раз новый объект, но с заполненными свойствами?
|
Если вы пишете
a = new B(); то это выделяет память под новый обьект, если затем сразу написать a = c; то на ту выделенную память уже (обычно) не будет ссылок и её сожрёт (когда проголодается) GC. А а будет указывать на некий старый обьект с, не имеющий к новому никакого отношения. Компилятор не будет ругаться, если напишете просто return null; |
Тогда по идее - если я напишу в StoneFactory в ф-ии getStone 'new Stone()'
Код AS3:
|
Нет такого синтаксиса, там должно тупо обьявление итератора стоять.
Вы что сделать хотите? В массив добавить элемент? Ну так я думаю вы знаете, как это делается =) |
| Часовой пояс GMT +4, время: 03:03. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.