Форум 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=212979)

hebep1982 09.06.2016 11:30

Динамическое имя класса
 
Доброго время суток.
Подскажите как можно ли создать класс с динамическим именем и возможно ли вообще это в AS3. Просто хочу сделать чтоб без switch а сразу создавалось нужный класс отображения. Помню была такая функция evel() ...

Как-то так:

Код AS3:

var obj=new ["ДинамическоеИмяКласса"]();


Tails 09.06.2016 11:42

Лучше объясните суть вашей задачи, вам подскажут правильное решение. Вот так никто не делает, поэтому и класс создать в рантайме не получится.

faraday 09.06.2016 12:12

как-то так
Код AS1/AS2:

new Class(getDefinitionByName('className'))


Tails 09.06.2016 12:13

Тогда зачем вам его создавать? Для получения ссылки на класс используйте getDefinitionByName().

hebep1982, Вам нужно было создать экземпляр имеющегося класса, а не сам класс. Это совершенно разные вещи, не путайте их.

hebep1982 09.06.2016 12:18

Если кратко то ДинамическоеИмяКласса это по сути мувиклип для отображения, у каждого региона свое отображение а реализация одна. Я пытаюсь создать карту мира где все "регионы" известы и просто хочу для краткости кода, да и пример интересный попался на глаза

Код AS1/AS2:

var s:String = "Number";
var e1 = new (eval(s))(6);
trace(e1); //traces: 6


undefined 09.06.2016 12:56

это код из as1/2. В as3 eval выпилили за ненадобностью.Как сказали выше getDefinitionByName - то что тебе надо.

Добавлено через 1 минуту
Цитата:

Сообщение от faraday (Сообщение 1194710)
как-то так
Код AS1/AS2:

new Class(getDefinitionByName('className'))


А где аргументы конструктора?

hebep1982 09.06.2016 21:20

Цитата:

Сообщение от undefined (Сообщение 1194713)
А где аргументы конструктора?

Вот так вот)

Код AS3:

var myClass:Class = flash.utils.getDefinitionByName("myCustomClass") as Class;
var mcTemp:MovieClip = new myClass();  <- сюда аргументы


caseyryan 10.06.2016 06:28

Зачем там аргументы? Подход тупиковый. Такие классы должны быть либо без аргументов вообще, либо все с одинаковым набором аргументов. Иначе как можно знать какие аргументы принимает конструктор, но при этом не знать какой там класс?


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

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