![]() |
|
||||||||||
|
|
|
|||||
|
мне требо наследника MovieClip с событием onResize:
import McFactory; class ResizeMC extends MovieClip {
static var width:Number = null;
static var height:Number = null;
public static function create(this_mc:MovieClip, name:String, depth:Number, init_obj:Object):ResizeMC {
return ResizeMC(McFactory.create(this_mc, name, depth, init_obj, ResizeMC));
}
function ResizeMC(){
AsBroadcaster.initialize(this);//????
//this.addListener(this); - туфта полная вызывает ошибку
width = _width;
height = _height;
}
}
this["resize"] = function():Void{
if(width != _width or height != _height){
width = _width;
height = _height;
this["broadcastMessage"]("onResize");
}
}
setInterval(this, "resize", 100);
MyFactory прилагается, спасибо Denis Kolyako Последний раз редактировалось dacino; 05.01.2007 в 17:37. |
|
|||||
|
пошевелив отрафированные извилины, мой мозг выдал вот ето:
function ResizeMC(){
AsBroadcaster.initialize(this);
var mc:MovieClip = this;
mc.addListener(mc);
width = _width;
height = _height;
mc["resize"] = function():Void{//?как от сель увидеть width??
if(width != _width or height != _height){
width = _width;
height = _height;
mc.broadcastMessage("onResize");
}
}
setInterval(mc["resize"], 500);
}
Последний раз редактировалось dacino; 29.11.2006 в 17:35. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Использовать Delegate/Proxy.
И добавить функции addListener, removeListener в объявлении переменных. |
|
|||||
|
И добавить функции addListener, removeListener в объявлении переменных ??? - в переменных класса чтоль, не совсем понял тебя
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну да, public var addListener:Function; и т.п.
И зачем ссылка mc? Я не буду разбирать детально, вот как это должно было выглядеть (проще показать): class ResizeMC extends MovieClip {
private var width:Number = null;
private var height:Number = null;
private var resizeID:Number;
public static function create(this_mc:MovieClip, name:String, depth:Number, init_obj:Object):ResizeMC {
return ResizeMC(McFactory.create(this_mc, name, depth, init_obj, ResizeMC));
}
private function ResizeMC(){
super();
this.width = this._width;
this.height = this._height;
this.resizeID = setInterval(this,'resizeHandler',500);
}
private function resizeHandler():Void {
if (this.width!=this._width||this.height!=this._height) {
this.onResize();
this.width = this._width;
this.height = this._height;
}
}
public function onResize():Void {
// override
}
}
И без всяких броадкастеров ненужных. Только в твоем мувике ещё что-то должно быть, что способно изменять размер. з.Ы. Denis Kolyako — это я ![]() |
|
|||||
|
дак тогда addListener должна просто запускать таймер, если нет бродкаста...
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ты определись, кто у тебя слушатель и кто броадкастер.
|
|
|||||
|
сам клип у меня слушатель и он же бродкастер...
на этом муве расположены будут или текстовое поле или мув такого же типа, или они оба, я не как не могу сделать, чтоб при изменении размеров одного элемента меняли свой размер и положение - другие, вообще по идее меняются размеры только из-за текстовых полей, но если обрабатывать событие onChanged то надо обходить дерево неизвестной степени вложенности - не сильно хочется, вот для этого сделал мув который реагирует на изменение собственных размеров, токо тут одна проблема, мув, на нем еще один, почему, когда размер меняет верхний, его предок на это событие не реагирует Последний раз редактировалось dacino; 30.11.2006 в 15:39. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Бррр, какие заморочки. Это именно тот случай, когда нужно записать алгоритм на бумажке и выкинуть ненужное.
|
|
|||||
|
__etc - записал, и пришел к выводу, что хочеш не хочеш, а ходить по дереву - от сына(вродь так ето правильно завется) к корню всеравно прийдется, и никакой мув с ресайзом не поможет...
да и наверно я совсем деревянный: как в алгоритме, тобой предложенным, добавить еще какого-нибудь листера, главу в Гурском про действия раз пять прочитал, но в толк не возьму как создать свое самостийное событие Последний раз редактировалось dacino; 30.11.2006 в 21:09. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|