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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

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

Регистрация: Sep 2006
Сообщений: 89
По умолчанию вызов/передача произвольной функции из класса

Всем доброго дня!

Ни как не могу найти как вызвать произвольную функцию, передаваемую параметром из класса?

Для иллюстрации проблеммы написал:
Код:
Class MyClass extends MovieClip {
         private var function,whoCalls,params;
         funcion MyClass(function,whoCalls,params) {
                this.function=function;
                this.whoCalls=whoCalls;
                this.params=params;
         }
         function Call() {
               this.whoCalls.this.function(this.params);
         }
}
Т.е. передать в класс функцию объекта (видимо с сылкой на сам объект), кот. должна вызываться.

Чем это вызвать и какие параметры/как нужно передавать классу?

Видел это но ни понял до конца как это работает:
Код:
function.call(scope,params);
Робовал передавать объект и имя функции - даже не могу передать
Спасибо за помощь.

з.ы. что-то я начал много спрашивать, но всегда стараюсь найти ответ в форуме/хелпе сначала. не всегда получается

Старый 17.05.2008, 17:11
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Также как и всегда вызывается функция, с помощью скобок ().

А как вы собираетесь передавать параметры в класс, когда этот класс наследник MovieClip, то есть через new он не создается?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 17.05.2008, 17:30
Denis Davidov вне форума Посмотреть профиль Отправить личное сообщение для Denis Davidov Найти все сообщения от Denis Davidov
  № 3  
Ответить с цитированием
Denis Davidov

Регистрация: Sep 2006
Сообщений: 89
Разобрался, оказывается была опечатка в коде - поэтмоу не работало
Сделал так (если у кого-то возникнут подобные вопросы):
В классе метод:
Код:
function setCallback(Func,scope,parameters) 
{
		this._Func=Func;
		this._scope=scope;
		this._parameters=parameters;
}
Потом внутри класса эта функция вызывается как:
Код:
this._Func.call(this._scope,this._parameters)
При этом Func - полный путь к функции, e.g. this.myObj.function
scope - путь к объекту, кот. ее вызывает e.g. this.myObj
params - параметры.

2iNils:
насчет параметров не совсем понял, елси сделать new MovieClip(), разве
нельзя указать в скобках параметры для конструктора?
Теперь уже не важно ибо сделал отдельный метод, а конструктор оставил пустым.

Старый 17.05.2008, 18:16
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от Denis Davidov Посмотреть сообщение
насчет параметров не совсем понял, елси сделать new MovieClip(), разве
нельзя указать в скобках параметры для конструктора?
new MovieClip(), а также new TextField () не создают мувиклипы и текстовые поля.
Их можно создать только с помощью методов: createEmptyMovieClip, attachMovie и createTextField
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 17.05.2008, 18:27
Denis Davidov вне форума Посмотреть профиль Отправить личное сообщение для Denis Davidov Найти все сообщения от Denis Davidov
  № 5  
Ответить с цитированием
Denis Davidov

Регистрация: Sep 2006
Сообщений: 89
я забыл, а что они (операторы new) делают? просто "фиксируют" класс переменной, что-бы потом не записать туда что-попало?

з.ы. пардон если офф-топ, но просто что-бы уж разобраться...

p/s/ они - new (e.g. new MovieClip(), new TextField(), etc)


Последний раз редактировалось Denis Davidov; 17.05.2008 в 19:52.
Старый 17.05.2008, 21:33
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Ничего не делают. Просто у класса должен быть конструктор.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 19.05.2008, 15:19
Denis Davidov вне форума Посмотреть профиль Отправить личное сообщение для Denis Davidov Найти все сообщения от Denis Davidov
  № 7  
Ответить с цитированием
Denis Davidov

Регистрация: Sep 2006
Сообщений: 89
Кстати, я так понял удобнее использовать apply чем call,
Код:
this._Func.apply(this._scope,this._parameters)
ибо call принемает параметры по одному: (...,param1, param2,....), т.е. вышеуказанный код работает только на один параметр, или параметр массив, тогда как
apply в массиве: (...,[param1,param2,...])
отличий вродебы нет...

Старый 19.05.2008, 16:12
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Я собственно только apply и использую, скобки добавить не сложно, а вот сменить call на apply, если вдруг понадобится, может отнять много времени.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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