Специально для людей, которые не очень «дружат» с AS3. Сделал простенький preloader.
Ради интереса воспользовался ByteTween.
Все что нужно, это иметь под рукой preloader.fla, в котором, на сцене должен находиться MovieClip, будущий preloader.
Preloader может состоять из 100 фреймов, каждый фрейм соответствует проценту загрузки, а так же может содержать текстовое поле (Dynamic) с именем ‘txt’, для отображения статуса загрузки.
Все что нужно произвести, это небольшие изменения в файле Settings.as, где нужно указать путь к файлу, который нужно загружать, если preloader.swf и загружаемый файл находятся в одной папке, то просто укажите название файла. А так же в Settings.as, необходимо указать имя MovieClip preloader’а, находящегося на сцене. По умолчанию, ’stagePreloader’.
P.S.
ByteTween ужасный Tween Engine, не пользуйтесь им, в серьезных проектах, он не стоит сэкономленных 1,5кб.
Старался максимально доходчиво написать…
Сейчас работаю над еще одним очень важным компонентом пользовательского интерфейса – подсказка (Tooltip).
Так как компонент будет поддерживать закругление углов (Rounded corners), необходимо разработать полноценную логику рисования части кривой Безье, после пересечения с «усиком» подсказки.
Предлагаю вашему вниманию, собственную реализацию вспомогательного framework по обнаружению минимального пути в графе. На данном этапе разработки, PathFinder, поддерживает два алгоритма: алгоритм Дейкстры и «А» звезда. Алгоритмы изрядно изменены, для максимальной совместимости с framework, за основу взяты лишь идеи этих алгоритмов.
Достоинства и недостатки реализованных алгоритмов.
Алгоритм Дейкстры:
+ точное обнаружение минимально пути в графах любой сложности;
+ позволяет обнаруживать путь в сложных/запутанных графах;
- в 3 раза медленнее, чем алгоритм «А» звезда;
Алгоритм «А» звезда:
+ быстрый метод обнаружения пути;
+ идеально подходит для графов с принципом построения как у «королевского» графа;
- некорректно находит путь в сложных/запутанных графах;
Papervision: При использовании 3Д на сайте, в 90% случаев необходимы 3D объекты в масштабе 1:1 к 2D объектам. В последнем проекте необходимо было сделать куб как элемент навигации, при этом текстуры на гранях не должны были масштабироваться:
При разработке сайта, на котором будет функционал требующий работы с SharedObject, приходится поверять логику работы, когда человек впервые на сайте, и не только. Самый простой способ, это удалить файл .sol. Если вы думаете, что очистка кэша в браузере поможет вам, то вы ошибаетесь. Так же вы конечно можете сделать программную кнопку, при нажатии на которую, будет происходить удаление SharedObject. Но все же, пару раз удалить файл из системы, как по мне, проще. Более подробно, где их искать в различных системах, можно почитать в Wikipedia
Timer отрабатывает не сразу после вызова метода start(), а лишь через значение delay, которое вы указали в конструкторе. Что бы заставить отработать сразу, правильнее всего сделать вот так:
Вызвать сразу listener, плохо тем, что вы не сможете использовать updateAfterEvent
Маска с поддержкой прозрачности с помощью BlendMode. Хорошая вещь, как для программистов, когда требуется создать полупрозрачную маску, и при этом контент под маской анимируется, так и для аниматоров, так как не нужно никакого кода.
Техника очень проста:
есть контейнер в котором все объекты, маска и содержимое, которое нужно поместить под маску. Для этого контейнера устанавливаем BlendMode.LAYER.
P.S.
Более подробно для аниматоров. Создаем Movieclip, меняем ему BlendMode на Layer, помещаем в него 3 Movieclip'a: Нижний слой - Содержимое, Средний слой - маска, делаем ее маской для содержимого, Верхний слой - полупрозрачная маска, меняем ей BlendMode на Alpha (не нужно полупрозрачную маску совать под маску, или пытаться ее тоже сделать маской).
P.P.S.
Если кто то всю жизнь пользовался только таким способом с помощью BlendMode, то для вас есть более простой способ, который отлично подходит для статического содержимого, к примеру текст.
Реализация моего портфолио прошла долгий и тернистый путь, от маленькой трешовой флешки с кровью и рваной бумагой с звуками из игры «Носферату», до достойного 3D приложения.
Первая 3D реализация использовала Papervision Great White Alpha, т.е. самая первая и сырая версия Papervision 2.0. Движек выдавал в среднем 24 fps на «игровом» компьютере. Следующая версия портфолио уже использовала Away3D, интерактивность немножко прихрамывала, и API несильно отличалось, и все так же была возможность использовать Sprite материалы. Так же, кубики уже не вращались все время, а только когда пользователь использовал интерактивные возможности, т.е. сцена рендерилась при изменениях. FPS при рендеринге все так же «проседало».
И вот 4.0 версия портфолио, которая использует Alternativa3D. Вся навигация на сайте построена на мыши: левая, правая клавиши и колесико. Пропал МР3 плеер. На сайте два режима навигации, как вам идея? Почему не предоставить пользователю несколько режимов навигации, и пусть он выбирает более удобный для него. Так и появилась альтернативная навигация.
Производительность у нового движка отличная. Разработчики создали свою отображаемую модель, начав все с нуля (Object3D extends Object). Все бы хорошо, но вот очень нехватает параметра alpha и visible. Так же есть некоторые косяки, после масштабирования объектов, иногда начинают появляться артефакты в виде дополнительных треугольников на поверхности. Так же есть баг с рендерингом текстуры: если объект масштабируется, при этом происходит анимация вершин, и все это происходит за видом камеры, то текстуры не обновляются, и имеем обычный белый объект. Из всех 3-ёх 3D движков, Alternativa3D имеет самый «приятный» API и самую высокую производительность. Если разработчики еще добавят возможность использования DisplayObjectContainer как текстуры, то это будет самый лучший движек для создания Pure 3D Flash сайтов.