Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   получить листинг методов объекта (http://www.flasher.ru/forum/showthread.php?t=210401)

FactoREAL2 11.03.2015 00:19

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

dark256 11.03.2015 09:54

Поэкспериментируйте с недокументированным свойством объекта _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] )


silin 11.03.2015 10:44

чтобы увидеть методы, надо перебирать __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]
*/


FactoREAL2 11.03.2015 13:24

правильно ли я понимаю, что просмотр прототипа выдаст только публичные методы ? или так я увижу все методы ?

silin 11.03.2015 13:59

все методы увидите, в as2 public\private это такая условность на уровне компилятора, в итоговом swf между ними нет различия
и еще: в __proto__ будут только методы, определенные в самом классе объекта, чтобы увидеть унаследованные методы\свойства, надо смотреть __proto__.__proto__ , ну или еще дальше

FactoREAL2 11.03.2015 14:48

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

silin 11.03.2015 15:32

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

FactoREAL2 11.03.2015 16:13

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


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

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