Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
1

Программное создание экземпляра класса

10.12.2013, 14:09. Просмотров 1021. Ответов 5
Метки нет (Все метки)

Вобщем разрабатываю инвентарь для игры и хочу реализовать следующий механизм.

-Есть класс ArrayCOINS , который содержит публичный масив объектов (тоесть все мои коинты для игры со своими параметрами). Делал так исключительно чтоб обойти использование хмл. Но не суть важно.
-Есть публичная переменная
ActionScript 3
1
public var item:Object;
- текущий элемент с моего вышесказаного массива.
-В даной переменной есть параметр name, значения которого аналогичны названиям классов мувиков в библиотеке.

Так вот делаю апдейт инвентаря (начитка моего масива в цикле и програмное создание екземпляров мувиков в соответственных ячейках инвентаря).

Вопрос нубский наверное - как програмно заедчайлдить в нужную ячейку нужный класс если есть имя класса и каждая ячейка имеет свой идентификатор (inv1,inv2,inv3......);?

ActionScript 3
1
2
3
for (var i:int = 0; i < items.length; i++) {
                inv_prokrutka.inv[i].addChild(new items[i].name);
            }
вобщем как написать что если я перебираю 3 элемент масива (i=3) то едчайлдить в inv3 и если items[i].name="Bullet" то создавать экземпляр Bullet?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2013, 14:09
Ответы с готовыми решениями:

Создание экземпляра класса игрового времени
Есть основной файл программы и есть класс. В классе описано создание виртуального &quot;времени&quot;....

Название экземпляра класса
Есть припустим мувик класса k1 и мувик класса k2. Кидаю оба экземпляра на сцену. Теперь как мне...

Удаление экземпляра класса
Хочу уточнить у вас, если я удаляю экземпляр класса через ремувчайлд, то все дети его с их...

Помещение экземпляра класса на сцену
Хотел сделать так что бы на сцене появлялся квадрат. Да, банально, но... После того как я создал...

Программное создание фигуры
как программно создать квадрат (задать координаты точек и. т. д.)

5
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
10.12.2013, 14:19 2
ActionScript 3
1
2
3
4
5
6
7
import flash.utils.getDefinitionByName;
 
for (var i:int = 0; i < items.length; i++)
{
  var Item:Class = getDefinitionByName(new items[i].name);
  inv_prokrutka.inv[i].addChild(new Item());
}
1
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
10.12.2013, 14:31  [ТС] 3
Спасибо огромное. Правда выдало ошибку :
Assembler
1
D:\FLASH\Учебники\ИГРЫ\Box2D\Управление телами\src\Main_inventar.as, строка 63    1118: Неявное исправление значения статического типа Object на возможный несвязанный тип Class.
на строку:
ActionScript 3
1
 var Item:Class = getDefinitionByName(new items[i].name);
0
TanaTiX
Модератор
2807 / 1664 / 169
Регистрация: 19.02.2011
Сообщений: 6,114
Завершенные тесты: 2
10.12.2013, 15:30 4
Цитата Сообщение от Wells77 Посмотреть сообщение
В даной переменной есть параметр name
Тогда почему наследуемся от Object? Лучше создавать типизированные объекты без динамических свойств.
Цитата Сообщение от Wells77 Посмотреть сообщение
Правда выдало ошибку
Во-первыз ваш код нужно привести к классу. По умолчанию вам возвращается Object. А во-вторых уже из класса создавать его экземпляры.
1
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
10.12.2013, 16:38  [ТС] 5
Цитата Сообщение от TanaTiX Посмотреть сообщение
Во-первыз ваш код нужно привести к классу. По умолчанию вам возвращается Object. А во-вторых уже из класса создавать его экземпляры.
Можна конкретнее строчку правильную написать, а я уже разберу. items[i].name возвращает нормальную стрингу название класса "Bullet"

Добавлено через 2 минуты
Цитата Сообщение от TanaTiX Посмотреть сообщение
Тогда почему наследуемся от Object? Лучше создавать типизированные объекты без динамических свойств.
Не совсем понял, мне в масиве нада хранить объекты со своими параметрами, а это ж вроде только Object или нет?

Добавлено через 2 минуты
getDefinitionByName - возвращает ссылку на объект класса - тоесть на екземпляр класса по его имени или я неправильно понял? Но у меня нет экземпляров еще, и именно по названию Класса нада создать этот экземпляр.

Добавлено через 16 минут
Заработало со следующим кодом:
ActionScript 3
1
2
3
var Item:Class = getDefinitionByName(items[i].name) as Class;
                var instance:Object = new Item();
                inv_prokrutka.addChild(DisplayObject(instance));
Добавлено через 6 минут
Остался открытым вопрос: Если в мувике есть еще 10 мувиков(ячейки) названы inv1,inv2..... то как добавлять в них ребенков в зависимости от i? Я ж немогу написать inv[i] или inv+string(i).
0
TanaTiX
Модератор
2807 / 1664 / 169
Регистрация: 19.02.2011
Сообщений: 6,114
Завершенные тесты: 2
10.12.2013, 16:50 6
Лучший ответ Сообщение было отмечено TanaTiX как решение

Решение

Цитата Сообщение от Wells77 Посмотреть сообщение
Не совсем понял, мне в масиве нада хранить объекты со своими параметрами, а это ж вроде только Object или нет?
Вы можете создать любой класс с любыми свойствами, в т.ч. и с name.
Цитата Сообщение от Wells77 Посмотреть сообщение
Заработало со следующим кодом:
Так немного получше будет.
ActionScript 3
1
2
3
var Item:Class = getDefinitionByName(items[i].name) as Class;
var instance:DisplayObject = new Item() as DisplayObject;
inv_prokrutka.addChild(instance);
При таком варианте вы четко знаете, что instance - визуальный объект еще до его создания (при этом сразу можно работать с его свойствами и методами), или null если приведение типов выполнено не успешно, что приведет к ошибке и поможет справится с проблемой.
Цитата Сообщение от Wells77 Посмотреть сообщение
как програмно заедчайлдить в нужную ячейку нужный класс если есть имя класса и каждая ячейка имеет свой идентификатор
Пусть добавляемый объект имеет некое свойство, общее с свойством локации. Перед добавлением проверяем на их равенство и добавляем в случае совпадения. Это один из вариантов (наверное самый простой). При таком подходе используются вложенные циклы.
Можно придумать еще.
1
10.12.2013, 16:50
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2013, 16:50

Программное создание мувиклипов (несколько вопросов)
Доброго времени суток. Написал интерактивнуя карту (по типу Яндекс карт или google maps) всё у...

Создание нового экземпляра дочернего класса из экземпляра базового
Всем привет! Извиняюсь, если вопрос глупый, но что-то не смог найти конкретный ответ на него... ...

Создание экземпляра класса, разрушение экземпляра класса
Не могу найти информацию про разрущение экземпляра класса. Объясните пожалуйста, что это?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.