开发者

Can i create a javascript carousel which contains a flash file as well as static images?

I was wondering if it's possible to include an swf within a javascript carousel that currently just contains stagic images. What I'm looking to do is include a flash animation within the carousel.

I guess I've got two main questions:

  • Is it possible to cycle through flash files in the same way as an image?
  • How would I get the javascript and flash to interact so the flash file would know when it had been selected?

If it helps, here's the js we're using:

$(document).ready(function(){

    var $looper = true;
    var timer;
    var currentSlide = 0;
    var cell = 0;
    va开发者_开发技巧r row = 1;

    var hCycles = 0;
    var aCycles = 0;

    //no. of full cycles
    var homecycles = 2;
    var aboutcycles = 2;

    //aboutSlide speed
    var fast = 1200;
    var slow = 4000;

    //hide homepage slides
    $('#slide2').fadeOut(0);
    $('#slide3').fadeOut(0);
    $('#slide4').fadeOut(0);
    $('#slide5').fadeOut(0);
    $('#slide6').fadeOut(0);    

    //hide about slides
    $('.a-slide1').fadeOut(0);
    $('.a-slide2').fadeOut(0);
    $('.a-slide3').fadeOut(0);
    $('.a-slide4').fadeOut(0);
    $('#slide-c1 .a-slide1').fadeIn(1200);

    runSlide(fast);

    function runSlide(x) {
        if ($('body').is('.about')) {
            setTimeout(function() {
                    aboutSlides();
                }, x);
            } else {
            if ($looper) {
                setTimeout(function() {
                    slideShow();    
                }, 4000);
            }
        }       

    }

    function slideShow() {
        if ($looper) {
            if (currentSlide++ < 6 && hCycles < homecycles) {
                $('#slide'+ currentSlide).fadeOut(1200);
                if (currentSlide == 6) {
                    $('#slide1').fadeIn(1200);
                    $('#slide-wrapper li').removeClass('active');
                    $('#btn1').addClass('active');
                    currentSlide = 0;
                    hCycles = hCycles+1;
                } else {
                    $('#slide'+ (currentSlide+1)).fadeIn(1200);
                    $('#slide-wrapper li').removeClass('active');
                    $('#btn'+ (currentSlide+1)).addClass('active');
                }
                runSlide();
            } else {
                $looper = false;
            }
        }
    };

    $('#slide-wrapper li').each(function(index) {
        $('#btn'+(index+1)).click(function(){
            $looper = false;
            $('.slide').fadeOut(1200);
            $('#slide'+ (index+1)).fadeIn(1200);
            $('#slide-wrapper li').removeClass('active');
            $(this).addClass('active');
        });
    });


    function aboutSlides() {
            if (cell++ < 3 && aCycles < aboutcycles) {
                if (cell == 3) {
                    if (row < 3) {
                        row = row+1;    
                    } else {
                        row = 1;
                        aCycles = aCycles+1;
                    }
                    var hide = (row-1);
                    if ((row-1) == 0) {hide = 3}
                    $('#slide-c1 .a-slide'+ hide).fadeOut(1200);
                    $('#slide-c1 .a-slide'+row).fadeIn(1200);
                    cell = 0;
                        runSlide(fast);
                } else {
                    $('#slide-c'+(cell+1)+' .a-slide'+ (row-1)).fadeOut(1200);
                    $('#slide-c'+(cell+1)+' .a-slide'+(row)).fadeIn(1200);
                    if (cell == 2) {
                        runSlide(slow);
                    } else {
                        runSlide(fast);
                    }
                }
            } else {
                // create the final strip
                $('#slide-c3 .a-slide3').fadeOut(1200);
                $('#slide-c3 .a-slide4').fadeIn(1200);  
            }
        }

});

Thanks!


There isn't any problem as to whatever content you want to put in your slides. As long as it is valid html, it's valid in a slide. Countless jquery/motools/etc plugins let you specify whatever you want for content. flash is valid.
But you might want to revert to another revealing method. setting the opacity on a swf from javascript is complex and yields to different results, according to browser and flash version. If your flash file is custom made, then you can create a function that fades it to white for example, and call it from javascript. But from experience, changing the opacity of a swf is calling for trouble.
I don't know if this is relevant enough to be an answer, I wanted to post it as a comment, but there isn't any comment button. Oh well.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