Записки о Flash

ru.etcs.utils.StageManager

Версия 2.1.1 от 14 марта 2007 класса ru.etcs.utils.StageManager.
Демонстрация некоторых возможностей.

Данный класс позволяет масштабировать/перемещать объекты, создавать клипы-текстуры на сцене в зависимости от её размеров.
Пример использования:

This content requires Adobe Flash Player.

Вся документация в теле класса.

Что нового в версии 2.1.1:

  • Исправлена работа removeListener. Если в одной области видимости подписано несколько обработчиков, то при удалении удалялся первый добавленный в этой области видимости, а не требуемый.

Что нового в версии 2.1.0.1:

  • Исправлен баг, приводящий к невозможности удаления масштабируемого объекта.
    Спасибо Serge.

Что нового в версии 2.1:

  • Подписка на ошибки для отладки
  • Возможность задавать округленные координаты/размеры с помощью какой-либо функции (Math.round, например)

Что нового в версии 2.0:

  • Исправлена работа constrainProportions
  • Добавлена возможность задавать режим работы смещения/масштабирования/тайлинга (по вертикали, по горизонтали, по обеим осям)
  • Все комментарии переведены в JavaDoc + примеры кода (наконец-то)
  • Новые фичи — создание тайлов из клипов и битмапов.
  • Мелкие исправления

Класс более не публикуется в этом посте, его можно взять во фреймворке.
Потому как публиковать простыню кода из 1300 строк бессмысленно.

Что нового в версии 1.5.2.1:

  • Исправлен мелкий недочет

Что нового в версии 1.5.2:

  • Исправлено несколько мелких багов
  • Новое свойство listenersFirst

Что нового в версии 1.5:

  • Теперь ошибки в работе выкидываются через throw, а не trace. Т.е. у вас есть возможность использовать блоки try … catch … finally
  • Новое свойство throwErrors, позволяющее отключить вывод ошибок
  • Метод onResize стал приватным. На замену ему пришел refresh()
  • Новый метод removeAllListeners() для удаления всех подписанных изменение размеров сцены
  • Теперь можно подписывать функции или методы в нужной области видимости (если она указана)
  • Добавлено свойство showMenu, аналогичное одноименному свойству у Stage. Теперь вы можете совсем отказаться от использования Stage
  • Для подписки на onResize рекомендуется использовать запись вида StageManager.addListener(StageManager.RESIZE, …)
  • Появились статические свойства TOP, LEFT, TOP_LEFT и др., которые можно использовать для align (StageManager.align = StageManager.TOP_LEFT)
  • Появились статические свойства NO_SCALE, EXACT_FIT и др., которые можно использовать для scaleMode (StageManager.scaleMode = StageManager.NO_SCALE)
  • Новые свойства constrainProportions, useDefaultFormat, format. Первое свойство отвечает за режим соблюдения пропорций размеров сцены (т.е. свойства width и height, возвращаемые StageManager, будут зависеть друг от друга). Второе свойство отвечает за вычисление format на основе DEFAULT_WIDTH, DEFAULT_HEIGHT. Третье свойство позволяет задать вам нужное соотношение ширины к высоте
  • Метод proxy(), возвращающий ссылку на функцию с нужной областью видимостью и свойством scope, ссылающимся на эту область видимости+возможность передачи нужных параметров (аналог ascb.util.Proxy). Он необходим для работы данного класса, но оставлен публичным на тот счет, если кому-то понадобится.
  • Трейс StageManager-а теперь показывает текущую ширину и высоту сцены

Класс доступен во фреймворке.


22 comments

