А мы тут резиной балуемся... :)

Переписал свой многострадальный "компоновщик".

В двух словах:
Это должен был быть легкий swf-ролик (10 килобайт, из них 6 - бут хэкса), который мог бы загружать и размещать указанные swf-ролики + графику (jpg/gif/png). Порядок следования и другие свойства загружаемых объектов определяются в "карте размещения" - http://www.damon.ru/projects/dflm/dflm.xml, карта может быть и динамической - http://www.damon.ru/projects/dflm/dflm.php?ID=2. Параметры загрузки можно задать через flashvars = "&id=1&mode=true&extension=php" или - "./dflm.swf?id=3&mode=true&extension=php". В "динамическом режиме" производится get-запрос, в котором передаётся Capabilities.serverString (содержит ID карты, L - локаль пользователя [ru/en/...] и другие полезные данные). Ролик-компоновщик напичкан "публичной статикой" для того, чтобы загружаемые ролики могли взаимодействовать с компоновщиком и друг с другом.

Переменные:

Layout.*
Version - текущая версия компоновщика
QuantityOfObjectsInTheList - количество объектов в карте
QuantityOfInitializedObjects - количество инициализированных объектов

Методы:

Layout.*
create(?Id:String, ?Mode:Bool, ?Extension:String):Void - загрузить карту
destroy():Void - убрать все, что загружено
setPosition(Object:DisplayObject, Properties:Dynamic):Void - установить объект в указанное место
stageCenter(Size:Float, Axis:Bool):Int - определить центр
getExternalVariables():Dynamic - получить объект, содержащий flashvars
getStageWidth():Float - получить ширину сцены
getStageHeight():Float - получить высоту сцены
setLoadingCompleteCallback(Callback:Dynamic):Void - установить колбек на завершение загрузки всех объектов (массив колбеков, т.е. их может быть много и отовсюду)
setStageResizeCallback(Callback:Dynamic):Void - установить колбек на изменение размеров сцены (массив колбеков, т.е. их может быть много и отовсюду)
callLoadingCompleteCallbacks():Void - вызвать установленные колбеки
callStageResizeCallbacks():Void - вызвать установленные колбеки
unsetLoadingCompleteCallback(Callback:Dynamic):Void - убрать установленный колбек
unsetStageResizeCallback(Callback:Dynamic):Void - убрать установленный колбек

Background.*
initialize():Void - инициализация фона
draw(Image:String, Disposition:String):Void - нарисовать (возможные значения disposition: tiled/centered/none)
clear():Void - очистить

Boost.*
empty(Parameter:Dynamic):Bool - проверяет пуст ли передаваемый параметр
boolean(Parameter:Dynamic):Bool - возвращает булевое значение строковых "true" / "1"

---

Если из внешнего ролика обратиться к хэксовому геттеру, то тот вернет null, поэтому пришлось записать их в обычном виде.
В ролике-компоновщике используестя Hash - Dictionary с насаженным итератором и прочими прелестями (его характеристики обсуждались на flash-ripper.com).
На самом деле для каждого подгружаемого объекта есть свой индикатор, только пока не решил как их отображать (вместо них статические сигнализаторы).
AVM1-ролики могут быть загружены и размещены, но не могут взаимодействовать с компоновщиком.
Хочу написать скроллер (все будет прокручиваться - при том, что будет занимать свои места и тянутся).
Сгенерировал из проекта AS3-классы и ужаснулся (Николя обещал оптимизировать результирующий код к версии 1.17, посмотрим). Вобщем, мне расхотелось писать на хэксе. Следующая версия компоновщика будет на чистом AS3.

Тестовый экземпляр - http://www.damon.ru/projects/dflm/
Исходники (не все) - http://www.damon.ru/projects/dflm/dflm.rar

П.С.
Это был мой первый код на haXe, а AS3 я пока не знаю. Кстати, тем, кто писал на "mtasc-совместимом AS2" будет легче освоить haXe, а после и AS3. Я уже начал.

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>.

Подробнее о форматировании

CAPTCHA
Этот вопрос помогает предотвратить автоматический спам
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.
To prevent automated spam submissions leave this field empty.