![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну раз про него, то опять же, переместить назначение onPress в другое место нельзя, ссылку убить нельзя и т.п. В общем — не вариант.
|
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
function createDelegate (obj:Object, func:Function, arg:Array):Function {
var f = function () {
var target = arguments.callee.target;
var func = arguments.callee.func;
var arg = arguments.callee.arg;
return func.apply (target, arg);
};
f.target = obj;
f.func = func;
f.arg = arg;
return f;
}
function func () {
trace (arguments);
}
var mc:MovieClip = this.createEmptyMovieClip ('mc', 1);
with (mc) {
beginFill (0xFF3366);
lineTo (100, 0);
lineTo (100, 100);
lineTo (0, 100);
lineTo (0, 0);
endFill ();
}
var self:Object = this;
mc.onPress = createDelegate (this, func, [mc,2])
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
artcraft, я имел ввиду, что нельзя убивать вспомгательную ссылку, а вместе с этим и перенести всю функцию куда-нибудь ещё…
|
|
|||||
|
:~)
ну это и коню понятно что можно всё в один столбик написать без всяких импортов.... не в этом вопрос - вопрос: в чём конкретно проблема области видимости, "кривого" cпособа? до меня не доходит - чем он хуже?
__________________
Хороший отдых - половина работы. |
|
|||||
|
Цитата:
что такое вспомогательная ссылка? как это сделать правильным способом?
__________________
Хороший отдых - половина работы. |
|
|||||
|
а... дошло (плохо башка варит к ночи) вспомогательня ссылка это:
так а зачем её удалять - она что много памяти съедает? кому они мешает?
__________________
Хороший отдых - половина работы. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Да никак — юзать Delegate/Proxy и не мучаться.
Проблема «кривого» способа в том, что внутри вспомгательной функции this ссылается вовсе не на то, что нам нужно, поэтому и создается лишний мусор, вроде self. |
|
|||||
|
и куда её еще переносить?
для привязывания функции любым из методов нужна ссылка на функцию и ссылка на то что будет для неё this-ом function createDelegate (obj:Object, func:Function, arg:Array):Function {
var f = function () {
var target = arguments.callee.target;
var func = arguments.callee.func;
var arg = arguments.callee.arg;
return func.apply (target, arg);
};
f.target = obj;
f.func = func;
f.arg = arg;
return f;
}
mc.onPress = createDelegate (this, func, params);
при "плохом" методе мы имеем болше символов и 2-е строки да согласен "правилный" метод нагляднее, но реально кода больше см. коммент#24 (хотя, безусловно нас это не волнует т.к. это менее важно чем читаемость кода) то что находится внутри вспомогательной функции не важно - туда ничего добавлять и не надо... потому она и вспомогательная. "правильный" способ - это ведь тоже вспомогательная функция, там ведь никто не стремится ничего менять... пока не вижу критических различий только чистоплюйство...
__________________
Хороший отдых - половина работы. Последний раз редактировалось artcraft; 29.11.2006 в 03:28. |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|