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
Leave a reply
мужик! что-то подобное и я использую в своих проектах (есть для это класс StageControl), но твой класс более функциональный
Спасибо
Подписка в классе возможна лишь на одно событие onResize, другие пока не знаю какие прикрутить.
И, похоже, activeArea не работает так, как задумывалось…
хмм..полезный класс, но у меня выдает
StageManager: resize object not found, broken reference removed
StageManager: align object not found, broken reference removed
Это всего лишь означает, что в методах addAlignObject и addResizeObject не были переданы необходимые параметры. Судя по ошибкам — отсутствует ссылка на объект, который ты пытаешься добавить в лист. Приведи код, при котором возникает данная ошибка.
Комментарии к методам addAlignObject и addResizeObject надо поменять местами
И правда
Поменял.
Просто сначала описание к методам было написано отдельно, потом я их воткнул в код.
Спасибо.
[...] Новая версия StageManager v1.5. О новом можно узнать по ссылке выше. Класс обновлен в framewok.zip. [...]
А вот эти модные всплывающие подсказки в примере – это что за компонент?
Это не компонент, а просто один из моих классов (не public).
Пробую разобраться с этим классом и возник такой вопрос :
Есть сцена которая выровнена по верху и по центру “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);
Спасибо.
Так этот пустой клип и так всегда в левом верхнем углу располагается
Я не увидел проблемы, честно говоря.
Можно руками создать клип-прямоугольник, кинуть его на сцену с именем clip и скопировать код из поста выше и этот клип всегда будет в левом верхнем углу.
думаю проблема из-за html… нада что сайт был растянут на 100% по высоте и ширине и выровнен по центру и верху,а “сlip” в левом верхнем углу…. это решаемо ?
http://hn4e7o.net/pruebas/pruebaStage.html
Столкнулся с необходимостью зделать шапку резиновой 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 рамзмер влешки по горизонтали. И нисего нерабоатет. шапака тянется но занавески стоят на месте.
Посоветуйте люди добрые! кто чем может! Может другими средсвами это заработает?
Вообще-то это мой блог. А конкретно данная страница посвящена моему StageManager, который и решает задачи подобного рода.
То, что вы усвоили Ctrl+C, Ctrl+V я вижу, но потрудитесь хотя бы читать то, что на этой странице написано с самого верха.
я извинияюсь уважаемый! что сюда влез, но больше немагу найти умные мысли нигде в инете. Вот подумалсоь что может быть здесь мне смогут подсказать?
Ну а читать я за вас буду? Читайте и разбирайтесь, что, зачем и для чего.
[...] появилось долгожданная демка некоторых возможностей StageManager. Заодно и вышла версия [...]
[...] небольшой косяк в StageManager. Предложения, пожелания, баг-репорты [...]
[...] версия StageManager v1.5. О новом можно узнать по ссылке выше. Класс обновлен [...]
[...] Опубликован релиз StageManager. [...]
Денис, привет! Не могу посмотреть демо – “You need to upgrade your Flash Player”. 10-й бетта стоит, на работе – 9-й. В чем может быть проблема?
Скорее всего потому что там старый SWFObject. Я обновлю страничку позже.