繁体   English   中英

jQuery使图像旋转间隔平滑减小

[英]jQuery Make image rotating interval decrease smoothly

这是我的网站:

我试图让CD缓慢停止旋转,或者在我单击按钮或按空格键时再次缓慢启动,但是setTimeout()对我不起作用。

谢谢。

以下是我体内的js。

var diskCenter = [480, 480];
var disk = new Image;
disk.src = 'disk.jpg';
window.onload = function () {
    var ang = 0;
    var c = document.getElementsByTagName('canvas')[0];
    var ctx = c.getContext('2d');
    setInterval(function () {
        ctx.save();
        ctx.clearRect(0, 0, c.width, c.height);
        ctx.translate(c.width, 0);
        ctx.rotate(Math.PI / 180 * (ang += 5));
        ctx.drawImage(disk, -diskCenter[0], -diskCenter[1]);
        ctx.restore();
    }, 25);
};

这是我用来使其工作的代码(我有两个按钮,一个按钮减慢动画(并反转),另一个按钮加速动画:

(function ($) {

    var ang = 0;
    var speed = 5;
    var minSpeed = -10;
    var maxSpeed = 10;
    var c = $('#discCanvas')[0];
    var ctx = c.getContext('2d');

    var diskCenter = [480, 480];
    var disk = new Image;
    disk.src = 'http://swellgarfo.com/9/disk.jpg';


    $(function () {
        setInterval(function () {
            ctx.save();
            ctx.clearRect(0, 0, c.width, c.height);
            ctx.translate(c.width, 0);
            ctx.rotate(Math.PI / 180 * (ang += speed));
            ctx.drawImage(disk, -diskCenter[0], -diskCenter[1]);
            ctx.restore();
        }, 25);
    });

    $('#slowButton').on('click', function () {
        speed = Math.max(minSpeed, speed - 1);
    });

    $('#fastButton').on('click', function () {
        speed = Math.min(maxSpeed, speed + 1);
    });
})(jQuery);

您将必须使用clearInterval()函数来停止CD。 由于已经使用setInterval()旋转了CD。

干得好。

HTML:

包括一个链接:

停止

Javascript:我在这里使用Jquery。 因此包括:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

            var my = setInterval(function(){
                ctx.save();
                ctx.clearRect( 0 , 0, c.width, c.height );
                ctx.translate( c.width , 0 );
                ctx.rotate(Math.PI / 180 * (ang += 5));
                ctx.drawImage( disk, -diskCenter[0], -diskCenter[1] );
                    ctx.restore();

            },25);     

        $(document).ready(function(){
            $("#stop").click(function(e){
                e.preventDefault();
                window.clearInterval(my);
            });
        });

我相信这是有道理的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM