Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Привести строку к имени объекта. Возможноли? (http://www.flasher.ru/forum/showthread.php?t=130896)

AlexsWulf 08.10.2009 01:42

Привести строку к имени объекта. Возможноли?
 
Доброго времени суток.
Столкнулся со следующей проблемой:
Делаю динамическое попуп окно. Содержимое окна берется из XML файла.
Например в нем находятся имена объектов.
При создании окна мне нужно по этому имени вызвать соответствующий конструктор объекта.
Например
Код AS3:

public function createContent(name_prod : String, src_prod : Sprite, money_prod : uint, gold_money : uint, loadel : uint) : void {
                        var name_o : w_name_object = new w_name_object();
                        name_o.setName(name_prod);
                        name_o.x = w_win.x/2-100;
                        name_o.y = w_win.y / 2 - 150 + (60 * loadel);
                        this.addChild(name_o);
 
                        var obj : Sprite = new src_prod(); //в данной строке ошибка
                        obj.x = name_o.x - 100;
                        obj.y = name_o.y;
                        this.addChild(obj);
                }

Соответственно он выдает ошибку в строке
Код AS3:

var obj : Sprite = new src_prod()

.
Подскажите как правильно сделать?
Заранее благодарю за ответ.

Kuruki 08.10.2009 01:44

Код AS3:

getDefinitionByName


AlexsWulf 08.10.2009 02:05

Спасибо огромное за подсказку.

Но что то я не пойму
пишу
Код AS3:

var obj_name : Class = Class(getDefinitionByName(src_prod));
var obj : Sprite = Sprite(new obj_name());

выдает ошибку
Код:

ReferenceError: Error #1065: Variable o_apple is not defined.
Если пишу
Код AS3:

var obj : Sprite = new o_apple();

то все работает.

Что я не так сотворил?

7thsky™ 08.10.2009 11:30

Так вроде ж по вашему коду src_prod это ж экземпляр Sprite'а?
Вы хотите чтобы метода создал дупликат спрайта?

Код AS3:

var Clazz : Class = src_prod.constructor;
var obj : Sprite = new Clazz ();


AlexsWulf 08.10.2009 16:31

Вообщем так ничего у меня и не получилось :(
Код AS3:

public function createContent(name_prod : String, src_prod : String, money_prod : uint, gold_money : uint, loadel : uint) : void {
                        var obj_name : Class = getDefinitionByName(src_prod) as Class;
                }

выдает ошибку
Код:

ReferenceError: Error #1065: Variable o_apple is not defined.
Подскажите что не так?

etc 08.10.2009 19:52

Очевидно, класса o_apple нет во флешке.

Felicast 08.10.2009 19:57

там нужно еще пакет указывать. точно не помню, но просто по названию класса он не найдет

AlexsWulf 08.10.2009 20:10

Компонент o_apple лежит в библиотеке и прилинкован к классу o_apple.

import main.o_apple;
не помогает, выдает туже ошибку.

если просто писать
Код AS3:

var test: Sprite = new o_apple();

то все работает
Ни как не пойму в чем проблема (

etc 08.10.2009 22:31

Проблема в том, что в коде класс o_apple никак не фигурирует. Импорта недостаточно, должно быть хоть какое-то использование, можно просто написать где-нибудь в коде название класса (не в строке!), чтобы он попал во флешку.

AlexsWulf 08.10.2009 23:57

Что значит не в строке?


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

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