Просмотр полной версии : Наследование от UIObject'a
Подскажите пожалуйста такую вещь: в принципе ведь ЮИ-компоненты от ММ наследуют UIObject? Хочу поробовать создать свой компонент. Но вот что не могу понять. При создании, компонент просит дать ему имя, после чего к этому компоненту можно будет по этому имени обращаться. Не могу понять механизм. Чему присваивается это самое имя (какой переменной)? Т.е. как сделать так, чтобы мой компонент тоже можно было создать через createClassObject() ну и удалить через destroyObject()?
Заранее спасибо.
Загляни в 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];
}
Тут всё понятно.
В общем, заглядывать внутрь полезно.
Хм, спасибо. Не там искал =) Почему-то решил, что это должно как-то проявлятся в кнопках\чекбоксах и т.п.
Сразу возникло 2 неприятных момента =( Я не знал, что обязательно нужно аттачить клип из библиотеки для того, чтобы создать экземпляр UIObject'a, рассчитывал програмно рисовать. Хотя, это вобщем-то поправимо...
И второе, жаль, что destroyObject просто удаляет клипы... я рассчитывал, что он будет удалять и, например, все онЕнтерфреймы\интервалы запущенные во время работы компонента. А это уже хуже. Ну да ладно, буду думать. Все равно спасибо.
Интервалы нет, а onEnterFrame и так удаляется.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.