Просмотр полной версии : создание представителей класса на сцене вручную
Всем привет.
Поискал по форуму, так и не нашел решения проблемы.
Которая заключается в следующем:
Я создал отдельный класс (допустим
class myClass extends MovieClip{
...
}
После этого хочу, чтобы некоторые мувики из библиотеки принадлежали этому классу. Для этого я выделяю клип в библиотеке мышой, жму linkage, далее export for action script и там пишу название класса. Однако возникает проблема, что нельзя нескольким мувикам присвоить один и тот же класс, возникает алерт:
http://keep4u.ru/imgs/b/070608/d007fd216da9c99b4f.jpg.
Итак, каким образом можно создать "вручную" методом копирования из библиотеки мувиков, которые обладали бы свойствами моего класса?
Я понимаю, что можно создать мувик - контейнер (этого класса), внутрь которого уже динамически грузить все остальные. Однако тогда возникнет проблема с визуальным размещением объектов на сцене (там сложные векторные объекты).
Написать общий класс и в либе понаделать кучу его наследников (т.е. в Base class пишешь имя общего класса, а имя класса какое-нибудь произвольное, с автоматической генерацией).
И правда! Спасибо большущее. А я-то 1001 способ придумывал, как можно этот алерт обойти (включая использование прототипа класса MovieClip), а строки base-то и не заметил.
Проблема решена.
Кошмар! Я разочарован....
Чем, простите? Собственно, меня больше интересует, каким образом автор темы собирался создавать разные экземпляры класса с одним именем… Даже если логически рассуждать, то это невозможно.
Чем, простите? Собственно, меня больше интересует, каким образом автор темы собирался создавать разные экземпляры класса с одним именем… Даже если логически рассуждать, то это невозможно.
экземпляры одного и того же класса (у которого одно имя)
Проблемя, понятное дело, решена, но я хотел описать, что же планировалось сделать в самом начале: задав одно и то же имя класса разным элементам в библиотеке, каким-то образом потом их создавать. Ну и откуда флешу знать, какой именно брать элемент из библиотеки брать?
2 __etc: Да не, всё путём. Меня ввело в заблуждение это "смещение" обозначений классов.
Вся эта игра с классами ничего хорошего не несет.
Как-то странно, когда одному объекту соответствуют два класса (Class и Base class). Не кажется ли, что тут какое-то нарушение принципов ООП?
Я даже не могу понять как это назвать... Вроде и не множественное наследование...
Нет никакого нарушения. Это называется наследование.
мда... чем дальше влез тем жирнее партизаны...
Всё ясно. Можно либо то либо это. Вместе нельзя.
Либо Class наследник Movieclip, либо Base Class наследник Movieclip... Вместе - ругается. А нафиг такой изврат? Почему нельзя как раньше юзать один класс тот что Base Class? Зачем еще добавили индивидуальный? Всёравнож дублировать.
Идея в принципе понята.... Но создается впечатление что чото перемудрили...
Подозреваю что это связано с новой структурой АС3.
Если задан Class, то инстанцируется то что в Class, а обязательно ли чтобы Class был потомком Base class?
А если задан Base class, то то что написано в Class игнорируется? или то что в Class автоматом является потомком от Base class и оно же инстанцируется?
Class > Base Class > MovieClip, по-моему логично. Ничего не перемудрили, контент конкретного экземляра конкретного класса не может быть разным, как это было в AS2 и это правильно.
BlooDHounD
15.06.2007, 12:16
to Racer, в поле class вы ишите имя нового класса. того самого, экземпляры которого будите создавать, а в base class пишите класс от которого он должен наследоваться (если надо).
класса в поле class вообще может не существовать.
В итоге, что я понял :) :
1. Поле Class определяет класс, который будет создаваться из АС. Например: var c:Circle = new Circle();.
2. Класс в поле Class должен быть потомком класса Base class. (вопрос: обязательно ли Base class в этом случае должен быть одним из стандартных классов MovieClip или Sprite?)
3. Если нам нужно управлять семейством символов с помощью одного класса, мы вводим этот класс в поле Base class. При этом поле Class может содержать потомка Base class (стандартный?), либо имя символа (по умолчанию). Причем, создавая символ из АС, мы будем создавать то что в поле Class, а если символы уже есть в таймлане, собственно, поле Class вообще не имеет значения.
4. Равноценно для класса, потомка (например) movieclip: если, вводим его в свойство Class, и если вводим его в Base class. Разница лишь в том, какое имя будет указываться при создании из АС (в первом случае это будет имя класса, во втором - имя символа).
2. Да, если это объект мувик. Base class должен наследоваться от MovieClip или Sprite;
3. Ничего не понял из этой каши в чужой голове;
4. См. п. 3.
Racer изучи подробнее ООП особенно наследование, да и про паттерн factory можешь прочитать. От класса родителя могут наследоватся скольугодно "чилдренов".
2 __etc: Короче, мы друг друга не поняли... Ладно, разберемся, невпервой.
2 vapes: ООП я уже больше 10 лет юзаю, и паттерны в том числе, так что сам могу поучить кого угодно. В данном топике меня интересует не ООП, а технические новшества 9го flash, тк я только начинаю на него переходить.
BlooDHounD
15.06.2007, 22:24
ООП я уже больше 10 лет юзаю, и паттерны в том числе, так что сам могу поучить кого угодно.Слава богу, что Вы не мой учитель.
класса в поле класс может вообще не быть, тогда флэш его сгенерит сам.
Если не указать base class будет что-то типа:public class MyClass extends MovieClip {}Если, base class указать то сгенериться, что-то типа:public class MyClass extends BaseClass {}при этом BaseClass должен наследовать как минимум от Sprite. и т.д.
Если у тебя класс указанный в поле class описан, то поле base class вообще можно не заполнять. и так понятно откуда он наследуется.
2 BlooDHounD: Спасибо за помощь, друг, я уже во всем разобрался.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.