Ширина / Высота динамически загружаемого изображения - PullRequest
0 голосов
/ 16 ноября 2009

Я долго боролся с этой проблемой, и я думаю, что решение довольно простое.

В моем приложении Flex у меня есть компонент, который расширяет UIComponent, куда я загружаю изображения во время выполнения и пытаюсь их отобразить. Я пробовал много разных подходов (используя beginBitmapFill (), используя разные контейнеры), но я не могу заставить вещи работать так, как я хочу. Кажется, проблема связана со свойствами ширины и высоты изображения, которые не обновляются правильно. Идея такова:

var sprite:Sprite = new Sprite();
addChild(sprite);

var im:Image = new Image();
im.addEventListener(Event.COMPLETE, function(e:Event):void {
    sprite.addChild(im);
}
im.load('path/image.png');

Ширина и высота изображения не выглядят правильными при загрузке. Я получаю ширину == 0 (и ничего не отображается), но свойство $ width кажется правильным. Как я могу убедиться, что ширина и высота загруженного изображения обновляются?

Ответы [ 2 ]

3 голосов
/ 16 ноября 2009

Это проблема синхронизации, и я считаю ошибку в классе изображений, потому что класс изображений нарушает ожидания пользователей.

Дело в том, что класс изображения сначала выполняет загрузку (и, в конечном счете, отправляет сообщение ЗАВЕРШЕНО), а затем выполняет измерение (и масштабирование), а затем корректно обновляет значения (получая большую часть времени в другом Событие ОБНОВЛЕНИЕ).

Поэтому, когда я впервые наткнулся на эту проблему, мое решение состояло в том, чтобы сначала прослушать событие COMPLETE, а затем добавить прослушиватель для UPDATE (вы не можете просто прослушать обновление, поскольку обычно оно отправляется хотя бы один раз во время создания или скачать), но это довольно плохой взлом.

Я вполне уверен, что на этот вопрос уже был дан ответ на stackoverflow, и, вероятно, были более эффективные решения.

PS: также остерегайтесь разницы между шириной и contentWidth, просто чтобы быть уверенным:)

1 голос
/ 16 ноября 2009

попробуйте с Event.INIT вместо Event.COMPLETE

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