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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.11.2006, 13:43
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 1  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
По умолчанию Наследование от UIObject'a

Подскажите пожалуйста такую вещь: в принципе ведь ЮИ-компоненты от ММ наследуют UIObject? Хочу поробовать создать свой компонент. Но вот что не могу понять. При создании, компонент просит дать ему имя, после чего к этому компоненту можно будет по этому имени обращаться. Не могу понять механизм. Чему присваивается это самое имя (какой переменной)? Т.е. как сделать так, чтобы мой компонент тоже можно было создать через createClassObject() ну и удалить через destroyObject()?
Заранее спасибо.
__________________
Hell is the possibility of sanity

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

Регистрация: Sep 2002
Сообщений: 30,787
Загляни в UIObject, в метод createClassObject:
Код:
	function createObject(linkageName:String, id:String, depth:Number, initobj:Object):MovieClip
	{
		// trace("UIObject createObject: " + linkageName);
		return attachMovie(linkageName, id, depth, initobj);
	}
	function createClassObject(className:Function, id:String, depth:Number, initobj:Object):UIObject
	{
		var bSubClass:Boolean = (className.symbolName == undefined);

		if (bSubClass)
		{
			Object.registerClass(className.symbolOwner.symbolName, className);
		}
		var o:UIObject = UIObject(createObject(className.symbolOwner.symbolName, id, depth, initobj));

		if (bSubClass)
		{
			Object.registerClass(className.symbolOwner.symbolName, className.symbolOwner);
		}

		return o;
	}
Как видишь, ему требуется статический symbolName или symbolOwner, у которого есть symbolName. symbolName совпадает с linkage в либе, если открыть тот же Button.

А вот destroyObject:
Код:
	function destroyObject(id:String):Void
	{
		var o:MovieClip = this[id];
		if (o.getDepth() < 0)
		{
			var dt:Array = buildDepthTable();
			var i:Number = findNextAvailableDepth(0, dt, "up");
			var temp = i;	// COMPILER WORKAROUND
			o.swapDepths(temp);
		}
		o.removeMovieClip();
		delete this[id];
	}
Тут всё понятно.
В общем, заглядывать внутрь полезно.

Старый 19.11.2006, 01:46
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Хм, спасибо. Не там искал =) Почему-то решил, что это должно как-то проявлятся в кнопках\чекбоксах и т.п.

Сразу возникло 2 неприятных момента =( Я не знал, что обязательно нужно аттачить клип из библиотеки для того, чтобы создать экземпляр UIObject'a, рассчитывал програмно рисовать. Хотя, это вобщем-то поправимо...
И второе, жаль, что destroyObject просто удаляет клипы... я рассчитывал, что он будет удалять и, например, все онЕнтерфреймы\интервалы запущенные во время работы компонента. А это уже хуже. Ну да ладно, буду думать. Все равно спасибо.
__________________
Hell is the possibility of sanity

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

Регистрация: Sep 2002
Сообщений: 30,787
Интервалы нет, а onEnterFrame и так удаляется.

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

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

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


 


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


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