87,910
社区成员
发帖
与我相关
我的任务
分享
Resize.prototype={
init:function(content,cut,cutImg,options){
var handler = this;
//...
for(var o in options){
switch(o){
case "RightDown":
if(options[o]){
$(o).onmousedown=function(e){
e=e||window.event;
handler.RightMouseDown.apply(this,[handler,e]);
}
}
break;
default:
break;
}
}
},
RightMouseDown:function(e){
//...
handler.addEvent("mousemove",handler.RightMouseMove,[handler,para,e]);
handler.addEvent("mouseup",handler.RightMouseUp,[handler]);
},
RightMouseMove:function(){
//...
},
RightMouseUp:function(){
//...
handler.deleteEvent("mousemove",handler.RightMouseMove);
handler.deleteEvent("mouseup",handler.RightMouseUp);
},
addEvent:function(name,funName,para){
var regHandler = funName;
if(para){
regHandler=function(){
funName.apply(this,para);
}
}
if(document.addEventListener){
document.addEventListener(name,regHandler,true);
}
else{
document.attachEvent("on"+name,regHandler);
}
},
deleteEvent:function(name,funName,para){
if(document.addEventListener){
document.removeEventListener(name,funName,true);
}
else{
document.detachEvent("on"+name,funName);
}
}
}
var addEvent = function(name,funName,para){
var regHandler = funName;
if(para){
document.regHandler=function(){
funName.apply(this,para);
}
}
if(document.addEventListener){
document.addEventListener(name,document.regHandler,true);
}
else{
document.attachEvent("on"+name,document.regHandler);
}
};
var deleteEvent = function(name,funName,para){
if(document.addEventListener){
document.removeEventListener(name,document.regHandler,true);
}
else{
document.detachEvent("on"+name,document.regHandler);
}
};
var handler = function(str){
alert(str);
};
var param = ["test"]
addEvent("click",handler,param);
deleteEvent("click",handler,param);
//知道哪里有问题了,如果把
//this.addEvent(document,"mousemove",this.bindEvent(this,this.RightDownMouseMove));
//this.addEvent(document,"mouseup",this.bindEvent(this,this.RightDownMouseUp));
//这两个换成下面注释中的就可以正常运行,如果不换成注释的mouseup总是释放不了。是什么原因呢?
var Resize=Class.create();
Resize.prototype={
init:function(content,cut,cutImg){
this.content=content;
this.cut=cut;
this.cutImg=$(cutImg);
},
Set:function(funCase){
var fun;
switch(funCase){
case "RightDown":
fun=this.RightDownMouseDown;
this._obj=$(funCase);
break;
default:break;
}
this.addEvent(this._obj,"mousedown",this.bindEvent(this,fun))
},
RightDownMouseDown:function(){
var e=arguments[0]
this.para={};
this.para.mouseX=e.clientX;
this.para.mouseY=e.clientY;
this.para.cutWidth=this.cut.offsetWidth;
this.para.cutHeight=this.cut.offsetHeight;
this.addEvent(document,"mousemove",this.bindEvent(this,this.RightDownMouseMove));
this.addEvent(document,"mouseup",this.bindEvent(this,this.RightDownMouseUp));
// var handler = this;
// document.onmousemove=function(e){
// e=e||window.event;
// handler.RightDownMouseMove(e);
// }
// document.onmouseup=function(){
// document.onmousemove=null;
// document.onmouseup=null;
// }
},
RightDownMouseMove:function(){
var e=arguments[0]
e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = true);
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
this.cut.style.width=e.clientX-this.para.mouseX+this.para.cutWidth+"px";
this.cut.style.height=e.clientY-this.para.mouseY+this.para.cutHeight+"px";
var rectTop=(parseInt(this.cut.style.top)+1)+"px";//加1边框
var rectRight=(parseInt(this.cut.style.left)+parseInt(this.cut.style.width)+1)+"px";
var rectBottom=(parseInt(this.cut.style.top)+parseInt(this.cut.style.height)+1)+"px";
var rectLeft=(parseInt(this.cut.style.left))+"px";
this.cutImg.style.clip="rect("+rectTop+" "+rectRight+" "+rectBottom+" "+rectLeft+")";
},
RightDownMouseUp:function(){
this.deleteEvent(document,"mousemove",this.RightDownMouseMove);
this.deleteEvent(document,"mouseup",this.RightDownMouseUp);
},
bindEvent:function(obj,fun){
return function(e){
return fun.apply(obj,[e||window.event]);
}
},
addEvent:function(oTarget,name,funName){
if(oTarget.addEventListener) {
oTarget.addEventListener(name,funName,false);
}
else if(oTarget.attachEvent) {
oTarget.attachEvent("on" +name,funName);
}
else{
oTarget["on" + name] = funName;
}
},
deleteEvent:function(oTarget,name,funName){
if(oTarget.removeEventListener) {
oTarget.removeEventListener(name,funName,false);
}
else if(oTarget.detachEvent) {
oTarget.detachEvent("on" + name,funName);
}
else{
oTarget["on" + name] = null;
}
}
}
var Resize=Class.create();//这个没差,就不发了,相当于构造函数,new的时候会执行init
Resize.prototype={
init:function(content,cut,cutImg){
this.content=content;
this.cut=cut;
this.cutImg=$(cutImg);
},
Set:function(funCase){
var fun;
switch(funCase){
case "RightDown":
fun=this.RightMouseDown;
break;
default:break;
}
this.addEvent("mousedown",fun,[this])
},
RightMouseDown:function(){
var handler = arguments[1];
var e=arguments[0]
var para={};
para.mouseX=e.clientX;
para.mouseY=e.clientY;
para.cutWidth=handler.cut.offsetWidth;
para.cutHeight=handler.cut.offsetHeight;
handler.addEvent("mousemove",handler.RightMouseMove,[handler,para]);
handler.addEvent("mouseup",handler.RightMouseUp,[handler]);
},
RightMouseMove:function(){
var e=arguments[0]
var handler=arguments[1];
var para = arguments[2];
e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = true);
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
handler.cut.style.width=e.clientX-para.mouseX+para.cutWidth+"px";
handler.cut.style.height=e.clientY-para.mouseY+para.cutHeight+"px";
var rectTop=(parseInt(handler.cut.style.top)+1)+"px";//加1边框
var rectRight=(parseInt(handler.cut.style.left)+parseInt(handler.cut.style.width)+1)+"px";
var rectBottom=(parseInt(handler.cut.style.top)+parseInt(handler.cut.style.height)+1)+"px";
var rectLeft=(parseInt(handler.cut.style.left))+"px";
handler.cutImg.style.clip="rect("+rectTop+" "+rectRight+" "+rectBottom+" "+rectLeft+")";
},
RightMouseUp:function(){
var handler = arguments[1];
handler.deleteEvent("mousemove",handler.RightMouseMove);
handler.deleteEvent("mouseup",handler.RightMouseUp);
},
addEvent:function(name,funName,para){
var regHandler = funName;
if(para){
regHandler=function(e){
funName.apply(this,[e||window.event].concat(para));
}
}
if(document.addEventListener){
document.addEventListener(name,regHandler,false);
}
else{
document.attachEvent("on"+name,regHandler);
}
},
deleteEvent:function(name,funName){
if(document.addEventListener){
document.removeEventListener(name,funName,false);
}
else{
document.detachEvent("on"+name,funName);
}
}
}