Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.12.2005, 00:07
profi80 вне форума Посмотреть профиль Отправить личное сообщение для profi80 Найти все сообщения от profi80
  № 1  
Ответить с цитированием
profi80

Регистрация: Dec 2005
Сообщений: 86
По умолчанию Когда нужно использовать .apply?

Смысл использования .apply: в Help'e сказано указывает значение this, которое будет использовано внутри какой-либо функции, вызываемой в ActionScript.
Если мне например нужно чтобы в функции this указывал на тот объект из которого функция вызывалась (а у меня это либо _root либо мувиклип), мне нужно вызывать функцию так:

Код:
Function.apply(this, [param1, param2, param3]);
А так я могу из своей функции менять свойства "родителя" функции (например, мувиклипа):

Код:
this._x --;
Всё правильно?

И только для этого используется .apply?

Извиняюсь, если задал немного ламерский вопрос, но для меня он очень важен (думаю, что для всех начинающих также).
__________________
а все-таки AS3 лучше!

Старый 07.12.2005, 01:32
Смольный (Smolniy) вне форума Посмотреть профиль Отправить личное сообщение для Смольный (Smolniy) Посетить домашнюю страницу Смольный (Smolniy) Найти все сообщения от Смольный (Smolniy)
  № 2  
Ответить с цитированием
Смольный (Smolniy)
Человек и Здание
 
Аватар для Смольный (Smolniy)

администратор
Регистрация: Aug 1999
Адрес: Москау-сити, Рассея
Сообщений: 4,671
Отправить сообщение для Смольный (Smolniy) с помощью ICQ
Скорее оно используется для вызова из класса (object в документации, т.е. любого класса, в т.ч. и МС).
Или вариант, когда функция прописана в одном месте, и оперирует this-ом, а при вызове хотелось бы чтобы она отработала "в другом scope".
Мне несколько раз доводилось использовать, но уже не вспомню контекста. Так или иначе, можно в конструктор класса вставить хэндлер функции - а то и прямо в экземпляр, даже не затрагивая конструктор - и вызывать ее как метод. Получится то же самое, только дополнительные хэндлеры, да они каши не просят...
__________________
Регардсы.

Старый 07.12.2005, 01:56
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 3  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Код:
//создаем функцию которая будет рисовать шарик
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])
}
Так же есть более продвинутый вариант - mx.utils.Delegate
в случае с делегатом будет выглядеть так
Код:
//создаем функцию которая будет рисовать шарик
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);
Прочитать про Tween можно тут
про Delegate тут
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 07.12.2005, 02:41
profi80 вне форума Посмотреть профиль Отправить личное сообщение для profi80 Найти все сообщения от profi80
  № 4  
Ответить с цитированием
profi80

Регистрация: Dec 2005
Сообщений: 86
Цитата:
Сообщение от Nirth
Код:
//создаем функцию которая будет рисовать шарик
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])
}
Так значит я был прав на счёт применения .apply? Мне пример один срочно надо разобрать, так в нём чувак почти повсеместно использует этот .apply - это плохо? (влияет на расход памяти/быстродействие)?

Кстати, область видимости между .as файлами не изменяется?

To Смольный: классы я пока не использую, и в том примере их тоже нет. Но, повторяюсь, там этот .apply очень часто используется.
__________________
а все-таки AS3 лучше!

Старый 07.12.2005, 02:46
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 5  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Код:
Так значит я был прав на счёт применения .apply? Мне пример один срочно надо разобрать, так в нём чувак почти повсеместно использует этот .apply - это плохо? (влияет на расход памяти/быстродействие)?
я не знаю точно, но теоритически это метод класса Function, так что должен жрать больше, нежели просто вызов функции.

Код:
Кстати, область видимости между .as файлами не изменяется?
вот этого я не понял, что ты имел ввиду под as файлами? классы, если да то получаеться что меняеться(ибо у каждого класса будут свои экземпляры - следовательно разные области видимости)
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.