Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сcылка на экземпляр из библиотеки... (помогите с динамическими именами) (http://www.flasher.ru/forum/showthread.php?t=130375)

vave 24.09.2009 18:41

Сcылка на экземпляр из библиотеки... (помогите с динамическими именами)
 
Хочу достать символ из библиотеки не прямым обращением к нему, а путем регулярного выражения:

например parent.name обьекта в которого хочу импортировать символ называется:Char_01
в него будет загружен экземпляр Char_01_img

Код AS3:

import flash.display.MovieClip;
var tempName:String=parent.name+"_img";
 
trace(tempName);
var tempMC:MovieClip = flash.display.MovieClip[tempName];
 
var c= new tempMC();
addChild(c);
c.x=20;
c.y=20;

и естессно ниче не работает, вообщем нужна ссылка на обьект, имя которого регулярное выражение состоящее из имени обьекта родителя + "_img"

iNils 24.09.2009 18:46

Код AS3:

var ClassReference:Class = getDefinitionByName (tempName) as Class;
var tempMC:MovieClip= new ClassReference ();


vave 24.09.2009 18:48

о - спс

iNils 24.09.2009 18:49

только импорт flash.utils.getDefinitionByName сделайте

vave 24.09.2009 18:56

вот работающий код:
Код AS3:

import flash.display.*;
import flash.utils.getDefinitionByName;
 
var tempName:String=parent.name+"_img";
var ClassReference:Class=getDefinitionByName(tempName) as Class;
var tempMC:MovieClip = new ClassReference ();
 
//var c= new tempMC();
addChild(tempMC);
tempMC.x=0;
tempMC.y=0;

только он шлепает поверх всех слоев
а как сделать чтобы он кидал в тот слой, из которого вызван?

iNils 24.09.2009 18:58

Слоев не существует. Есть глубины, но для символов, код глубины не имеет.

vave 24.09.2009 19:00

ок, понял, создал тогда символ , положил в слой, и в нем написал parent.parent.name :)
Тогда сохраняется иерархия слоев :)
Еще раз огромное спс :)

Добавлено через 36 минут
а не подскажешь а как использовать getDefinitionByName на существующие обьекты в сцене вот код

Код AS3:

import flash.events.MouseEvent;
import flash.display.*;
import flash.utils.getDefinitionByName;
 
var cherIcon:String="";
this.D_char_bt.addEventListener(MouseEvent.CLICK,Cl_BT);
 
function Cl_BT(event:MouseEvent):void {
        trace('На позиции:' +this.name);
        cherIcon=this.name;
        var Reg_name=this.name.substr(0,6);
 
 
        for (var i=1; i<4; i++) {
 
        var ClassReference:Class=getDefinitionByName(Reg_name+i) as Class;
// как сослатся на все обьекты 
// Char_01,Char_02,Char_03,Char_04 и задать им alpha=50 ?
        }
        // тут именно этому обьекту восстанавливается альфа а все остальные останутся с alpha =50
        this.alpha=100;
}

Добавлено через 41 минуту
в AS 2 было бы : this[Reg_name+i]._alpha=50

Добавлено через 42 минуты
а в AS3 ненаю :(

Добавлено через 47 минут
А, все разобрался ! :)
parent[Reg_name+i].alpha=50


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

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