![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1.4 18.06.07]
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
Приветствую всех присутствующих.
Недавно начал изучать AS2 и наткнулся на определенное непонимание принципов ООП. Ситуация следующая: Есть 2 класса, оба описывают пользовательские компоненты. Хотелось-бы из класса-1 создать несколько объектов, описанных классом-2. Класс-1: import mx.controls.Comp2
class classes.TestCP extends MovieClip
{
public function TestCP()
{
for(var i=0;i<4;i++){
super.createClassObject(Comp2,"comp"+i,i);
}
}
}
Класс-2: class classes.TestCT extends MovieClip
{
public function TestCT()
{
this.lineStyle(0, 0xccccef);
this.moveTo(0, 0);
this.lineTo(50, 0);
this.lineTo(50, 120);
this.lineTo(0, 120);
this.lineTo(0, 0);
}
}
*В Library поместил 2 Component-а, привязанные к этим классам. Component-1 разместил на сцене. Лично для меня, данный вопрос не имеет практического значения - озадачился, когда пытался создать снегопад, где снежинки были-бы описаны не мувиком, а пользовательским классом. Однако ответ интересен с точки зрения понимания работы с классами и, наверняка, многим пригодится. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
createClassObject доступен классам, расширяющим UIObject. И какая взаимосвязь между Comp2 и TestCT — непонятно.
|
|
|||||
|
[+1.4 18.06.07]
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
2__etc: спасибо за оперативную наводку, при запуске клипа Flash действительно перестал ругаться, однако ничего не происходит. Знаю, что доставать общественность некрасиво, но, т.к.форум для начинающих, прошу указать на ошибку в коде..
Код упростил.. В библиотеке есть 2 компонента, которые привязаны к 2м классам (Comp1-CComp1 и Comp2-CComp2). Comp1 выложен на сцене. Вопрос: почему при запуске мувика не создается экземпляр CComp2? CComp1 class classes.CComp1 extends mx.core.UIObject
{
var A:Array = new Array();
public function CComp1()
{
trace("Component-1");
super.createClassObject(classes.CComp2,"c1",super.getNextHighestDepth());
}
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
1. CComp2 тоже должен быть наследником UIObject;
2. Он должен иметь статические свойство symbolName, содержащее Linkage данного класса и symbolOwner, ссылающеся либо на супер класс, либо на этот же. |
|
|||||
|
[+1.4 18.06.07]
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
2__etc: Респект Вам и уважуха..
Остальным: дабы вышеприведенный код заработал, 2й класс нужно привести к следующему виду: CComp2: ***Топик Закрыт*** |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:18. |
|
|
« Предыдущая тема | Следующая тема » |
|
|