![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2005
Сообщений: 86
|
Смысл использования .apply: в Help'e сказано указывает значение this, которое будет использовано внутри какой-либо функции, вызываемой в ActionScript.
Если мне например нужно чтобы в функции this указывал на тот объект из которого функция вызывалась (а у меня это либо _root либо мувиклип), мне нужно вызывать функцию так: А так я могу из своей функции менять свойства "родителя" функции (например, мувиклипа): Всё правильно? И только для этого используется .apply? Извиняюсь, если задал немного ламерский вопрос, но для меня он очень важен (думаю, что для всех начинающих также).
__________________
а все-таки AS3 лучше! |
|
|||||
|
Человек и Здание
|
Скорее оно используется для вызова из класса (object в документации, т.е. любого класса, в т.ч. и МС).
Или вариант, когда функция прописана в одном месте, и оперирует this-ом, а при вызове хотелось бы чтобы она отработала "в другом scope". Мне несколько раз доводилось использовать, но уже не вспомню контекста. Так или иначе, можно в конструктор класса вставить хэндлер функции - а то и прямо в экземпляр, даже не затрагивая конструктор - и вызывать ее как метод. Получится то же самое, только дополнительные хэндлеры, да они каши не просят...
__________________
Регардсы. |
|
|||||
|
4AM Games
|
//создаем функцию которая будет рисовать шарик
function drawBall(x:Number,y:Number):MovieClip {
var depth:Number = _root.getNextHighestDepth();
var result:MovieClip = _root.createEmptyMovieClip("ball"+depth+"_mc",depth);
result.lineStyle(35,0xFF6600);
result.moveTo(x,y);
result.lineTo(x+.5,y+.5);
return result;
}
//рисуем два шарика
var mc1:MovieClip = drawBall(50,50);
var mc2:MovieClip = drawBall(50,100);
//создаем метод animate который будет двигать шарик
function animate(s:Number,e:Number):Void {
new mx.transitions.Tween(this,"_x",mx.transitions.easing.Elastic.easeOut,s,e,30);
}
//теперь присобачиваем его к двум мувикам
mc1.onPress = function () {
_root.animate.apply(this,[100,200])
}
mc2.onPress = function () {
_root.animate.apply(this,[50,300])
}
в случае с делегатом будет выглядеть так //создаем функцию которая будет рисовать шарик
function drawBall(x:Number,y:Number):MovieClip {
var depth:Number = _root.getNextHighestDepth();
var result:MovieClip = _root.createEmptyMovieClip("ball"+depth+"_mc",depth);
result.lineStyle(35,0xFF6600);
result.moveTo(x,y);
result.lineTo(x+.5,y+.5);
return result;
}
//рисуем два шарика
var mc1:MovieClip = drawBall(50,50);
var mc2:MovieClip = drawBall(50,100);
//создаем метод animate который будет двигать шарик
function animate():Void {
new mx.transitions.Tween(this,"_x",mx.transitions.easing.Elastic.easeOut,50,100,30);
}
//теперь присобачиваем его к двум мувикам
mc1.onPress = mx.utils.Delegate.create(mc1,animate);
mc2.onPress = mx.utils.Delegate.create(mc2,animate);
про Delegate тут
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 86
|
Цитата:
Кстати, область видимости между .as файлами не изменяется? To Смольный: классы я пока не использую, и в том примере их тоже нет. Но, повторяюсь, там этот .apply очень часто используется.
__________________
а все-таки AS3 лучше! |
|
|||||
|
4AM Games
|
Так значит я был прав на счёт применения .apply? Мне пример один срочно надо разобрать, так в нём чувак почти повсеместно использует этот .apply - это плохо? (влияет на расход памяти/быстродействие)? вот этого я не понял, что ты имел ввиду под as файлами? классы, если да то получаеться что меняеться(ибо у каждого класса будут свои экземпляры - следовательно разные области видимости)
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|