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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.09.2009, 12:25
chatman вне форума Посмотреть профиль Отправить личное сообщение для chatman Посетить домашнюю страницу chatman Найти все сообщения от chatman
  № 1  
Ответить с цитированием
chatman

Регистрация: Oct 2007
Адрес: Moscow
Сообщений: 45
Отправить сообщение для chatman с помощью ICQ
Question Наследование MovieClip.

Долгое время проработал на AS2, теперь трудно переходить на третью версию, но тем не менее недавно начал. В ООП кое-что понимаю, но с конкретно с AS3 ещё не до конца разобрался. Например мне не нравится конкретно вот что:
У меня есть главный класс, у него есть подклассы, которые также выводят графику. Ну точнее мне достаточно, чтобы они наследовали методы главного класса. Я делаю так:

Код AS3:
	public class mainClass extends MovieClip
	{
		public function MainClass()
		{
			// какой-то конструктор
		}
		public function mainClassMethod()
		{
			// какой-то метод главного класса, который должен унаследоваться
		}
	}
Класс-потомок.

Код AS3:
	public class subClass{
		private var f:Object;
 
		public function subClass(data_accessor:DataAccessor, _f: Object){
				f = _f;
				f.mainClassMethod();
		}
То есть по сути у меня тут не наследование, а тупо передача всего ролика, как объекта. Я так понимаю, это жрёт достаточно много ресурсов. Как сделать правильно?

Старый 26.09.2009, 14:52
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 2  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Код AS3:
	public class subClass extends mainClass {
 
		public function subClass(data_accessor:DataAccessor){
			this.mainClassMethod();
		}
p.s. ничего тут со времён ас2, не изменилось.

Старый 26.09.2009, 16:09
chatman вне форума Посмотреть профиль Отправить личное сообщение для chatman Посетить домашнюю страницу chatman Найти все сообщения от chatman
  № 3  
Ответить с цитированием
chatman

Регистрация: Oct 2007
Адрес: Moscow
Сообщений: 45
Отправить сообщение для chatman с помощью ICQ
Это всё, конечно, здорово. Но я так уже пробовал. Во время исполнения выдаёт:
Цитата:
Error: Error #2136: The SWF file file:///E|/Docs/.../...swf contains invalid data.
at mainClass/startFunction()
at mainClass()
Вот код обоих классов:

Код AS3:
	public class mainClass extends MovieClip
	{
		public function mainClass()
		{
			trace ("test");
			// какой-то конструктор
			startFunction();
		}
		public function mainClassMethod()
		{
			trace("MainClassMethod");
			// какой-то метод главного класса, который должен унаследоваться
		}
		public function startFunction()
		{
			var Test:subClass = new subClass();
		}
	}
Подкласс:
Код AS3:
	public class subClass extends mainClass
	{
		public function subClass()
		{
 
		}
		public function subTest()
		{
			this.mainClassMethod();
		}
	}
Не знаю точно, но подозреваю, что дело в том, что нельзя вызывать дочерний класс, пока не закончил работу конструктор. Может я не прав. Ну а как тогда?

Старый 26.09.2009, 16:29
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
1. Нет пакетов.
2. Названия классов пишут с большой буквы.
3. Этот код не будет работать, так как создает рекурсию. Вы создаете экземпляр SubClass, который вызывает конструктор предка MainClass, там вызывается startFunction, в котором создается экземпляр SubClass, который... ну и тд.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 26.09.2009, 16:43
chatman вне форума Посмотреть профиль Отправить личное сообщение для chatman Посетить домашнюю страницу chatman Найти все сообщения от chatman
  № 5  
Ответить с цитированием
chatman

Регистрация: Oct 2007
Адрес: Moscow
Сообщений: 45
Отправить сообщение для chatman с помощью ICQ
Пакет есть. Просто я опустил его упоминание, как и импорты. Про названия классов учту, спасибо. Вот оно как. Не учёл, что конструктор повторно вызывается. Ну это, конечно, всё здорово. Но всё-таки. Как мне лучше сделать так, чтобы дочерние классы точно также могли работать некоторыми функциями главного класса? (в частности - управление MovieClip'ами)

Старый 26.09.2009, 17:06
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Смотрите сообщение номер 2.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
наследование , ресурсоёмкость

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

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


 


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


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