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

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

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

Регистрация: Sep 2013
Сообщений: 36
Question получить листинг методов объекта

Собственно, проблема описана в заголовке. Возможно ли в as2 как-то получить список всех методов (функций) объекта ? список всех параметров получаю довольно легко, простым перебором через for ... in ... а вот с методами разобраться не могу.

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

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Поэкспериментируйте с недокументированным свойством объекта _listeners
Синтаксис должен быть именно таким.

Код AS1/AS2:
var my_Obj:Object = new Object()
trace( Mouse.addListener( my_Obj ))
trace( Mouse["_listeners"] )
for ( var lst in Mouse["_listeners"]) trace( Mouse["_listeners"][lst] )
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 11.03.2015, 10:44
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 3  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
чтобы увидеть методы, надо перебирать __proto__ объекта
Код AS1/AS2:
class MyObj
{
	public var myProp:String="property",
	public function myMethod() { };
}
Код AS1/AS2:
var obj:MyObj = new MyObj();
_global["ASSetPropFlags"](obj.__proto__, null, 6, 1);
 
for ( var key:String in obj.__proto__ ) 
{
	if (typeof (obj[key ]) == "function")
	{
		trace( "key : " + key + ", value : " + obj[ key ] );
	}
 
}
/*	
key : myMethod, value : [type Function]
key : constructor, value : [type Function]
*/

Старый 11.03.2015, 13:24
FactoREAL2 вне форума Посмотреть профиль Отправить личное сообщение для FactoREAL2 Найти все сообщения от FactoREAL2
  № 4  
Ответить с цитированием
FactoREAL2

Регистрация: Sep 2013
Сообщений: 36
правильно ли я понимаю, что просмотр прототипа выдаст только публичные методы ? или так я увижу все методы ?

Старый 11.03.2015, 13:59
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
все методы увидите, в as2 public\private это такая условность на уровне компилятора, в итоговом swf между ними нет различия
и еще: в __proto__ будут только методы, определенные в самом классе объекта, чтобы увидеть унаследованные методы\свойства, надо смотреть __proto__.__proto__ , ну или еще дальше

Старый 11.03.2015, 14:48
FactoREAL2 вне форума Посмотреть профиль Отправить личное сообщение для FactoREAL2 Найти все сообщения от FactoREAL2
  № 6  
Ответить с цитированием
FactoREAL2

Регистрация: Sep 2013
Сообщений: 36
спасибо большое. попутный вопрос: можно ли узнать еще какую нибудь более подробную инфу о этих методах ? в идеале чем больше тем лучше (исходники конечно наверное врядли получится), ну хотя бы передаваемые аргументы. хоть что нибудь что сможет помочь понять как они устроены.

Старый 11.03.2015, 15:32
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
насколько я понимаю, ничего этого узнать не удастся
да и непонятен смысл затеи в рантайм пытаться понять как устроены методы - в зависимости от результата флешка сама будет решать как их использовать что ли..

Старый 11.03.2015, 16:13
FactoREAL2 вне форума Посмотреть профиль Отправить личное сообщение для FactoREAL2 Найти все сообщения от FactoREAL2
  № 8  
Ответить с цитированием
FactoREAL2

Регистрация: Sep 2013
Сообщений: 36
просто задача - изучить "черный ящик". у меня не было исходников. ну с методами разобрался по-другому: декомпиляция решила вопрос с исходным кодом. Спасибо за ответы.

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

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

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


 


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


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