Почему ширина и высота загруженного SWFLoader равна нулю? - PullRequest
3 голосов
/ 16 октября 2008

У меня есть класс, который расширяет SWFLoader, я использую его как обычный SWFLoader:

var loader:MySWFLoader = new MySWFLoader();
loader.load("myFile.SWF");
myScene.addChild(loader);

Загрузка работает нормально, за исключением того, что она остается 0, потому что ширина и высота никогда не меняются с 0. Мне пришлось переопределить свойства get ширины / высоты, чтобы она работала:

class MySWFLoader extends SWFLoader
{
public override function get width():Number{    return contentWidth;    }
public override function get height():Number{   return contentHeight;   }
}

Помимо большого взлома, это не совсем правильно; тем более что SWF имеет несколько кадров, а рамки имеют разную ширину / высоту.

Почему ширина / высота не работают в первую очередь? Разве они не должны быть автоматически установлены во время загрузки? Возможно ли, что проблема как-то связана с самим SWF?

Обновление : Изменение scaleContent на true или false не имеет значения.

Ответы [ 4 ]

2 голосов
/ 21 октября 2008

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

Итак, создайте прослушиватель событий, который прослушивает после завершения загрузки, а затем читает высоту / ширину.

Также взгляните на класс loaderInfo в AS3

1 голос
/ 17 октября 2008

Я не уверен, какую часть цикла вы пытаетесь захватить высотой и шириной (и является ли это объектом загрузчика или загруженным содержимым), но вы можете получить доступ к высоте и ширине загруженного объекта, используя SWFLoader.loaderInfo.height и SWFLoader.loaderInfo.width.

0 голосов
/ 18 октября 2008

SWFLoader является UIComponent.

Для правильной установки его размеров необходимо запустить систему UIComponent

Другими словами, он ожидает вызовов commitProperties (), updateDisplayList () и т. Д.

Если вы добавите его в свое приложение (чтобы оно стало частью структуры макета), все будет в порядке.

0 голосов
/ 16 октября 2008

По умолчанию SWFLoader масштабирует содержимое до размера загрузчика, поэтому вы должны установить размер загрузчика. Если вы хотите, чтобы загрузчик масштабировался до размера содержимого, вам нужно установить для свойства scaleContent значение false.

...