【问题标题】:jQuery Make image rotating interval decrease smoothlyjQuery使图像旋转间隔平滑减少
【发布时间】:2014-02-05 12:05:30
【问题描述】:

这里是my site:

当我单击按钮或按空格键时,我正在尝试让 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);
};

【问题讨论】:

  • 请把相关代码贴在这里。问题一解决,问题就对其他人毫无用处。

标签: javascript jquery settimeout setinterval spinning


【解决方案1】:

这是我用来让它工作的代码(我有两个按钮,一个可以减慢动画(并反转它),一个可以加快动画速度:

(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);

【讨论】:

    【解决方案2】:

    您必须使用 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);
                });
            });
    

    我相信这是有道理的。

    【讨论】:

      猜你喜欢
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多