22 Comments so far

  1. SHAGGYSMILE October 6th, 2006 09:38

    мужик! что-то подобное и я использую в своих проектах (есть для это класс StageControl), но твой класс более функциональный

  2. __etc October 6th, 2006 10:19

    Спасибо :)
    Подписка в классе возможна лишь на одно событие onResize, другие пока не знаю какие прикрутить.

    И, похоже, activeArea не работает так, как задумывалось…

  3. Vanja December 14th, 2006 22:57

    хмм..полезный класс, но у меня выдает
    StageManager: resize object not found, broken reference removed
    StageManager: align object not found, broken reference removed :(

  4. __etc December 15th, 2006 00:03

    Это всего лишь означает, что в методах addAlignObject и addResizeObject не были переданы необходимые параметры. Судя по ошибкам — отсутствует ссылка на объект, который ты пытаешься добавить в лист. Приведи код, при котором возникает данная ошибка.

  5. Xandr December 27th, 2006 00:29

    Комментарии к методам addAlignObject и addResizeObject надо поменять местами

  6. __etc December 27th, 2006 00:39

    И правда :)
    Поменял.
    Просто сначала описание к методам было написано отдельно, потом я их воткнул в код.
    Спасибо.

  7. [...] Новая версия StageManager v1.5. О новом можно узнать по ссылке выше. Класс обновлен в framewok.zip. [...]

  8. Ден March 6th, 2007 16:16

    А вот эти модные всплывающие подсказки в примере – это что за компонент? :)

  9. __etc March 6th, 2007 16:44

    Это не компонент, а просто один из моих классов (не public).

  10. hn4e7o May 19th, 2007 00:19

    Пробую разобраться с этим классом и возник такой вопрос :
    Есть сцена которая выровнена по верху и по центру “T” и нужен чтобы один клип не зависимо от размера окна бы всегда в левой верхней части…
    var position:Point = new Point(0,0); не подходит , так как StageManager.scaleMode = “noScale”;

    Весь код такой:
    import ru.etcs.utils.StageManager;
    import flash.geom.Point;
    StageManager.DEFAULT_WIDTH = 1024;
    StageManager.DEFAULT_HEIGHT = 750;
    StageManager.align = ‘T’;
    StageManager.scaleMode = “noScale”;
    var clip:MovieClip =_root.createEmptyMovieClip(“clip”,_root.getNextHighestDepth());
    var position:Point = new Point(0,0);
    StageManager.addAlignObject(clip,position);

    Спасибо.

  11. __etc May 19th, 2007 00:35

    Так этот пустой клип и так всегда в левом верхнем углу располагается :)
    Я не увидел проблемы, честно говоря.
    Можно руками создать клип-прямоугольник, кинуть его на сцену с именем clip и скопировать код из поста выше и этот клип всегда будет в левом верхнем углу.

  12. hn4e7o May 19th, 2007 00:58

    думаю проблема из-за html… нада что сайт был растянут на 100% по высоте и ширине и выровнен по центру и верху,а “сlip” в левом верхнем углу…. это решаемо ?
    http://hn4e7o.net/pruebas/pruebaStage.html

  13. JoKeR June 20th, 2007 09:13

    Столкнулся с необходимостью зделать шапку резиновой http://skill.ru/artwork/185217.shtml но ,что бы занавески были постоянно прикреплены к краям флешки…тоест ьвсе статично и толко двигаются занавески в сосовтествии с размерами броузера по горизонтали.

    МНе посоветовали в моем случае

    Код:

    Stage.scaleMode = “noScale”;
    Stage.align = “C”;
    _root.onResize = function() {
    mc_left._x = -(Stage.width-1000)/2;
    mc_right._x = 1000+(Stage.width-1000)/2;
    };
    Stage.addListener(_root);
    _root.onResize();
    Где mc_left mc_right левая и правая занавески, 1000 рамзмер влешки по горизонтали. И нисего нерабоатет. шапака тянется но занавески стоят на месте.

    Посоветуйте люди добрые! кто чем может! Может другими средсвами это заработает?

  14. __etc June 20th, 2007 09:15

    Вообще-то это мой блог. А конкретно данная страница посвящена моему StageManager, который и решает задачи подобного рода.
    То, что вы усвоили Ctrl+C, Ctrl+V я вижу, но потрудитесь хотя бы читать то, что на этой странице написано с самого верха.

  15. JoKeR June 20th, 2007 09:19

    я извинияюсь уважаемый! что сюда влез, но больше немагу найти умные мысли нигде в инете. Вот подумалсоь что может быть здесь мне смогут подсказать?

  16. __etc June 20th, 2007 09:25

    Ну а читать я за вас буду? Читайте и разбирайтесь, что, зачем и для чего.

  17. [...] появилось долгожданная демка некоторых возможностей StageManager. Заодно и вышла версия [...]

  18. [...] небольшой косяк в StageManager. Предложения, пожелания, баг-репорты [...]

  19. Записки о Flash » StageManager v1.5 September 17th, 2007 17:06

    [...] версия StageManager v1.5. О новом можно узнать по ссылке выше. Класс обновлен [...]

  20. [...] Опубликован релиз StageManager. [...]

  21. Волгоградец July 23rd, 2008 07:01

    Денис, привет! Не могу посмотреть демо – “You need to upgrade your Flash Player”. 10-й бетта стоит, на работе – 9-й. В чем может быть проблема?

  22. etc July 23rd, 2008 11:13

    Скорее всего потому что там старый SWFObject. Я обновлю страничку позже.

Leave a reply