Flash слайд-шоу с таймером объекта и возможностью идти вперед или назад - PullRequest
0 голосов
/ 02 мая 2011

Я новичок в использовании Flash, но благодаря некоторым полезным учебникам YouTube и различным поискам в Google, мне удалось создать слайд-шоу, которое автоматически переходит к следующему через 6 секунд. Я также подумал, что было бы неплохо, если бы я мог дать пользователям возможность вернуться назад или вперед или перейти непосредственно к определенному слайду. Но моя проблема в том, что после нажатия кнопки таймер выключен.

Вот код моего действия:

import flash.events.MouseEvent;
import flash.utils.*;

// Stop initial picture fading from looping
stop()

// New timer object set to 6 seconds (1000 milliseconds/second)
var myTimer:Timer = new Timer(6000, 1);

myTimer.addEventListener ("timer", timerHandler);
myTimer.reset();
myTimer.start();

function timerHandler(event:TimerEvent): void {
if(currentFrame == 4){
     myTimer.reset();
     myTimer.start();
     gotoAndStop("pajNtaub");
 }else{
     myTimer.reset();
     myTimer.start();
     nextFrame();
     }
}

// Move to next state
function onNextClick(event:MouseEvent):void{
    if(currentFrame == 4){
        myTimer.reset();
        myTimer.start();
        gotoAndStop("pajNtaub");
    }else{
        myTimer.reset();
        myTimer.start();
        nextFrame();
    }
}
forwardArrow.addEventListener(MouseEvent.CLICK, onNextClick);

// Move to previous state
function onPrevClick(event:MouseEvent):void{
    if(currentFrame == 1){
        myTimer.reset();
        myTimer.start();
        gotoAndStop("posHuab");
    }else{
        myTimer.reset();
        myTimer.start();
        prevFrame();
    }
}
backArrow.addEventListener(MouseEvent.CLICK, onPrevClick);

// First button
function play0(event:MouseEvent):void{
    myTimer.reset();
    myTimer.start();
    gotoAndStop("pajNtaub");
}
button0.addEventListener(MouseEvent.CLICK,play0);

// Second button
function play1(event:MouseEvent):void{
    myTimer.reset();
    myTimer.start();
    gotoAndStop("kabTab");
}
button1.addEventListener(MouseEvent.CLICK,play1);

// Third button
function play2(event:MouseEvent):void{
    myTimer.reset();
    myTimer.start();
    gotoAndStop("nroog");
}
button2.addEventListener(MouseEvent.CLICK,play2);

// Fourth button
function play3(event:MouseEvent):void{
    myTimer.reset();
    myTimer.start();
    gotoAndStop("posHuab");
}
button3.addEventListener(MouseEvent.CLICK,play3);

1 Ответ

1 голос
/ 02 мая 2011

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

Вот как я бы посмотрел наделает это ..

stop();

// vars
var nextTimer:int = 200;
var maxTimer:int = nextTimer;

// ENTER_FRAME
addEventListener(Event.ENTER_FRAME, _slideshow);
function _slideshow(e:Event):void
{
    nextTimer --;
    if(nextTimer < 1)
    {
        nextSlide();
    }
}


/**
 * Go to the next slide in the slideshow
 */
function nextSlide(e:MouseEvent=null):void
{
    nextTimer = maxTimer;

    if(currentFrame + 1 > totalFrames) gotoAndStop(1);
    else gotoAndStop(currentFrame + 1);
}

/**
 * Go to the previous slide in the slideshow
 */
function prevSlide(e:MouseEvent=null):void
{
    nextTimer = maxTimer;

    if(currentFrame - 1 < 1) gotoAndStop(totalFrames);
    else gotoAndStop(currentFrame - 1);
}


// listeners for next and prev buttons
nextbtn.addEventListener(MouseEvent.CLICK, nextSlide);
prevbtn.addEventListener(MouseEvent.CLICK, prevSlide);
...