Jquery mobile 使用jquerymobile旋转图像

Jquery mobile 使用jquerymobile旋转图像,jquery-mobile,cordova,Jquery Mobile,Cordova,我正在开发一个应用程序,我想循环旋转一个图像 我试过很多解决办法。但我没能做到。 但我得到了这个链接,它非常适合网络 我试图将mousedown修改为touchstart,mouseup修改为touchend,mousemove修改为touchmove,并绑定这些功能。但我没能做到 我可以知道如何为jquery mobile实现同样的功能吗 谢谢:)工作jsFiddle示例: 这些活动: mousedown mouseup mousemove 更改为: $('.handle').on('vmou

我正在开发一个应用程序,我想循环旋转一个图像

我试过很多解决办法。但我没能做到。 但我得到了这个链接,它非常适合网络

我试图将
mousedown
修改为
touchstart
mouseup
修改为
touchend
mousemove
修改为
touchmove
,并绑定这些功能。但我没能做到

我可以知道如何为jquery mobile实现同样的功能吗


谢谢:)

工作jsFiddle示例:

这些活动:

mousedown

mouseup

mousemove

更改为:

$('.handle').on('vmousedown',function (e) {
vmousedown

vmouseup

vmousemove

Vmouse事件是jQuery移动事件,用于在桌面设备和移动设备之间架起桥梁。它们将在这两种环境中都能成功工作

另一个区别是它们的绑定方式,这是:

$('.handle').mousedown(function (e) {
更改为:

$('.handle').on('vmousedown',function (e) {
Javascript:

$(function () {
    var dragging = false,
        target_wp,
        o_x, o_y, h_x, h_y, last_angle;
    $('.handle').on('vmousedown',function (e) {
        h_x = e.pageX;
        h_y = e.pageY; // clicked point
        e.preventDefault();
        e.stopPropagation();
        dragging = true;
        target_wp = $(e.target).closest('.draggable_wp');
        if (!target_wp.data("origin")) target_wp.data("origin", {
            left: target_wp.offset().left,
            top: target_wp.offset().top
        });
        o_x = target_wp.data("origin").left;
        o_y = target_wp.data("origin").top; // origin point

        last_angle = target_wp.data("last_angle") || 0;
    })

    $(document).on('vmousemove',function (e) {
        if (dragging) {
            var s_x = e.pageX,
                s_y = e.pageY; // start rotate point
            if (s_x !== o_x && s_y !== o_y) { //start rotate
                var s_rad = Math.atan2(s_y - o_y, s_x - o_x); // current to origin
                s_rad -= Math.atan2(h_y - o_y, h_x - o_x); // handle to origin
                s_rad += last_angle; // relative to the last one
                var degree = (s_rad * (360 / (2 * Math.PI)));
                target_wp.css('-moz-transform', 'rotate(' + degree + 'deg)');
                target_wp.css('-moz-transform-origin', '50% 50%');
                target_wp.css('-webkit-transform', 'rotate(' + degree + 'deg)');
                target_wp.css('-webkit-transform-origin', '50% 50%');
                target_wp.css('-o-transform', 'rotate(' + degree + 'deg)');
                target_wp.css('-o-transform-origin', '50% 50%');
                target_wp.css('-ms-transform', 'rotate(' + degree + 'deg)');
                target_wp.css('-ms-transform-origin', '50% 50%');
            }
        }
    }) // end mousemove

    $(document).on('vmouseup', function (e) {
        dragging = false
        var s_x = e.pageX,
            s_y = e.pageY;

        // Saves the last angle for future iterations
        var s_rad = Math.atan2(s_y - o_y, s_x - o_x); // current to origin
        s_rad -= Math.atan2(h_y - o_y, h_x - o_x); // handle to origin
        s_rad += last_angle;
        target_wp.data("last_angle", s_rad);
    })
})
测试方法:

$(function () {
    var dragging = false,
        target_wp,
        o_x, o_y, h_x, h_y, last_angle;
    $('.handle').on('vmousedown',function (e) {
        h_x = e.pageX;
        h_y = e.pageY; // clicked point
        e.preventDefault();
        e.stopPropagation();
        dragging = true;
        target_wp = $(e.target).closest('.draggable_wp');
        if (!target_wp.data("origin")) target_wp.data("origin", {
            left: target_wp.offset().left,
            top: target_wp.offset().top
        });
        o_x = target_wp.data("origin").left;
        o_y = target_wp.data("origin").top; // origin point

        last_angle = target_wp.data("last_angle") || 0;
    })

    $(document).on('vmousemove',function (e) {
        if (dragging) {
            var s_x = e.pageX,
                s_y = e.pageY; // start rotate point
            if (s_x !== o_x && s_y !== o_y) { //start rotate
                var s_rad = Math.atan2(s_y - o_y, s_x - o_x); // current to origin
                s_rad -= Math.atan2(h_y - o_y, h_x - o_x); // handle to origin
                s_rad += last_angle; // relative to the last one
                var degree = (s_rad * (360 / (2 * Math.PI)));
                target_wp.css('-moz-transform', 'rotate(' + degree + 'deg)');
                target_wp.css('-moz-transform-origin', '50% 50%');
                target_wp.css('-webkit-transform', 'rotate(' + degree + 'deg)');
                target_wp.css('-webkit-transform-origin', '50% 50%');
                target_wp.css('-o-transform', 'rotate(' + degree + 'deg)');
                target_wp.css('-o-transform-origin', '50% 50%');
                target_wp.css('-ms-transform', 'rotate(' + degree + 'deg)');
                target_wp.css('-ms-transform-origin', '50% 50%');
            }
        }
    }) // end mousemove

    $(document).on('vmouseup', function (e) {
        dragging = false
        var s_x = e.pageX,
            s_y = e.pageY;

        // Saves the last angle for future iterations
        var s_rad = Math.atan2(s_y - o_y, s_x - o_x); // current to origin
        s_rad -= Math.atan2(h_y - o_y, h_x - o_x); // handle to origin
        s_rad += last_angle;
        target_wp.data("last_angle", s_rad);
    })
})
  • Firefox21.0

  • IE 9,10

  • 铬27.0.1453.116米

  • Android 4.1.1 Chrome

  • iOS iPad3 Safari