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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.04.2012, 17:46
dsQuadro вне форума Посмотреть профиль Отправить личное сообщение для dsQuadro Посетить домашнюю страницу dsQuadro Найти все сообщения от dsQuadro
  № 1  
Ответить с цитированием
dsQuadro
 
Аватар для dsQuadro

Регистрация: Feb 2008
Адрес: Москва
Сообщений: 238
Отправить сообщение для dsQuadro с помощью ICQ
По умолчанию как имея ссылку на функцию узнать экземпляр класса в котором эта функция вызовется?

Добрый день!
хочется узнать возможно ли такое: допустим я передаю в какой-то метод ссылку, как при подписке на событие. Можно ли как нибудь получить ссылку на экземпляр класса из этой функции, или такое в принципе не возможно?

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

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Мне приходит в голову только один вариант пока:
вызвать ошибку, поймать, распарсить.
Ошибку вызываем, передавая в apply массив параметров длиной на 1 больше, чем в свойстве length этого метода.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 10.04.2012 в 17:58.
Старый 10.04.2012, 17:54
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 3  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
нельзя.
Просто передавайте сам объект, а у него уже вызывайте функцию. Если очень надо конечно

Старый 10.04.2012, 18:00
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 4  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
на ум пришло Ссылка на инициализатор метода, но что-то мне подсказывает, что это не то.
__________________
местонахождение

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
конкретного экземпляра при этом только не узнаешь. Да и ссылку не получишь.

Честно говоря, вопрос который задал топик-стартер, говорит от том, что стоит пересмотреть "архитектуру"

Старый 10.04.2012, 18:08
dsQuadro вне форума Посмотреть профиль Отправить личное сообщение для dsQuadro Посетить домашнюю страницу dsQuadro Найти все сообщения от dsQuadro
  № 6  
Ответить с цитированием
dsQuadro
 
Аватар для dsQuadro

Регистрация: Feb 2008
Адрес: Москва
Сообщений: 238
Отправить сообщение для dsQuadro с помощью ICQ
тут не о архитектуре вопрос, он скорее теоретический... мысли возникали, вот и решил спросить возможно ли такое...

Старый 10.04.2012, 18:13
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 7  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
идеологически нельзя знать кто вызвал у тебя метод. Смысл в том что поведение данного метода не должно зависеть от того кто его вызвал. Если объекту сказали ехать, то он должен ехать вне зависимости от того кто ему такое сказал.
__________________
:)

Старый 10.04.2012, 18:17
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 8  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Ну как-то так:

Код AS3:
private function getClassByMethod(method : Function):Class{
  var message    : String;
  var strarr     : Array;
  var methodname : String;
  var className  : String;
 
  // получаем сообщение
  try{
    method.apply(null, new Array(method.length+1));
  } catch(error : ArgumentError){
    message = error.message;
  }
 
  // отрезаем лишнюю часть после метода
  strarr = message.split("(");
  message = strarr[0];
 
  // отрезаем лишнюю часть до метода
  strarr = message.split(" ");
  methodname = strarr[strarr.length-1];
  className  = methodname.split("/")[0];
 
  return getDefinitionByName(className) as Class;
}
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 10.04.2012 в 18:32.
Старый 10.04.2012, 18:20
dsQuadro вне форума Посмотреть профиль Отправить личное сообщение для dsQuadro Посетить домашнюю страницу dsQuadro Найти все сообщения от dsQuadro
  № 9  
Ответить с цитированием
dsQuadro
 
Аватар для dsQuadro

Регистрация: Feb 2008
Адрес: Москва
Сообщений: 238
Отправить сообщение для dsQuadro с помощью ICQ
2Aquahawk: это ответ скорее на вопрос из соседней ветки

я же спрашиваю как узнать обладателя функции, а не того кто вызывает эту функцию.
тоесть:
Код AS3:
class A{
    public function setCallBack(func:Function):void{
        // тут надо узнать кому принадлежит func
    }
}
Добавлено через 6 минут
2ChuwY: спасибо, я понял что ты предложил в первый раз... интересный вариант, но он дает нам понимание того какому КЛАССУ принадлежит эта функция, а не ссылку на ЭКЗЕМПЛЯР КЛАССА которому принадлежит присланная функция.

а по архитектуре зачем моглобы такое пригодиться(к сожалению, получается что не прокатит), можно было бы сделать обертку эвент диспетчеру, который подписчиков заносил бы в массив, а потом вызвав метод и передав в него себя, можно было бы отписаться сразу от всего к чему подписан.
Понимаю что можно по разному этот вопрос решить...

Старый 10.04.2012, 19:48
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
В дебаг версии и в доверенном окружении можно получить через getSavedThis.
__________________
משיח לא בא
משיח גם לא מטלפן

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

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

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


 


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


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