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

Castro 08.11.2010 20:05

Можно ли изменить порядок элементов?
 
Заливаю мувик цветом, а потом вставляю туда динамическое текстовое поле со значением в этот мувик ( из примера на http://help.adobe.com/ru_RU/AS3LCR/F...0.0/index.html)
Получается, что если не заливать цветом, то текстовое поле видно, иначе не видно ничего, хотя и курсор меняется при наведении (значит оно там).

Можно ли как-то изменить порядок или приоритет элементов чтобы текст всё же был виден?

Jewelz 08.11.2010 20:17

покажите как заливаете

Castro 09.11.2010 12:24

Код AS3:

public function handleEvent(event:Event):void
                {
 
                        xmlDataLoader.removeEventListener("mapRegionDataArrayLoaded", handleEvent);
                        var itemCnt:uint = xmlDataLoader.mapRegionDataArray.length;
                        var itemArr:Array = xmlDataLoader.mapRegionDataArray;
                        for (var i:uint=0; i<=itemCnt-1; i++)
                        {
                                var name:String = itemArr[i].region_short.toLowerCase() + '_mc';
 
                                        var colorInfo:ColorTransform = new ColorTransform();
//getWinnerColor возвращает константу-цвет                                       
colorInfo.color = getWinnerColor(itemArr[i].winner_name.toLowerCase());
                                        this[name].transform.colorTransform = colorInfo; 
 
                                        configureLabel(this[name]);
                                        setLabel(itemArr[i].winner_value.toLowerCase());
                        }
 
 
                }
 
                private function configureLabel(mcContainer):void {
            label = new TextField();
            label.autoSize = TextFieldAutoSize.NONE;
            label.background = false;
                        label.x = -20;
                        label.y = -20;
 
 
            var format:TextFormat = new TextFormat();
            format.font = "Verdana";
            format.color = 0x000000;
            format.size = 22;
 
 
            label.defaultTextFormat = format;
            mcContainer.addChild(label);
        }
                public function setLabel(str:String):void {
            label.text = str;
        }


Jewelz 09.11.2010 12:49

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

bav 09.11.2010 12:54

Судя по всему, аргумент в функции configureLabel() должен иметь тип MovieClip и это следует указывать:
Код AS3:

private function configureLabel(mcContainer:MovieClip):void {...}

Далее, что такое label? Переменная типа TextField? Тогда так:
Код AS3:

var label:TextField = new TextField();

Также, после строчки с вызовом функции getWinnerColor() вы сразу же обращаетесь к this[name], нигде предварительно не создав данный элемент. Вероятно, где-то должна быть строчка:
Код AS3:

this[name] = new MovieClip();

Попробуйте создавать контейнер для клипа, к которому вы применяете трансформацию цвета, чтобы текстовое поле под трансформацию не попадало, иными словами:
Код AS3:

var container:Sprite = new Sprite();
var clip:MovieClip = new MovieClip();
var field:TextField = new TextField();
// ...
// далее применяем к clip трансформацию цвета
// ... и
container.addChild(clip);
container.addChild(field);
this[name] = container;


Castro 09.11.2010 13:27

Код:

var label:TextField = new TextField();
Да, это действительно переменная типа, но я её выбросил из цитируемого кода TextField.

Код:

this[name] = new MovieClip();
this[name] - это я обращаюсь к уже существующему клипу на stage. Так что создавать по идее не надо

Но вот идея с создания ещё одного контейнера очень хороша, сейчас буду пробовать.
Всем спасибо!

Добавлено через 2 часа 26 минут
Хм. Вроде понял как но не то. Хотя я и присваиваю тексту чёрный цвет после определения цвета контейнера, оно всё равно перебивает его цветом заливки контейнера.

Код AS3:

var format:TextFormat = new TextFormat();
            format.font = "Verdana";
            format.color = 0x000000;
            format.size = 22;

Чего так?

А почему нельзя сначала залить мувик, а потом создать тектовое поле и контейнере и так же его залить через colorTransform?
Идея вроде здравая, но не работает
// в
Код AS3:

методе configureLabel
                      var txtContainer:MovieClip = new MovieClip();
                        var colorInfo1:ColorTransform = new ColorTransform();
                        colorInfo1.color =  0x000000;
                        txtContainer.transform.colorTransform = colorInfo1;
 
                        txtContainer.addChild(label);
                        mcContainer.addChild(txtContainer);



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

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