Как сбросить таймер при нажатии следующей кнопки во флэш-фотоальбоме

Я использую Flash Professional CS5 и шаблон "Расширенный фотоальбом" ("Новый" / "Шаблоны" / "Воспроизведение мультимедиа" / "Расширенный фотоальбом").

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

Я новичок в Flash и Actionscript 3, но не могу найти ничего, что касается этой проблемы, только общую информацию о том, как использовать сброс класса таймера. Любая помощь в том, как заставить проклятый таймер перезагружаться, не разрывая весь код, была бы очень признательна.

import fl.data.DataProvider;
import fl.events.ListEvent;
import fl.transitions.*;
import fl.controls.*;

// USER CONFIG SETTINGS =====
var secondsDelay:Number = 20;
var autoStart:Boolean = true;
var transitionOn:Boolean = true; // true, false
var transitionType:String = "Fade"; // Blinds, Fade, Fly, Iris, Photo, PixelDissolve, Rotate, Squeeze, Wipe, Zoom, Random
var hardcodedXML:String="<photos><image title='Rank Badges'>image1.png</image><image title='How It Works'>image2.png</image><image title='First Steps'>image3.png</image><image title='Brain Crank'>image4.png</image><image title='Natural Friendship'>image5.png</image><image title='Fire Hazard'>image6.png</image><image title='I Got This'>image7.png</image><image title='Magic Act'>image8.png</image><image title='Replay'>image9.png</image><image title='Samaritan'>image10.png</image><image title='No Tag Backs'>image11.png</image></photos>";
// END USER CONFIG SETTINGS

// DECLARE VARIABLES AND OBJECTS =====
var imageList:XML = new XML();
var currentImageID:Number = 0;
var imageDP:DataProvider = new DataProvider();
var slideshowTimer:Timer = new Timer((secondsDelay*1000), 0);
// END DECLARATIONS

// CODE FOR HARDCODED XML =====
imageList = XML(hardcodedXML);
fl_parseImageXML(imageList);
// END CODE FOR HARDCODED XML

// EVENTS =====
imageTiles.addEventListener(ListEvent.ITEM_CLICK, fl_tileClickHandler);
function fl_tileClickHandler(evt:ListEvent):void
{
    imageHolder.imageLoader.source = evt.item.source;
    currentImageID = evt.item.imgID;
}
playPauseToggle_mc.addEventListener(MouseEvent.CLICK, fl_togglePlayPause);
function fl_togglePlayPause(evt:MouseEvent):void
{
    if(playPauseToggle_mc.currentLabel == "play")
    {
        fl_startSlideShow();
        playPauseToggle_mc.gotoAndStop("pause");
    }
    else if(playPauseToggle_mc.currentLabel == "pause")
    {
        fl_pauseSlideShow();
        playPauseToggle_mc.gotoAndStop("play");
    }
}
next_btn.addEventListener(MouseEvent.CLICK, fl_nextButtonClick);
prev_btn.addEventListener(MouseEvent.CLICK, fl_prevButtonClick);
function fl_nextButtonClick(evt:MouseEvent):void
{
    fl_nextSlide();
}
function fl_prevButtonClick(evt:MouseEvent):void
{
    fl_prevSlide();
}
slideshowTimer.addEventListener(TimerEvent.TIMER, fl_slideShowNext);
function fl_slideShowNext(evt:TimerEvent):void
{
    fl_nextSlide();
}
// END EVENTS

