невозможно установить ширину / высоту на FlexSprite - PullRequest
1 голос
/ 03 мая 2011

Я пытаюсь установить ширину / высоту объекта FlexSprite в ActionScript, но, похоже, он не работает вообще.Я все еще новичок, когда дело доходит до ActionScript, и я не понимаю, почему я не могу установить размеры этого объекта.Я знаю, что мог бы использовать UIComponent, но мне нужно что-то более легкое, так как я собираюсь добавить сотни из них.

public class MyComp extends UIComponent
{
    public function MyComp()
    {
        super();
    }

    private var _sprite:FlexSprite;

    private var _button:Button;

    override protected function createChildren():void {
        if (!_sprite) {
            _sprite = new FlexSprite();

            _sprite.width = 200;
            _sprite.height = 200;
            addChild(_sprite);
        }
        if (!_button) {
            _button = new Button();
            _button.label = "Click me";
            _button.width = 150;
            _button.height = 40;
            addChild(_button);
        }

        super.createChildren();
    }
    override protected function measure():void {
        measuredHeight = measuredMinHeight = 200;
        measuredWidth = measuredMinWidth = 200;
    }

    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
        super.updateDisplayList(unscaledWidth,unscaledHeight);
        trace('dimz of _sprite', _sprite.width, _sprite.height);
        _sprite.width = 100; // doesn't work either
        trace('dimz of _sprite again', _sprite.width, _sprite.height);
        trace('dimz of _button', _button.width, _button.height);
    }
}

Вывод, который я получаю:

dimz of _sprite 0 0
dimz of _sprite again 0 0
dimz of _button 150 40

Я планируючтобы добавить другие объекты внутрь FlexSprite, мне нужно также явно указать их размеры, поэтому мне действительно нужно выяснить, как это сделать.

1 Ответ

2 голосов
/ 03 мая 2011

Несколько вещей, которые могут быть проблемы:

  1. Спрайт, насколько я понимаю, это как контейнер. Само по себе оно не имеет визуальных элементов; так что на экране ничего не будет отображаться только при использовании экземпляра FlexSprite.
  2. Вы не размещаете свои элементы в компоненте; и UIComponent не имеет кода для автоматического позиционирования своих дочерних элементов; поэтому кнопка все равно будет отображаться поверх спрайта. Вы можете изменить это, добавив код позиционирования в updateDisplayList (). Как то так:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
 super.updateDisplayList(unscaledWidth,unscaledHeight);
 _sprite.x = 10;
 _sprite.y = 10;
 _button.x = 400;
 _button.y = 400;
}

Я предполагаю - но не знаю, что источник b / c недоступен - что Sprite (который расширяет FlexSprite) изменяет размеры своих дочерних элементов; который в настоящее время не существует.

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