добавить компонент внутри спрайта - PullRequest
0 голосов
/ 16 апреля 2011

Я хочу добавить UIComponent внутри злости. вот код:

private function make() : void {
    var circle : Sprite = new Sprite();
    circle.graphics.beginFill(0xFF0000, 0.2);
    circle.graphics.drawCircle(0, 0, 20);
    var button : Button = new Button();
    button.label = "testing...";
    var wrapper : UIComponent = new UIComponent();

    circle.addChild( button );
    wrapper.addChild( circle );
    addChild( wrapper );
}

проблема в том, что кнопка добавлена, но не отображается. если я переверну - добавлю спрайт в uicomponent - все работает нормально, но так не работает. я пытался использовать функции недействительных для кнопки и т.д. ... даже пытался сделать "круг" как UIMovieClip, но не повезло - кнопка все еще невидима. также, если я просто делаю "addChild (button);" - показано, что ... пожалуйста, помогите, что я делаю не так? как я могу добавить кнопку внутри спрайта?

Ответы [ 2 ]

1 голос
/ 16 апреля 2011

Короткий ответ, вы не можете.То, что вы МОЖЕТЕ сделать, вместо использования Sprite, вы используете UIComponent для своего круга.

Причина этого в том, что UIComponent имеет МНОГО кода, который меняет его поведение, в том числе способ добавления и размещения дочерних элементов.По сути, вы можете передать тот же код в Sprite, поскольку UIComponent действительно расширяет его, однако это будет ОЧЕНЬ избыточным.Это прекрасно работает для меня:

private function make() : void {
    var circle : UIComponent= new UIComponent();
    circle.graphics.beginFill(0xFF0000, 0.2);
    circle.graphics.drawCircle(0, 0, 20);
    var button : Button = new Button();
    button.label = "testing...";
    var wrapper : UIComponent = new UIComponent();

    circle.addChild( button );
    wrapper.addChild( circle );
    addChild( wrapper );
}
1 голос
/ 16 апреля 2011

К сожалению, чтобы использовать Sprite так, как вы пытаетесь это сделать, вам необходимо расширить Sprite и реализовать IUIComponent.

Взято из справочника по языку Flex 3:

Примечание. Хотя дочерний аргумент метода указан как тип DisplayObject, аргумент должен реализовывать интерфейс IUIComponent, который будет добавлен как дочерний элемент контейнера.Все компоненты Flex реализуют этот интерфейс.

Sprite не реализует IUIComponent, поэтому вы столкнулись с довольно типичной проблемой.У UIComponent обычно нет проблем со скоростью по сравнению со спрайтами, поэтому я бы рекомендовал просто рисовать на вашем UIComponent.

Как уже говорилось ранее, вы / могли / продлевали Sprite для реализации IUIComponent, но это неприятно.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...