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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Sep 2003
Сообщений: 21
По умолчанию Рефлекшн

для тех кто не знает Reflection ето механизм выковыривания
информации о членах у обьекта в рунтайме

Иногда помогает при отладке или при обследовании
чужого кода
------Reflection.as---------
function PrintMembers(obj)
{
var info_array = GetTypeInfo(obj);
Trace("\nFunctions:")
for(var i=0;i<info_array.length;i++)
if(info_array[i].memberType=="function")
Trace("\tmemberName="+info_array[i].memberName+" , "+
"memberType="+info_array[i].memberType+" , "+
"memberValue="+info_array[i].memberValue
);
Trace("\nFields:")
for(var i=0;i<info_array.length;i++)
if(info_array[i].memberType!="function")
Trace("\tmemberName="+info_array[i].memberName+" , "+
"memberType="+info_array[i].memberType+" , "+
"memberValue="+info_array[i].memberValue
);

}
function SetParentClass(child,parent)
{
var exec="child";
while(eval(exec+".__proto__.__proto__"))
exec+=".__proto__";
(eval(exec)).__proto__=parent;
}
function TypeInfo(_memberName,_memberType,_memberValue)
{
this.memberName = _memberName;
this.memberType = _memberType;
this.memberValue = _memberValue;
}
function GetTypeInfo(type)
{
var dummy = new LoadVars();
SetParentClass(type,dummy);
var result_array=new Array();
var dummy_array = type.toString().split("&");
for(var i=0;i<dummy_array.length;i++)
{
var item_str = dummy_array[i];
var mName=unescape(item_str.substring(0,item_str.indexOf("=",2)));
result_array.push(new TypeInfo(mName,typeof(eval("type."+mName)),eval("type."+mName)));
}
return result_array;
}
----------------------------
пример использования
кидаем календарь на мувик даем иму имя например mcalendar
пишем
#include "Reflection.as"
PrintMembers(mcalendar);

если ктонить реализовывал рефлекшн по другому
(я иначе не смог) плиз пишите с удовольствием посмотрю

кстати некоторые функции используются у меня не только
для выковыривания членов обьектов
вот например функция
function SendReceive(_url_,callback,obj)
{
var _send = new LoadVars();
_send.OnLoad=callback;
SetParentClass(obj,_send);
obj.sendAndLoad(_url_, obj, "POST");
}
пример использования

SendReceive(_root._path,parseRes,{uid:_root.userID,
key:_root.guidKey,
opID:"receive"
});
я думаю смысл понятен(весь прикол в третьем параметре)


Всем счастливо.....

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

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

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


 


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


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