Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   добавить простую кнопку (http://www.flasher.ru/forum/showthread.php?t=123261)

Lecosson 28.03.2009 17:56

добавить простую кнопку
 
проект Flex AS3.
Не получается сабж.
Код AS3:

package lab.leto
{
        import mx.controls.Button;
 
        public class G3Aboard extends Sprite
        {
                public var buttonclose:Button;
 
                public function G3Aboard()
                {
                        super();
                        buttonclose=new Button();
                        addChild(buttonclose);
                }
 
        }
}

Ошибок при компиляции не выдает, но предупреждает о несколько раз о:
Unable to resolve resource bundle "что-то" for locale "en_US".

Если я правильно понял, нужно подключить к проекту библиотеки с компонентами, но не могу найти их.
Ткните носом, пожалуйста.
Vista, FLEX3.0

7thsky™ 28.03.2009 19:42

G3Aboard - это документ class? проект Flex или АсtionScript?

Ну и вообще, вы пользуете flex sdk - там свои правила, нельзя так просто создать кнопку и добавить в Sprite - контэйнер должен быть как минимум наследником UIComponent + весь проект флексовским.

wvxvw 28.03.2009 20:11

>> Ну и вообще, вы пользуете flex sdk - там свои правила, нельзя так просто создать кнопку и добавить в Sprite - контэйнер должен быть как минимум наследником UIComponent + весь проект флексовским.

Не совсем так, но очень близко:
Чтобы добавить флексовый компонент, нужно в своем классе, куда его добавляем произвести с компонентом все операции, которые с ним делает LayoutManager во время "ступенчатой инициализации" - для одного компонента это очень много мороки т.как вам прийдеться самому реализовать с пяток очень немаленьких флексовых интерфейсов. И только ради флексовой кнопки оно того точно не стоит.
Для того, чтобы работало обратное - т.е. добавить свой компонент в дисплей лист флексовых компонентов, вам нужно будет реализовать дополнительно IDeferredInstantiationUIComponent, опять же делать это только ради одного компонента - бессмысленная трата времени, но в некоторых ситуациях (таких, как например, когда хочется, чтобы один и тот же компонент мог быть использован и в фрейморковском проекте и вне его - вполне может пригодиться).

Lecosson 28.03.2009 20:59

Спасибо всем за ответы.
К сожалению, я задал вопрос не в той теме, скорее нужно было оставить сообщение в AS3, просто код пишу во Флекс Билдере.
Как я и написал, мне нужно было просто добавить кнопку, самую простую. Поскольку мороки не хотелось, создал спрайт, нарисовал в нем rectangle и текстовую строчку, повесил реакцию на мышиный клик.
Собственно, можно было бы на этом и закончить, но хочется все-таки понять, как можно программно, без возни с swc, добавить обычные флешевые компоненты на stage (кнопки, чекбоксы и т.п.). Помогите новичку, пожалуйста.

wvxvw 28.03.2009 21:20

Из Флекс билдера "без возни с SWC" - никак не добавить флешевые компоненты... SWC - лучший вариант чем SWF, но принцип одинаковый: Скомпилировать флешевые компоненты в SWC, подключить эту библиотеку к проекту и от туда добавлять.

Только вы в вашем примере не флешевую кнопку добавляете, а флексовую...

7thsky™ 28.03.2009 23:21

Цитата:

Сообщение от wvxvw (Сообщение 809191)
...
Не совсем так, но очень близко:
Чтобы добавить флексовый компонент, нужно в своем классе, куда его добавляем произвести с компонентом все операции, которые с ним делает LayoutManager во время "ступенчатой инициализации" ...

Не совсем так, но очень близко:

Инициализацию компонента в Flex SDK инициирует контейнер куда этот компонент добавили.
Смотрите методы:
+ UIComponent#mx_internal::addingChild
+ UIComponent#mx_internal::childAdded
их вызывают из UIComponent#addChildAt, можно посмотреть также и overrided методы в Container.

LayoutManager - ответственнен же не за инициализацию, так метод UIComponent#initialize у добавленного компонента вызывается из childAdded, а за ВАЛИДАЦИЮ компонента (так все что он вызывает у компонента это validateProperties, validateSize, validateDisplayList).

wvxvw 29.03.2009 00:49

http://www.flasher.ru/forum/showthre...wpost&t=121384
Загляни завта в эту ветку, я думаю, это просто сложности перевода :) я поэтому в кавычках написал - не знал, как перевести :) Валидация, так валидация.
И это, контейнер не сам решает, когда сделать валидацию - это у них централизовано происходит :) но можно форсировать, если захочется.

Nirth 29.03.2009 01:14

У 7thsky и wvxvw какая то виндетта? Тут был конкурс на людей с непроизносимыми никами, и вы не можете друг друга простить=)?

wvxvw 29.03.2009 01:29

Не правда! Мой ник вполне даже благозвучно читается! Даблъювиексвидаблъю!
:away:


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

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