Вспышка: AS3: слайд-шоу / фильм, запущенный по таймеру (с использованием шаблона в cs5) - PullRequest
1 голос
/ 30 марта 2011

Я собираюсь сделать введение во флэш, которое включает в себя использование переходов со вспышкой для перехода между изображениями и видеоконтентом. Я не собираюсь использовать весь этот код из шаблона, я просто хочу реализовать переходы с таймером вместо события нажатия клавиши. Один из них выглядит следующим образом:

stop();

var timer1:Timer = new Timer(200);
timer1.addEventListener(TimerEvent.TIMER, blah1);
timer1.start();

function blah1(e:TimerEvent):void{
 play();
    timer1.reset()

trace("Times Fired: " + e.currentTarget.currentCount);
trace("Time Delayed: " + e.currentTarget.delay);
}

Вот код для шаблона слайд-шоу, который я планирую использовать:

    import fl.transitions.*;

// USER CONFIG SETTINGS
var buttonsOn:Boolean = true; // true, false
var pageNumberOn:Boolean = true; // true, false
var transitionOn:Boolean = true; // true, false
var transitionType:String = "Fade"; 
// END USER CONFIG SETTINGS

// EVENTS
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_changeSlideKeyboard);
prev_btn.addEventListener(MouseEvent.CLICK, fl_prevSlideButton);
next_btn.addEventListener(MouseEvent.CLICK, fl_nextSlideButton);
function fl_changeSlideKeyboard(evt:KeyboardEvent):void
{
    if(evt.keyCode == 37) // LEFT
    {
        fl_prevSlide();
    }
    else if (evt.keyCode == 39 || evt.keyCode == 32) // RIGHT OR SPACE
    {
        fl_nextSlide();
    }
}
function fl_prevSlideButton(evt:MouseEvent):void
{
    fl_prevSlide();
}
function fl_nextSlideButton(evt:MouseEvent):void
{
    fl_nextSlide();
}
// END EVENTS

// FUNCTIONS AND LOGIC
function fl_prevSlide():void
{
    if(slides_mc.currentFrame > 1)
    {
        slides_mc.gotoAndStop(slides_mc.currentFrame-1);
        if(transitionOn == true)
        {
            fl_doTransition();
        }
        if(pageNumberOn == false)
        {
            slideNumber_txt.text = "";
        } else {
            slideNumber_txt.text = String(slides_mc.currentFrame + "/" + slides_mc.totalFrames);
        }
    }
}
function fl_nextSlide():void
{
    if(slides_mc.currentFrame < slides_mc.totalFrames)
    {
        slides_mc.gotoAndStop(slides_mc.currentFrame+1);
        if(transitionOn == true)
        {
            fl_doTransition();
        }
        if(pageNumberOn == false)
        {
            slideNumber_txt.text = "";
        } else {
            slideNumber_txt.text = String(slides_mc.currentFrame + "/" + slides_mc.totalFrames);
        }
    }
}
function fl_doTransition():void
{
    if(transitionType == "Fade")
    {
        TransitionManager.start(slides_mc, {type:Fade, direction:Transition.IN, duration:0.25});
    } 
}
slides_mc.gotoAndStop(1);
stage.scaleMode = StageScaleMode.SHOW_ALL;
// END FUNCTIONS AND LOGIC

stop();

Ответы [ 2 ]

1 голос
/ 30 марта 2011

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

var timer:Timer = new Timer(200);
timer.addEventListener(TimerEvent.TIMER, onTime);
timer.start();

function onTime(e:TimerEvent):void{
 fl_nextSlide();
 timer.reset();
}
0 голосов
/ 30 марта 2011

Я понимаю, что у вас есть эти два фрагмента и вы хотите использовать первый для управления слайд-шоу, которое идет со вторым фрагментом.

Если это так, просто:

function blah1(e:TimerEvent):void{
     fl_nextSlide();
    //timer1.reset();
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...