Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.05.2007, 01:41
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 1  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: 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 разместил на сцене.

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

Старый 30.05.2007, 01:58
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
createClassObject доступен классам, расширяющим UIObject. И какая взаимосвязь между Comp2 и TestCT — непонятно.

Старый 30.05.2007, 06:46
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 3  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: 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());
	}
}
CComp2
Код:
class classes.CComp2 extends MovieClip
{
	public function CComp2()
	{
		trace("Component-2");
	}
}

Старый 30.05.2007, 13:53
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

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

Старый 30.05.2007, 18:27
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 5  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
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, время: 10:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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