Просмотр полной версии : получить листинг методов объекта
FactoREAL2
11.03.2015, 00:19
Собственно, проблема описана в заголовке. Возможно ли в as2 как-то получить список всех методов (функций) объекта ? список всех параметров получаю довольно легко, простым перебором через for ... in ... а вот с методами разобраться не могу.
Поэкспериментируйте с недокументированным свойством объекта _listeners
Синтаксис должен быть именно таким.
var my_Obj:Object = new Object()
trace( Mouse.addListener( my_Obj ))
trace( Mouse["_listeners"] )
for ( var lst in Mouse["_listeners"]) trace( Mouse["_listeners"][lst] )
чтобы увидеть методы, надо перебирать __proto__ объекта
class MyObj
{
public var myProp:String="property",
public function myMethod() { };
}
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
правильно ли я понимаю, что просмотр прототипа выдаст только публичные методы ? или так я увижу все методы ?
все методы увидите, в as2 public\private это такая условность на уровне компилятора, в итоговом swf между ними нет различия
и еще: в __proto__ будут только методы, определенные в самом классе объекта, чтобы увидеть унаследованные методы\свойства, надо смотреть __proto__.__proto__ , ну или еще дальше
FactoREAL2
11.03.2015, 14:48
спасибо большое. попутный вопрос: можно ли узнать еще какую нибудь более подробную инфу о этих методах ? в идеале чем больше тем лучше (исходники конечно наверное врядли получится), ну хотя бы передаваемые аргументы. хоть что нибудь что сможет помочь понять как они устроены.
насколько я понимаю, ничего этого узнать не удастся
да и непонятен смысл затеи в рантайм пытаться понять как устроены методы - в зависимости от результата флешка сама будет решать как их использовать что ли..
FactoREAL2
11.03.2015, 16:13
просто задача - изучить "черный ящик". у меня не было исходников. ну с методами разобрался по-другому: декомпиляция решила вопрос с исходным кодом. Спасибо за ответы.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.