![]() |
|
||||||||||
|
|
|
|||||
|
Вообщем наступил на грабли...
требуется создать класс через его имя, откопал интересную доку: http://www.gskinner.com/blog/archive...locations.html однако, пробую: function getInstanceOf(p_fullName:String):Object
{
var classPath:Array = p_fullName.split(".");
var package:Object = _global;
var l = classPath.length-1;
for (var i:Number=0;i<l;i++)
{
package = package[classPath[i]];
}
var c:Function = package[classPath[classPath.length-1]];
var instance:Object = new c();
return instance;
}
var a = getInstanceOf("classes.map.layers.landscape");
trace (a);
stop();
не могу понять, в чём проблема... помогите, pls
__________________
Infernal error: чёрт сломал ногу, пытаясь разобраться в вашем коде --- my blog: http://batsuev.com/wp/ |
|
|||||
|
4AM Games
|
В моем случае(перед вызовом функции, создал экземпляр, для того чтобы класс импортировался) возвращает object Object, правда я вопроса не понял.
Попробуй удостовериться, что класс существует...потому что если класс не используеться, то он и не импортируеться во флэшку. function getInstanceOf(p_fullName:String):Object
{
var classPath:Array = p_fullName.split(".");
var package:Object = _global;
var l = classPath.length-1;
for (var i:Number=0;i<l;i++)
{
package = package[classPath[i]];
trace(package)
}
var c:Function = package[classPath[classPath.length-1]];
var instance:Object = new c();
return instance;
}
var b:orange.utils.FPS = new orange.utils.FPS(20);
trace(getInstanceOf("orange.utils.FPS"));
если мы напишем и в test movie нажмем crtl+shift+v то получим Цитата:
то получаем Цитата:
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
хмм... а если нет возможности создать по экземпляру класса?
каким образом тогда можно это обойти?
__________________
Infernal error: чёрт сломал ногу, пытаясь разобраться в вашем коде --- my blog: http://batsuev.com/wp/ |
|
|||||
|
4AM Games
|
как я уже сказал я не понял сути вопроса, тебе нужно создать в условиях AS1 класс написанный на AS2 ? если так то возможнсть уже присутствует(ибо тебе придеться выбрать в настройках AS2 для Flash 6 или 7) ...или я не догоняю?
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
причем тут в условиях ас1 классы ас2??? человек хочет иметь возможность по названию класса создать объект! это как раз чистый ас2
ну проблемы ты правильно указал, если нету явного упоминания класса, его и не будет в результируещем свф, так что либо в библиотеки создать пустые мувы, которые будут связаны с теми классами которые нужны или запихнуть в свф все нужные классы через мтаск - мне так кажется ![]()
__________________
:::::::::::: sump :::::::::::: |
|
|||||
|
так и думал, что придётся извращаться
![]() спасибо за идею с mtasc да и ещё один тупой вопрос из той-же серии.... как получить аргументы, передаваемые функции, достаточно просто и понятна (через arguments). А вот как эти аргументы потом передать конструктору класса в текущей функции? то есть юзание var a = getInstanceOf("classes.map.layers.landscape",val1,val2); было-бы эквивалентно var a = new classes.map.layers.landscape(val1,val2);
__________________
Infernal error: чёрт сломал ногу, пытаясь разобраться в вашем коде --- my blog: http://batsuev.com/wp/ |
|
|||||
|
в условиях AS2 создать AS2 class. Это просто пример функции, на самом деле всё это по классам пораспихано и из классов вызывается
Цитата:
__________________
Infernal error: чёрт сломал ногу, пытаясь разобраться в вашем коде --- my blog: http://batsuev.com/wp/ |
|
|||||
|
потом импорт, это больше деректива к компилятору на сокращение пути к классу, тем более все это действует только в том кадре где импорт указан, естественно в данном случае не поможет....
__________________
:::::::::::: sump :::::::::::: |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|