Вход

Просмотр полной версии : onPress+Delegate


CorC
19.04.2007, 16:35
Здавствуйте, многоуважаемые.
Есть такая проблемма, часа 2 уже бьюсь. Есть класс, его прилепляю к мувику в котором есть другой мувик, и на вложенный мувик на onPress надо создавать Delegate. Создается отлично и переменные класса видит, но почему то не видит тот объект от которого вызывался.

import mx.utils.Delegate;
class TTT extends MovieClip {
var button1:MovieClip;//есть такая кнопка в мувике
public function TTT(){
this.button1.onPress=Delegate.create(this,Button1Press);//delegate собственно
}
function Button1Press(ThisO:Object){
this.button1._x=0;//видит, понятно почему, и двигает в 0
ThisO.gotoAndStop(2);//очень надо с ним пообщаться :)
trace(ThisO);//undefined, просто, а не [object]
}
}

Помогите, пожалуйста, чем можете :) Что я не так пишу?

iNils
19.04.2007, 16:41
/**
* Класс ru.inils.util.Delegate, модифицированный mx.utils.Delegate. Выполнение функции в заданной области видимости с передачей параметров.
*
* @author iNils
* @version 1.0
* @see mx.utils.Delegate
*/
class ru.inils.util.Delegate extends Object {
/**
* Передача событий от любого объекта к любому объекту.
*
* @usage public static create (obj:Object, func:Function, arg:Array) : Function
* @param obj Object - Объект, целевая область видимости.
* @param func Function - Метод, обработчик данного объекта.
* @param arg Array [дополнительный параметр] - Массив передаваемых аргументов.
* @return Function - Функция обработчик.
*/
public static function create (obj:Object, func:Function, arg:Array):Function {
var f = function () {
var targetTemp = arguments.callee.target;
var funcTemp = arguments.callee.func;
var argTemp = arguments.callee.arg;
return funcTemp.apply (targetTemp, argTemp);
};
f.target = obj;
f.func = func;
f.arg = arg;
return f;
}
}
import ru.inils.util.Delegate;
class TTT extends MovieClip {
var button1:MovieClip;
//есть такая кнопка в мувике
public function TTT () {
this.button1.onPress = Delegate.create (this, Button1Press, [{x:5, y:6}]);
//delegate собственно
}
function Button1Press (ThisO:Object) {
this.button1._x = 0;
//видит, понятно почему, и двигает в 0
ThisO.gotoAndStop (2);
//очень надо с ним пообщаться :)
trace (ThisO.x);
//undefined, просто, а не [object]
}
}

etc
19.04.2007, 16:57
Ужыс.

iNils, по-моему, это не совсем то.

CorC, в onRelease никаких параметров не передается. Ты же можешь обратиться к button1, так ведь? Что ещё нужно?

CorC
19.04.2007, 17:05
Как ни странно, работает :) Спасибо, а я велосипед изобретал 2 часа...