Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Загрузка из класса пользовательских компонентов. (http://www.flasher.ru/forum/showthread.php?t=96409)

Torero 30.05.2007 01:41

Загрузка из класса пользовательских компонентов.
 
Приветствую всех присутствующих. :drinks:
Недавно начал изучать 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 разместил на сцене.

Лично для меня, данный вопрос не имеет практического значения - озадачился, когда пытался создать снегопад, где снежинки были-бы описаны не мувиком, а пользовательским классом. Однако ответ интересен с точки зрения понимания работы с классами и, наверняка, многим пригодится.

etc 30.05.2007 01:58

createClassObject доступен классам, расширяющим UIObject. И какая взаимосвязь между Comp2 и TestCT — непонятно.

Torero 30.05.2007 06:46

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());
        }
}

CComp2
Код:

class classes.CComp2 extends MovieClip
{
        public function CComp2()
        {
                trace("Component-2");
        }
}


etc 30.05.2007 13:53

1. CComp2 тоже должен быть наследником UIObject;
2. Он должен иметь статические свойство symbolName, содержащее Linkage данного класса и symbolOwner, ссылающеся либо на супер класс, либо на этот же.

Torero 30.05.2007 18:27

2__etc: Респект Вам и уважуха..
Остальным:
дабы вышеприведенный код заработал, 2й класс нужно привести к следующему виду:

CComp2:
Код:

import mx.core.UIObject;
class classes.CComp2 extends MovieClip
{
        static var symbolName:String = "classes.CComp2";
        static var symbolOwner:Object = CComp2;       
        public function CComp2()
        {
                trace("Component-2");
        }
}

***Топик Закрыт***


Часовой пояс GMT +4, время: 11:41.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.