Javascript中使用鼠标拖动事件的图像旋转器
我整天都在找这个剧本。 有人知道我可以使用鼠标拖动事件来旋转图像的脚本吗。使用javascript 提前感谢。试试这个: 试试这个:Javascript中使用鼠标拖动事件的图像旋转器,javascript,image,mouse,rotation,drag,Javascript,Image,Mouse,Rotation,Drag,我整天都在找这个剧本。 有人知道我可以使用鼠标拖动事件来旋转图像的脚本吗。使用javascript 提前感谢。试试这个: 试试这个: 我有一个实现的想法,因为我还需要写这篇文章,除非你已经有了解决方案,所以我想要:) 无论如何,请执行以下操作: /**编辑:删除我的伪代码以支持前面的真实代码**/ 无论如何。。。我将实施此操作并让您知道。 当然,除非在接下来的几个小时内,有人会发送他的实现:-) /**编辑:谢谢你的帮助**/ 更新: 无论如何,它在这里(将一个图像旋转到另一个图像上:) 它工作
我有一个实现的想法,因为我还需要写这篇文章,除非你已经有了解决方案,所以我想要:) 无论如何,请执行以下操作: /**编辑:删除我的伪代码以支持前面的真实代码**/ 无论如何。。。我将实施此操作并让您知道。 当然,除非在接下来的几个小时内,有人会发送他的实现:-) /**编辑:谢谢你的帮助**/ 更新: 无论如何,它在这里(将一个图像旋转到另一个图像上:) 它工作得很好,但是如果你要导入它,请做一些清理。 它是跨浏览器的 html: javascript:
var alpha=0
var dragOrig = null
var mouseInPic = new Point(0,0)
var diff
var imageNo = 0
function swapImage_or_something(i /* or get src from somewhere else*/) {
$("#static").attr("src", arrCfgImages[i].src)
$("#rotating").attr("src", arrCfgImages[i].src)
$("#static").height(450);
$("#rotating").height(450);
$("#centered").css ({
"margin-left": ($(document).width()-$("#static").width())/2
})
$("#rotating").rotate(0)
}
function doEventBinding() {
$(document).bind("mousedown", function (e) {
dragOrig = new Point (mouseInPic.x, mouseInPic.y)
e.preventDefault()
return
});
$(document).bind("mouseup", function (e) {
if (dragOrig) {
dragOrig = null
alpha+=diff
diff=0
}
});
$(document).bind("mousemove", function (e) {
var x = -1*(Math.round($("#rotating").width()/2+0.01) - (e.pageX - $("#rotating").offset().left - (isIE ? 2 : 0)))
var y = Math.round($("#rotating").height()/2+0.01) - (e.pageY - $("#rotating").offset().top - (isIE ? 2 : 0))
mouseInPic = new Point(x,y)
if (dragOrig) {
var cp = new Point(0,0)
var deg1 = getAngleBetweenPoints(dragOrig, cp)
var deg2 = getAngleBetweenPoints(mouseInPic, cp)
diff = (deg1-deg2)
diff = diff<0 ? diff+360 : diff>360 ? diff-360 : diff
diff = diff>180 ? diff-360 : diff
//my$("debug").innerHTML = diff
$('#rotating').rotate(alpha+diff);
e.preventDefault()
}
});
}
var alpha=0
var dragOrig=null
var mouseInPic=新点(0,0)
变差
var imageNo=0
函数swapImage_或_某物(i/*或从其他地方获取src*/){
$(“#static”).attr(“src”,arrcfimages[i].src)
$(“#旋转”).attr(“src”,arrcfimages[i].src)
$(“静态”)。高度(450);
$(“#旋转”)。高度(450);
$(“#居中”).css({
“左边距”:($(文档).width()-$(“#静态”).width())/2
})
$(“#旋转”)。旋转(0)
}
函数doEventBinding(){
$(文档).bind(“mousedown”,函数(e){
dragOrig=新点(鼠标输入点x,鼠标输入点y)
e、 预防默认值()
返回
});
$(document).bind(“mouseup”,函数(e){
如果(dragOrig){
dragOrig=null
α+=diff
差异=0
}
});
$(文档).bind(“mousemove”,函数(e){
变量x=-1*(数学圆($(“#旋转”).width()/2+0.01)-(e.pageX-$(“#旋转”).offset().left-(isIE?2:0)))
变量y=数学圆($(“#旋转”).height()/2+0.01)-(e.pageY-$(“#旋转”).offset().top-(isIE?2:0))
鼠标输入=新点(x,y)
如果(dragOrig){
var cp=新点(0,0)
var deg1=各点之间的角度(dragOrig,cp)
var deg2=各点之间的角度(鼠标输入,cp)
差异=(deg1-deg2)
diff=diff360?diff-360:diff
diff=diff>180?diff-360:diff
//my$(“调试”).innerHTML=diff
$(“#旋转”)。旋转(alpha+diff);
e、 预防默认值()
}
});
}
此外:
var toRAD = 1/180*Math.PI;
var toDEG = 180/Math.PI;
function getAngle(dx,dy) {
var ang
if (dx!=0) {
var rad = Math.atan(dy/dx) + (dx<0?Math.PI:0)
ang = rad*toDEG
if (ang<0) ang+=360;
} else {
ang = dy>0 ? 90 : 270;
}
return ang;
}
function getAngleBetweenPoints (p1, p2) {
var dx = p1.x-p2.x
var dy = p1.y-p2.y
return getAngle (dx, dy)
}
var-toRAD=1/180*Math.PI;
var toDEG=180/Math.PI;
函数getAngle(dx,dy){
瓦朗
如果(dx!=0){
var rad=Math.atan(dy/dx)+(dx我有一个实现的想法,因为我也需要写这个,除非你已经有了一个解决方案,所以我想要:)
无论如何,请执行以下操作:
/**编辑:删除我的伪代码以支持前面的真实代码**/
不管怎样,我会实现这一点,并让你知道。
当然,除非在接下来的几个小时内,有人会发送他的实现:-)
/**编辑:谢谢你的帮助**/
更新:
无论如何,它在这里(将一个图像旋转到另一个图像上:)
它工作得很好,但是如果你要导入它,请做一些清理。
它是跨浏览器的
html:
javascript:
var alpha=0
var dragOrig = null
var mouseInPic = new Point(0,0)
var diff
var imageNo = 0
function swapImage_or_something(i /* or get src from somewhere else*/) {
$("#static").attr("src", arrCfgImages[i].src)
$("#rotating").attr("src", arrCfgImages[i].src)
$("#static").height(450);
$("#rotating").height(450);
$("#centered").css ({
"margin-left": ($(document).width()-$("#static").width())/2
})
$("#rotating").rotate(0)
}
function doEventBinding() {
$(document).bind("mousedown", function (e) {
dragOrig = new Point (mouseInPic.x, mouseInPic.y)
e.preventDefault()
return
});
$(document).bind("mouseup", function (e) {
if (dragOrig) {
dragOrig = null
alpha+=diff
diff=0
}
});
$(document).bind("mousemove", function (e) {
var x = -1*(Math.round($("#rotating").width()/2+0.01) - (e.pageX - $("#rotating").offset().left - (isIE ? 2 : 0)))
var y = Math.round($("#rotating").height()/2+0.01) - (e.pageY - $("#rotating").offset().top - (isIE ? 2 : 0))
mouseInPic = new Point(x,y)
if (dragOrig) {
var cp = new Point(0,0)
var deg1 = getAngleBetweenPoints(dragOrig, cp)
var deg2 = getAngleBetweenPoints(mouseInPic, cp)
diff = (deg1-deg2)
diff = diff<0 ? diff+360 : diff>360 ? diff-360 : diff
diff = diff>180 ? diff-360 : diff
//my$("debug").innerHTML = diff
$('#rotating').rotate(alpha+diff);
e.preventDefault()
}
});
}
var alpha=0
var dragOrig=null
var mouseInPic=新点(0,0)
变差
var imageNo=0
函数swapImage_或_某物(i/*或从其他地方获取src*/){
$(“#static”).attr(“src”,arrcfimages[i].src)
$(“#旋转”).attr(“src”,arrcfimages[i].src)
$(“静态”)。高度(450);
$(“#旋转”)。高度(450);
$(“#居中”).css({
“左边距”:($(文档).width()-$(“#静态”).width())/2
})
$(“#旋转”)。旋转(0)
}
函数doEventBinding(){
$(文档).bind(“mousedown”,函数(e){
dragOrig=新点(鼠标输入点x,鼠标输入点y)
e、 预防默认值()
返回
});
$(document).bind(“mouseup”,函数(e){
如果(dragOrig){
dragOrig=null
α+=diff
差异=0
}
});
$(文档).bind(“mousemove”,函数(e){
变量x=-1*(数学圆($(“#旋转”).width()/2+0.01)-(e.pageX-$(“#旋转”).offset().left-(isIE?2:0)))
变量y=数学圆($(“#旋转”).height()/2+0.01)-(e.pageY-$(“#旋转”).offset().top-(isIE?2:0))
鼠标输入=新点(x,y)
如果(dragOrig){
var cp=新点(0,0)
var deg1=各点之间的角度(dragOrig,cp)
var deg2=各点之间的角度(鼠标输入,cp)
差异=(deg1-deg2)
diff=diff360?diff-360:diff
diff=diff>180?diff-360:diff
//my$(“调试”).innerHTML=diff
$(“#旋转”)。旋转(alpha+diff);
e、 预防默认值()
}
});
}
此外:
var toRAD = 1/180*Math.PI;
var toDEG = 180/Math.PI;
function getAngle(dx,dy) {
var ang
if (dx!=0) {
var rad = Math.atan(dy/dx) + (dx<0?Math.PI:0)
ang = rad*toDEG
if (ang<0) ang+=360;
} else {
ang = dy>0 ? 90 : 270;
}
return ang;
}
function getAngleBetweenPoints (p1, p2) {
var dx = p1.x-p2.x
var dy = p1.y-p2.y
return getAngle (dx, dy)
}
var-toRAD=1/180*Math.PI;
var toDEG=180/Math.PI;
函数getAngle(dx,dy){
瓦朗
如果(dx!=0){
var rad=Math.atan(dy/dx)+(dx就这样。这是我的解决方案,它只适用于IE for FF版本,您可以在FF和其他浏览器中找到与vml对象等效的内容:
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="yes">
<HEAD>
<script>
var dragok = false;
var gotElementSelected = false;
var currentElement = null;
function move()
{
if (dragok)
{
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
//rotating
document.getElementById(currentElement).style.rotation=tempX+tempY;
return false;
}
}
function down(){
dragok = true;
if(gotElementSelected && currentElement !=null)
{
document.onmousemove = move;
return false;
}
}
function up()
{
if(gotElementSelected && currentElement !=null)
{
gotElementSelected = false;
dragok = false;
document.onmousemove = null;
currentElement = null;
}
}
</script>
<STYLE>.rvml {
BEHAVIOR: url(#default#VML)
}
</STYLE>
</HEAD>
<BODY bgcolor=DDDDDD>
<?xml:namespace prefix = rvml ns = "urn:schemas-microsoft-com:vml" />
<rvml:image style="POSITION: absolute; WIDTH: 100px; DISPLAY: none; HEIGHT: 100px; TOP: 100px; LEFT:100px; rotation: 0" id=myimage class=rvml
onmousedown="gotElementSelected=true; currentElement=this.attributes.getNamedItem('id').value; selectedElement=currentElement;"
onclick="select_element(this.attributes.getNamedItem('id').value); selectedElement=this.attributes.getNamedItem('id').value;"
src = "path/to/your/image" coordsize = "21600,21600"></rvml:image>
var-dragok=false;
var gotElementSelected=false;
var currentElement=null;
函数move()
{
如果(德拉戈克)
{
tempX=event.clientX+document.body.scrollLeft;
tempY=event.clientY+document.body.scrollTop;
//旋转
document.getElementById(currentElement.style.rotation=tempX+tempY;
返回false;
}
}
函数down(){
德拉戈克=真;
if(gotElementSelected&¤tElement!=null)
{
document.onmousemove=移动;
返回false;
}
}
函数up()
{
if(gotElementSelected&¤tElement!=null)
{
gotElementSelected=false;
dragok=假;
document.onmousemove=null;
电流表