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

pornpunk 03.12.2010 22:08

Обращение к динамически созданным мувиклипами
 
Не совсем понятна логика AS3 при создании и работе с динамическими мувиклипами.
Есть мувиклип-класс sectionlogo, в нём есть динамически текстовы элемент logo

Код AS3:

//Обработчик XML создающий экземпляры мувиклиппа-класса "sectionlogo"
for each (var tempblock:XML in xml.links.block) {
var item = new sectionlogo();
item.x = tempblock.attribute("x");
item.y = tempblock.attribute("y");
item.logo.text = tempblock.attribute("title");
item.name="item"+String(i); //делаем имя объекту
addChild(item);
i++
}
 
///

Итак, мы создали несколько экземпляров класса.
Но как обратится к ним, не совсем понятно.
При обращении по имени, можно изменить координаты, но нельзя проследовать вглубь мувиклиппа.

Код AS3:

item.x = 666; \\ работает, изменяе координаты
item.logotext.text = "test"; \\изменяет текст вложенного объекта динамического текста logotex
getChildByName("item1").x=477 ; \\работает, изменяе координаты
getChildByName("item1").logotext.text="test" ; \\не работает, не изменяет вложенный объект динамического текста logotex

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

-De- 03.12.2010 22:14

А strict mode включен? Ошибка должна ж ещё кидаться... Вообще вам вродь поможет
Код AS3:

(getChildByName("item1") as sectionlogo).logotext.text="test";

потому что getChildByName возвращает DisplayObject, а у него нет logotext вашего.
Ну и там не пишите в кадрах, не используйте CSX для кода, учите as3, мойте руки перед едой ивсётакое...

pornpunk 03.12.2010 22:19

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

-De- 03.12.2010 22:26

Ну обычно их в массив или ещё куда запихивают, чтоб getChildByName не дёргать и имена не придумывать.
Код AS3:

var sectionlogos:Array = new Array();
for each (var tempblock:XML in xml.links.block) {
    var item:sectionlogo = new sectionlogo();//ОЧЕНЬ рекомендуется использовать только типизированные переменные, почему - можете погуглить
    item.x = tempblock.attribute("x");
    item.y = tempblock.attribute("y");
    item.logo.text = tempblock.attribute("title");
    addChild(item);
    sectionlogos.push(item);
}

Юзать:
Код AS3:

sectionlogos[0].logotext.text="test";

Ну и надо там про зоны видимости переменных почитать, про классы, этот sectionlogos наш скорее всего членом класса должен быть. Короче вообще чо за язык as3 и как на нём пишут)

pornpunk 04.12.2010 00:36

lДа, спасибо, читаю потихоньку, только очень мало понятных вещей с прмерами получается найти. обычгно все программеры какието вещи понимают априори, тоесть как будто так и должно быть, а мне ка кдизайнеру котоырй перехожит со второго на третий as оч сложно некоторые вещи понять, например что это за документ класс такой)


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

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