![]() |
|
||||||||||
|
|||||
|
[+1 14.08.08]
[+1 20.08.08] |
вот типичный пример, когда область видимости не такая, как хотелось бы:
class game.WinMove {
var mov:MovieClip;
function WinMove (){
trace ("инициализация WinMove");
mov=_root.attachMovie ("shared_skin_move","mc_move",_root.getNextHighestDepth());
mov.btnCancel.onPress=function (){ trace ("вызываю cancel"); this.cancel (); }
...}
...
function cancel (){
mov._visible=false;
}
}
__________________
~ Never trouble trouble till trouble troubles you! |
|
|||||
|
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
|
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
|
|
|||||
|
[+1 14.08.08]
[+1 20.08.08] |
ну import, Это понятно =)
ааа... какой кайф.а то я уже устал передавать в мувик, где происходит событие ссылку на класс, которому это событие нужно принять. я так понял, что в AS3 этой проблемы не существет в принципе?
__________________
~ Never trouble trouble till trouble troubles you! |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
В AS3 все на событийной модели и нету таких обработчиков типа onRelease = function. И вызываемые методы связаны с областью видимости класса, в котором они объявлены.
|
|
|||||
|
[+1 14.08.08]
[+1 20.08.08] |
а как переделать с Delegate такой случай?
var cur:MovieClip=mov.defence[bodyParts[i]+"Point"];
cur.partName=bodyParts[i]; cur.move=this;
cur.onRelease = function (){ this.move.pointClicked ("defence",this.partName); }
то естественно в onRelease будет вызываться РЕЗУЛЬТАТ выполенеия функции pointClicked. а как правильно? ЗЫ: _etc, сочувствую Вашей аське. но говорят АОЛ восстанавливала бэкап базы 11 числа, и Ваш номерочек могли восстановить. правда, возможно уже с другим паролем ;-)
__________________
~ Never trouble trouble till trouble troubles you! |
|
|||||
|
Нет просто нужно немного класс Delegate поправить, что б параметры передавать.
Мне тут iNils недавно писал его, поищите.
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Не восстановили мой номер
Что касается Delegate, то лично я использую класс ascb.util.Proxy, выкладывал на форуме. Последний раз редактировалось etc; 12.05.2007 в 13:27. |
|
|||||
|
[+1 14.08.08]
[+1 20.08.08] |
я уже нашел мод iNils'a. работает. иНилс - папа =)
если ком интересно, то вот ссылка http://www.flasher.ru/forum/showpost...63&postcount=2 на самом деле, мне кажется такие вещи надо ложить в ЧаВО. 2_etc: соболезную. ну... немецкие хакеры отдохнули 9 мая, что скажешь. даже некоторые девятки, светившиеся на форумах были убиты =(
__________________
~ Never trouble trouble till trouble troubles you! |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Я слегка его модифицировал.
/**
* Класс ru.inils.util.Delegate, модифицированный mx.utils.Delegate. Выполнение функции в заданной области видимости с передачей параметров.
*
* @author iNils
* @version 1.1
* @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:Object = arguments.callee.target;
var funcTemp:Function = arguments.callee.func;
var argTemp:Array = null;
if (arguments.callee.arg) {
argTemp = arguments.callee.arg;
} else {
argTemp = arguments;
}
return funcTemp.apply (targetTemp, argTemp);
};
f.target = obj;
f.func = func;
f.arg = arg;
return f;
}
}
Последний раз редактировалось iNils; 13.05.2007 в 20:46. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:45. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|