Статьи

Совет: полноэкранная временная презентация

В этом кратком совете мы создадим слайд-шоу в полноэкранном режиме с помощью Flash.


Создайте новый файл Flash и сохраните как Presentation.fla . На панели свойств установите размер в соответствии с настройками размера экрана. Например, стандартный экран ноутбука WXGA имеет разрешение 1280 x 800 пикселей. Чтобы доставить файл презентации кому-то, у кого на компьютере не установлен флэш-плеер, установите флажки Windows и / или Macintosh Projector на панели «Параметры публикации».


Создайте новый файл .as — «Presentation.as» — в качестве класса документа ( обратитесь к этому краткому совету для получения дополнительной информации о классах документов ).

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
package {
     
    import flash.display.MovieClip;
     
    public class Presentation extends MovieClip
    {
         
        public function Presentation()
        {
             
        }
         
    }
     
}

Чтобы переключиться в полноэкранный режим, мы должны изменить состояние отображения сцены. Добавьте новый оператор import над объявлением класса для StageDisplayState .

1
import flash.display.StageDisplayState;

При обычных обстоятельствах Flash требует, чтобы MouseEvent инициировал полноэкранный режим, но при просмотре SWF-файла вне браузера (режим проектора) это не проблема. Тем не менее, просто чтобы быть в безопасности (и в случае, если вы хотите разместить свою презентацию в Интернете), мы используем инструкцию try / catch, чтобы содержать ошибку безопасности, которая будет выдана.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
public function Presentation()
{
    public function Presentation()
        {
            try
            {
                stage.displayState = StageDisplayState.FULL_SCREEN;
            }
            catch (err:SecurityError)
            {
                // Must be in projector mode for full screen viewing
            }
        }
}

Если вы опубликуете и откроете swf, вы увидите, что он запускается прямо в полноэкранном режиме (нажмите ESC для выхода).


Наша презентация будет работать, двигаясь вперед и назад по временной шкале. Flash не имеет метода воспроизведения временной шкалы в обратном порядке, поэтому нам придется создать свой собственный, используя таймер для перемещения точки воспроизведения по кадрам на временной шкале. Сначала мы импортируем классы Timer и TimerEvent .

1
2
import flash.events.TimerEvent;
import flash.utils.Timer;

Далее мы объявляем переменные класса для таймера, а также логическое значение для отслеживания направления воспроизведения.

1
2
private var isPlayingForward:Boolean;
private var timelineTimer:Timer;

Затем в конструкторе класса мы устанавливаем значения для этих переменных класса. Мы даем таймеру задержку, равную частоте кадров, установленной в свойствах документа.

1
2
3
isPlayingForward = true;
timelineTimer = new Timer(1000/stage.frameRate);
timelineTimer.addEventListener(TimerEvent.TIMER, timelineTimerHandler);

Наконец, мы установили обработчик событий для таймера.

1
2
3
4
5
6
7
private function timelineTimerHandler(te:TimerEvent):void
{
    if (isPlayingForward)
        this.nextFrame();
    else
        this.prevFrame();
}

На этом шаге мы создадим три простых метода управления движением по временной шкале. Один для остановки, один для воспроизведения вперед, а другой для игры в обратном направлении.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
public function stopTimeline():void
{
    stop();
    timelineTimer.stop();
}
 
public function playForward():void
{
    isPlayingForward = true;
    timelineTimer.start();
}
 
public function playReverse():void
{
    isPlayingForward = false;
    timelineTimer.start();
}

Клавиатура будет использоваться для смены слайдов в нашей презентации, поэтому нам нужно настроить события клавиатуры и слушателей. Еще раз, мы импортируем несколько классов.

1
2
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;

Затем добавьте слушатель KeyboardEvent на сцену.

1
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardHandler);

Наконец, создайте метод для обработки KeyboardEvent.

1
2
3
4
5
6
7
private function keyboardHandler(event:KeyboardEvent):void
{
    if (event.keyCode == Keyboard.RIGHT)
        playForward();
    if (event.keyCode == Keyboard.LEFT)
        playReverse();
}

Теперь мы переходим к построению графика. Для этого просто создайте несколько слайдов и создайте анимацию временной шкалы для перехода между ними. Создайте слой действий и для каждого слайда добавьте stopTimeline(); на ключевой кадр. Ваша временная шкала должна выглядеть примерно так:


Помимо создания переходов между слайдами на временной шкале мы также можем использовать ActionScript. В этом примере мы будем использовать TextAnimMaker и TweenLite от Greensock. Чтобы загрузить эти библиотеки ActionScript, перейдите в Google Code для TextAnimMaker и GreenSock для TweenLite. Как только вы загрузите файлы, возьмите каталоги greensock и flupie из их отдельных com- каталогов и скопируйте их в один com- каталог в папке вашего проекта.

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

1
2
3
import com.greensock.TweenLite;
import com.greensock.easing.*;
import com.flupie.textanim.*;

Создайте новый мувиклип и добавьте его на сцену. Дайте ему имя экземпляра slideTextAnimation . Внутри MovieClip создайте динамический TextField с небольшим количеством текста внутри и присвойте ему имя экземпляра slideText . Теперь, в слое действий на временной шкале, добавьте скрипт ниже.

01
02
03
04
05
06
07
08
09
10
11
12
13
stopTimeline();
 
var slideAnimateIn:TextAnim = new TextAnim(slideTextAnimation.slideText);
slideAnimateIn.mode = TextAnimMode.RANDOM;
slideAnimateIn.interval = 20;
slideAnimateIn.blocksVisible = false;
slideAnimateIn.effects = growEffect;
slideAnimateIn.start();
 
function growEffect(block:TextAnimBlock):void
{
    TweenLite.from(block, 1, {scaleX:0, scaleY:0, ease:Elastic.easeOut});
}

Это создаст забавный эффект, когда каждая буква анимируется на сцене. Чтобы узнать больше о TextAnimMaker, ознакомьтесь с этой подсказкой .


Завершите презентацию, анимировав мувиклип slideTextAnimation со сцены и заполнив временную шкалу остальными слайдами. Возможно, вам захочется попробовать анимацию движения 3D или более интересные переходы с TextAnimMaker и TweenLite.

Спасибо за чтение этого быстрого совета, и я надеюсь, что ваша следующая презентация поразит всех своим ярким величием!