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