Показать сообщение отдельно
Старый 05.11.2007, 02:31
Mnilionic вне форума Посмотреть профиль Отправить личное сообщение для Mnilionic Найти все сообщения от Mnilionic
  № 5  
Ответить с цитированием
Mnilionic
 
Аватар для Mnilionic

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
какие полезные штуки оказывается .callee и .apply
Спасибо, суть делегэйта я понял.
Единственное место, которое я не могу понять это
Код:
f.arg = arguments.slice(2);
f.target = obj;
f.func = func;
по отношению к функции.


попробовал сделать так:
Код:
class My_Delegate {
	static function create(target:Object, func:Function):Function {
		return function(){ func.apply(target, arguments.slice(2)) };
	}
}
делегейт работает, но 3 параметр не передаётся.

up

Разобрался... функция статичная, надо было сохранить параметры просто
сделал так и вроде работает:
Код:
class My_Delegate {
	static function create(target:Object, func:Function):Function {
		var t = target;
		var f = func;
		var a = arguments.slice(2);
		var back = function(){ f.apply(t, a) };
		return back;
	}
}

class my extends MovieClip{
	var b = "done";
	var btn:Button;
	
	function my(){
		trace("конструктор: " + b)
		btn.onPress = My_Delegate.create(this, func, btn);
	}
	 
	function func(caller){
		trace(caller);
		trace("метод: " + b);
		caller._x+=10;
	}
}
udaaff, спасибо!


Последний раз редактировалось Mnilionic; 05.11.2007 в 02:54.