PDA

Просмотр полной версии : привязка объекта на сцене к кастомному классу без linkage


derhab
05.11.2007, 21:16
Добрый вечер.
Подскажите, можно как-то мувиклип, изначально лежащий на сцене, сделать экземпляром кастомного класса? При этом в библиотеке в линкейдже его класс никак не определен.

Я создаю ссылку на свой класс:
var ClassRef:Class = getDefinitionByName("MyClass") as Class;

Но дальше ничего не получается..вызывать конструктор ClassRef не имеет смысла, объект уже есть, он лежит на сцене..можно в принципе сделать его экземпляром класса ClassRef?

etc
05.11.2007, 21:20
Не очень понятен вопрос. На первый вопрос ответ очевиден — нет. А дальше я что-то не понял, если тебе нужно создать ещё один экземпляр этого клипа, то юзай constructor. Или делай композицию.

derhab
05.11.2007, 21:35
не, мне не нужно создавать больше экземпляров..Они все отрисованы на сцене. Просто их больше 200 штук)).. и прописывать в библиотеке каждому класс..я подумал может как то программно можно..

etc
05.11.2007, 21:44
Зачем прописывать? getChildAt? getChildByName?

derhab
05.11.2007, 22:50
Зачем прописывать? getChildAt? getChildByName?
естественно, я так и делаю, но сделать их экземплярами нужного класса не удается

etc
05.11.2007, 22:56
А это невозможно. Тут можно работать лишь используя композицию.

derhab
05.11.2007, 23:04
ну вот на примере с одним экземпляром....я делал так

var ref:myClass
var ClassRef:Class = getDefinitionByName("myClass") as Class;
trace(getChildByName('obj') as myClass); // null


понял..невозможно.

Тогда приходит в голову создать экземпляр ClassRef и параметром передать клип, чтоб в классе уже с ним работать

var instance:ClassRef = new ClassRef (getChildByName('obj'))


А поясни, как использовать композицию тут?

etc
05.11.2007, 23:11
Написать класс, который в конструкторе принимает ссылку на клип. Этот класс реализует необходимый тебе функционал и управляет клипом.

derhab
05.11.2007, 23:17
ну так вроде я это и сделал...
спасибо

etc
05.11.2007, 23:26
Других вариантов решения, кроме утопичных, вроде перемалывания байт-кода я не вижу. Так что вариант с композицией самый лучший в данной ситуации.