// FUNCTIONS AND LOGIC =====
function fl_parseImageXML(imageXML:XML):void
{
    var imagesNodes:XMLList = imageXML.children();
    for(var i in imagesNodes)
    {
        var imgURL:String = imagesNodes[i];
        var imgTitle:String = imagesNodes[i].attribute("title");
        imageDP.addItem({label:imgTitle, source:imgURL, imgID:i});
    }
    imageTiles.dataProvider = imageDP;
    imageHolder.imageLoader.source = imageDP.getItemAt(currentImageID).source;
    title_txt.text = imageDP.getItemAt(currentImageID).label;
}
function fl_startSlideShow():void
{
    slideshowTimer.start();
}
function fl_pauseSlideShow():void
{
    slideshowTimer.stop();
}
function fl_nextSlide():void
{
    currentImageID++;
    if(currentImageID >= imageDP.length)
    {
        currentImageID = 0;
    }
    if(transitionOn == true)
    {
        fl_doTransition();
    }
    imageHolder.imageLoader.source = imageDP.getItemAt(currentImageID).source;
    title_txt.text = imageDP.getItemAt(currentImageID).label;
}
function fl_prevSlide():void
{
    currentImageID--;
    if(currentImageID < 0)
    {
        currentImageID = imageDP.length-1;
    }
    if(transitionOn == true)
    {
        fl_doTransition();
    }
    imageHolder.imageLoader.source = imageDP.getItemAt(currentImageID).source;
    title_txt.text = imageDP.getItemAt(currentImageID).label;
}
function fl_doTransition():void
{
    if(transitionType == "Blinds")
    {
        TransitionManager.start(imageHolder, {type:Blinds, direction:Transition.IN, duration:1});
    } else if (transitionType == "Fade")
    {
        TransitionManager.start(imageHolder, {type:Fade, direction:Transition.IN, duration:1});
    } else if (transitionType == "Fly")
    {
        TransitionManager.start(imageHolder, {type:Fly, direction:Transition.IN, duration:1});
    } else if (transitionType == "Iris")
    {
        TransitionManager.start(imageHolder, {type:Iris, direction:Transition.IN, duration:1});
    } else if (transitionType == "Photo")
    {
        TransitionManager.start(imageHolder, {type:Photo, direction:Transition.IN, duration:1});
    } else if (transitionType == "PixelDissolve")
    {
        TransitionManager.start(imageHolder, {type:PixelDissolve, direction:Transition.IN, duration:1});
    } else if (transitionType == "Rotate")
    {
        TransitionManager.start(imageHolder, {type:Rotate, direction:Transition.IN, duration:1});
    } else if (transitionType == "Squeeze")
    {
        TransitionManager.start(imageHolder, {type:Squeeze, direction:Transition.IN, duration:1});
    } else if (transitionType == "Wipe")
    {
        TransitionManager.start(imageHolder, {type:Wipe, direction:Transition.IN, duration:1});
    } else if (transitionType == "Zoom")
    {
        TransitionManager.start(imageHolder, {type:Zoom, direction:Transition.IN, duration:1});
    } else if (transitionType == "Random")
    {
        var randomNumber:Number = Math.round(Math.random()*9) + 1;
        switch (randomNumber) {
            case 1:
                TransitionManager.start(imageHolder, {type:Blinds, direction:Transition.IN, duration:0.25});
                break;
            case 2:
                TransitionManager.start(imageHolder, {type:Fade, direction:Transition.IN, duration:1});
                break;
            case 3:
                TransitionManager.start(imageHolder, {type:Fly, direction:Transition.IN, duration:0.25});
                break;
            case 4:
                TransitionManager.start(imageHolder, {type:Iris, direction:Transition.IN, duration:0.25});
                break;
            case 5:
                TransitionManager.start(imageHolder, {type:Photo, direction:Transition.IN, duration:0.25});
                break;
            case 6:
                TransitionManager.start(imageHolder, {type:PixelDissolve, direction:Transition.IN, duration:0.25});
                break;
            case 7:
                TransitionManager.start(imageHolder, {type:Rotate, direction:Transition.IN, duration:0.25});
                break;
            case 8:
                TransitionManager.start(imageHolder, {type:Squeeze, direction:Transition.IN, duration:0.25});
                break;
            case 9:
                TransitionManager.start(imageHolder, {type:Wipe, direction:Transition.IN, duration:0.25});
                break;
            case 10:
                TransitionManager.start(imageHolder, {type:Zoom, direction:Transition.IN, duration:0.25});
                break;
        }
    } else
    {
        trace("error - transitionType not recognized");
    }
}
if(autoStart == true)
{
   fl_startSlideShow();
   playPauseToggle_mc.gotoAndStop("pause");
}
// END FUNCTIONS AND LOGIC

1 ответ

Когда fl_nextSlide() называется, вы не сбрасываете таймер. В fl_nextSlide() вызов slideshowTimer.reset() сбросить его, а затем вызвать slideshowTimer.start() немедленно начать это снова.

Другие вопросы по тегам