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

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

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

Регистрация: Dec 2007
Сообщений: 69
По умолчанию Расширение встроенного класса MovieClip

Подскажите, плз. Голова уже не варит
Хочу расширить подкласс, например, MC и возникают какие-то непонятки...

Код в теле класса MC
Код:
class MC extends MovieClip
{
	public function MC()
	{
		super();
		trace("Конструктор подкласса работает");
	}
	public function createShape(w:Number, h:Number):Void
	{
		super.moveTo(0, 0);
		super.lineTo(w, 0);
		super.lineTo(w, h);
		super.lineTo(0, h);
		super.lineTo(0, 0);
		trace("Метод createShape работает");
	}
}
Код в руте
Код:
var mc:MC = new MC();
mc = this.createEmptyMovieClip("mc", 1);
mc.beginFill(0xFFFFFF, 100);
mc.createShape(50, 50);
mc.endFill();
В итоге не виден метод createShape, о чем свидетельствует отсутствие соответсвующей надписи в панеле Output. Что у меня не так?

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Мувиклипы не создаются методом new. То есть экзмепляр класса будет создан, но он не будет обладать свойствами мувиклипа.
Кроме того, после первого задания значения mc, вы строчкой ниже перебиваете его.
Вам нужно либо создать пустой клип в библиотеке и назначить ему класс MC, а потом его аттачить. Либо использовать хак, чтобы изменить суперкласс клипа.
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 28.12.2007 в 19:59.
Старый 28.12.2007, 20:08
XBEEN вне форума Посмотреть профиль Отправить личное сообщение для XBEEN Найти все сообщения от XBEEN
  № 3  
Ответить с цитированием
XBEEN

Регистрация: Dec 2007
Сообщений: 69
Ну это понятно: конструктор класса можно было опустить.
Постоянно создавать мувиклипы в библиотеке с назначением подкласса МС, а потом их аттачить - не совсем удобно. Хакать суперкласс тоже не хотелось бы. Похоже на пляски с бубном.
Есть вариант использовать "композицию" (К.Мук), но тоже оказалось в итоге много лишней писанины.
Интересно, к примеру, расширить класс TextField невозможно через extends, а MovieClip?

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Вы же только что сами расширили MovieClip, к чему вопрос? И хак в данном случаи не так страшен и на пляски с бубном не похож.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 28.12.2007, 20:25
XBEEN вне форума Посмотреть профиль Отправить личное сообщение для XBEEN Найти все сообщения от XBEEN
  № 5  
Ответить с цитированием
XBEEN

Регистрация: Dec 2007
Сообщений: 69
Расширить - расширил, а вот работоспособность подкласса никакая и всё похоже зацикливается на этом кривом методе createEmptyMovieClip().
А на счёт хака, возникает нелицеприятный вопрос с передачей исходников заказчику: у него, то этот хак не будет проделан.

P.S. Всё равно спасибо на помощь.

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

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

Старый 28.12.2007, 20:29
XBEEN вне форума Посмотреть профиль Отправить личное сообщение для XBEEN Найти все сообщения от XBEEN
  № 7  
Ответить с цитированием
XBEEN

Регистрация: Dec 2007
Сообщений: 69
Исходник fla с классами.

А как правильно хакнуть, не повредив работоспособность суперкласса? Ведь в нём все методы и свойства не описываются (intrinsic). Можно краткий пример?


Последний раз редактировалось iNils; 28.12.2007 в 20:35.
Старый 28.12.2007, 20:39
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
С помощью createEmptyMovieClip вы создаете экземпляр MovieClip, а вам нужен MC расширяющий MovieClip, то MovieClip + еще что-то, о каком повреждении идет речь?
http://www.flasher.ru/forum/showpost...0&postcount=24
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 28.12.2007, 20:43
XBEEN вне форума Посмотреть профиль Отправить личное сообщение для XBEEN Найти все сообщения от XBEEN
  № 9  
Ответить с цитированием
XBEEN

Регистрация: Dec 2007
Сообщений: 69
Всё понятно, пасибо. Я не правильно представлял себе процесс хака

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

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

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


 


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


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