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

vave 02.02.2011 06:51

Аттач из библиотеки символа не зная его имени...
 
Всем привет...
Сломал голову, как сделать следующее?:

например в библиотеке есть символы:
Simvol1, Simvol2, Simvol3, Simvol4, ...

и вот мне скажем нужно рандомно загрузить какой-то из них...
модель:

Код AS3:

var a = new Simvol2
addChild(a);

не прокатит так как я знаю имя символа...
нужно что-то типа этого

Код AS3:

var b = 1
var c = Simvol
var d = "Simvol"+b
var a = new MovieClip
a.name = d
addChild(a);

пример не очень удачен но смысл в том, чтобы добавить клип имя которого заранее не известно и в последствии является просто строкой


кто поможет?

Srednas 02.02.2011 08:16

Может сначала поместить символы в массив, а затем рандомно выбрать? Как вариант.

vave 02.02.2011 08:22

смысл в том что например имя символа генерится, и скажем символов может быть 100500, и функция генерации например тоже может менятся в ходе скрипта.
Или вот например

у меня есть 10 символов и именами вася1, вася2, вася3... петя8, петя10...
они размещены на временной шкале
в каждом из них код например - загрузить в себя клип из библиотеки имя которого: первая буква имени+цифра, тоесть в вася1 загрузить в1, в вася2 - в2 ,в3... п8, п10... ?

cleptoman 02.02.2011 08:39

getDefinition

vave 02.02.2011 08:40

спс, но нельзя ли поподробнее...
внятной информации во флешь хэлп не нашел :(
хотябы синтаксис

как-то так?:

Код AS3:

var NewDefName:MovieClip = getDefinitionByName("ВАСЯ1") as MovieClip;
addChild(NewDefName);

пишет:

1120: Обращение несуществующего свойства InsertToThis.



оригинальный код:


Код AS3:

import flash.display.*;
import flash.utils.getDefinitionByName;
 
var indexOfName = this.name.charAt(3);
var tempVARname = "BoxInside_" + indexOfName;
var NewDefName:MovieClip = getDefinitionByName("tempVARname") as MovieClip;
this.addChild(InsertToThis);


cleptoman 02.02.2011 08:55

1 - у вас нет InsertToThis, чтобы его добавлять на сцену (откуда вы его вообще взяли?)
2 -
Код AS3:

var tempVARname:String = "BoxInside_" + String(indexOfName);
var NewDefName:MovieClip = new (getDefinitionByName(tempVARname) as Class)() as MovieClip;
this.addChild(NewDefName);


vave 02.02.2011 09:00

код сам наваял :(

все поправил но теперь:

ReferenceError: Error #1065: Переменная tempVARname не определена.

при трейсе содержание переменной выдает правильное, почему ругаетсо то?

cleptoman 02.02.2011 09:03

я чуть поправил, попробуйте.

п.с. - внимательнее с типизацией )

vave 02.02.2011 09:06

а какой тип ставить если не строку? если хочу к строке прибавить литеру
попробовал вставить выражение в гетдифонитион и заработало :)

Код AS3:

var NewDefName:MovieClip = new (getDefinitionByName("BoxInside_" + indexOfName) as Class)() as MovieClip;

но я не знаю к каком типу отнести выражение!!!!!!!!!!!!

пс. все-равно ОГРОМНОЕ СПАСИБО, весь моск болит - замучался

Добавлено через 6 минут
[8:11:47] Egorov M: клептому привет
[8:11:53] Egorov M: респект и уважуха
[8:11:55] Egorov M: :)
[8:11:59] Egorov M: клептоману*

от друга :)

ChuwY 02.02.2011 12:53

Код AS3:

var boxClassName : String =  "BoxInside_" + indexOfName;
var boxClass        : Class  = getDefinitionByName(boxClassName ) as Class;
var newBox        : MovieClip = new boxClass() as MovieClip;



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

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