Ver Mensaje Individual
  #14 (permalink)  
Antiguo 19/12/2007, 20:25
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: Arrastrar objetos

Hola, Pepe, yo hice esta prueba cun una capa y con una imagen, y ambas se comportan de la misma manera.
El código que usé es este:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Untitled Document</title>
<
script>
//inicio lib
function $(id){
    return 
document.getElementById(id);    
}
function 
addEvent(objevTypefnuseCapture){
 
  if (
obj.addEventListener){
    
obj.addEventListener(evTypefnuseCapture);
    
  } else if (
obj.attachEvent){
    
obj.attachEvent("on"+evTypefn);
   
  } else {
   
obj['on'+evType]=fn;
  }
}

function 
removeEvent(objevTypefnuseCapture){
  if (
obj.removeEventListener){
    
obj.removeEventListener(evTypefnuseCapture);
    return 
true;
  } else if (
obj.detachEvent){
    
obj.detachEvent("on"+evTypefn);
  
  } else {
      
obj['on'+evType]=function(){};
     
  }
}

function 
stopEvent(e) {
    if (!
ewindow.event;
    if (
e.stopPropagation) {
        
e.stopPropagation();
    } else {
        
e.cancelBubble true;
    }
}
function 
cancelEvent(e) {
    if (!
ewindow.event;
    if (
e.preventDefault) {
        
e.preventDefault();
    } else {
        
e.returnValue false;
    }
}
//fin lib
arrastrable={};
function 
mover(e){
e=|| window.event;
o=e.srcElement || e.target;
arrastrable.c2x=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft;
arrastrable.c2y=e.clientY+document.documentElement.scrollTop+document.body.scrollTop;
o.style.left=arrastrable.c2x-arrastrable.c1x+arrastrable.o1x+'px';
o.style.top=arrastrable.c2y-arrastrable.c1y+arrastrable.o1y+'px';
cancelEvent(e);
stopEvent(e);
}
function 
detener(){
    
removeEvent(document'mousemove'moverfalse);
    
removeEvent(document'mouseup'detenerfalse);
}
function 
i(e){
e=|| window.event;
o=e.srcElement || e.target;
if(
o.position!="relative"||!o.style.position){
                
o.style.position="relative";
                
o.style.float="none";
            }
arrastrable.c1x=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft;
arrastrable.c1y=e.clientY+document.documentElement.scrollTop+document.body.scrollTop;
arrastrable.o1x=!isNaN(parseInt(o.style.left))?parseInt(o.style.left):0;
arrastrable.o1y=!isNaN(parseInt(o.style.top))?parseInt(o.style.top):0;
addEvent(document'mousemove',moverfalse);
addEvent(document'mouseup',detenerfalse);
cancelEvent(e);
stopEvent(e);
}

window.onload=function(){
addEvent($('pp'), 'mousedown',ifalse);
addEvent($('qq'), 'mousedown',ifalse);

}
</script>
</head>

<body>
<div id="qq" style="background-color:#FF0000; width:100px; height:100px; color:#FFFFFF">test</div>
<img id="pp" src="tres.jpg" width="180" height="144" />
</body>
</html> 
Básicamente, el arrastre de la imagen se hizo fluído al agregar estas 2 líneas en la función que maneja el evento mousedown:
Código PHP:
cancelEvent(e);
stopEvent(e);