2017-02-08 4 views
0

친구들과 친구들이 실험을 위해 실험 프로젝트를 진행하고 있습니다. 나는 초보자 코더 그래서 나와 함께 베어입니다.페이지에서 이미지를 이동하고 위치를 실시간으로 유지하려면 어떻게해야합니까?

목표 : 페이지에 존재하는 여러 객체 (예 : 이미지, 텍스트, GIF)를 드래그 가능한 스크립트로 이동하고 위치를 실시간으로 유지할 수 있습니다. 우리는 한 번에 몇 사람이 페이지를 액세스하여 화면에서 물체를 움직이게 할 계획입니다. 따라서 아이디어는 여러 화면/장치로 일종의 공동 콜라주를 만드는 것입니다.

나는 그래서 다른 사람들과 도면의 생각을 대신 드래그 이미지를 구현하려는 나는 이미지가 한 번에 이동 위치를 유지하려면이 www.togetherjs.com/examples/drawing/

을 가로 질러왔다.

이미지를 동일한 지점에 유지하고 실시간으로 드래그하고 새 위치를 유지할 수 있도록 추가 할 내용은 무엇입니까? 난 이미 당신은 이러한 목표를 달성하기 위해 JqueryUI을 사용할 수 있습니다 여기에 http://jsfiddle.net/bj2ftf59/

var dragobject = { 
 
    z: 0, 
 
    x: 0, 
 
    y: 0, 
 
    offsetx: null, 
 
    offsety: null, 
 
    targetobj: null, 
 
    dragapproved: 0, 
 
    initialize: function() { 
 
    document.onmousedown = this.drag 
 
    document.onmouseup = function() { 
 
     this.dragapproved = 0 
 
    } 
 
    }, 
 
    drag: function(e) { 
 
    var evtobj = window.event ? window.event : e 
 
    this.targetobj = window.event ? event.srcElement : e.target 
 
    if (this.targetobj.className == "drag") { 
 
     this.dragapproved = 1 
 
     if (isNaN(parseInt(this.targetobj.style.left))) { 
 
     this.targetobj.style.left = 0 
 
     } 
 
     if (isNaN(parseInt(this.targetobj.style.top))) { 
 
     this.targetobj.style.top = 0 
 
     } 
 
     this.offsetx = parseInt(this.targetobj.style.left) 
 
     this.offsety = parseInt(this.targetobj.style.top) 
 
     this.x = evtobj.clientX 
 
     this.y = evtobj.clientY 
 
     if (evtobj.preventDefault) 
 
     evtobj.preventDefault() 
 
     document.onmousemove = dragobject.moveit 
 
    } 
 
    }, 
 
    moveit: function(e) { 
 
    var evtobj = window.event ? window.event : e 
 
    if (this.dragapproved == 1) { 
 
     this.targetobj.style.left = this.offsetx + evtobj.clientX - this.x + "px" 
 
     this.targetobj.style.top = this.offsety + evtobj.clientY - this.y + "px" 
 
     return false 
 
    } 
 
    } 
 
} 
 

 
dragobject.initialize()
.drag { 
 
    position: relative; 
 
    cursor: hand; 
 
    z-index: 100; 
 
    width: 250px; 
 
}
<button onclick="TogetherJS(this); return false;">Start TogetherJS</button> 
 
<br> 
 

 
<img src="http://www.giraffeworlds.com/wp-content/uploads/Beautiful_Masai_Giraffe_Posing_600.jpg" class="drag" onmouseover="this.src='http://www.giraffeworlds.com/wp-content/uploads/Beautiful_Masai_Giraffe_Posing_600.jpg'" onmouseout="this.src='http://www.giraffeworlds.com/wp-content/uploads/Beautiful_Masai_Giraffe_Posing_600.jpg'" 
 
alt="Giraffe Boy" title="Giraffe Boy" class="Glassware" max-width="20px" /> 
 

 

 

 
<script src="https://togetherjs.com/togetherjs-min.js"></script>

+1

모든 것을 실시간으로 만들기 위해 가장 중요한 기술이 빠져 있습니다. Node.js, 또는 Websocket, 프레임 워크가 아닌 경우. – GiamPy

+0

문제를 해결하려면 실시간 서버가 이미지의 위치를 ​​모니터링하고 실시간으로 연결된 모든 클라이언트에 해당 변경 사항을 적용해야합니다. 나는이 프로젝트에서 meteorJS를 선호 할 것이다. 이 프로젝트에서 제기 된 다른 과제는 클라이언트의 다양한 화면 해상도를 관리하는 방법입니다. –

+0

@Mohd Asim Suhail 의견을 보내 주셔서 감사합니다. 나는이 모든 것을 살펴볼 것이다. 매우 감사. –

답변

0

뭔가를 시작했습니다.

단순히 클래스 "daggable 박스"그런 다음 JS 파일에 다음을 추가

<div class="draggable-box"> 
    something in here 
</div> 

와 사업부를 만들 수 있습니다.

$(".draggable-box").draggable(); 
$(".draggable-box").resizable(); 

예 : http://codepen.io/rmfranciacastillo/pen/wWoYao

, BTW 개체가 끌려 그 위치가 저장되지 않습니다하지만 당신은 당신이 개체의 위치를 ​​얻을 수 있기 때문에 저장하고 데이터베이스에 저장할 수 있습니다 .

JQuery라는 태그가 있기 때문에 나는 이것을 제안하고 있지만 이것은 여전히 ​​간단한 프로젝트를위한 과잉이라고 생각합니다.

+0

JQuery에 태그를 지정하는 실수를했습니다. "나는 이것이 여전히 단순한 프로젝트를위한 과잉이라고 생각한다"고 말할 때 무슨 뜻인지 자세히 설명해 주시겠습니까? ? 당신은 당신의 솔루션 + 데이터베이스에서의 입장을 과소 평가할 것이라고 말하고 있습니까? –

+0

JQuery와 같은 거대한 라이브러리를 추가하는 것만으로도 객체를 드래그 할 수 있습니다. JQuery는 여러 사례를 처리하기 때문에 과도한 작업이 될 수 있습니다. 그것은 무료 땅콩을 얻기 위해 보잉 747을 구입하는 것과 같습니다. 보다 헌신적 인 도서관을 찾거나 스스로를 만드는 것이 낫습니다. 저장 위치는 프레임 워크와 DB를 사용하여 수행 할 수 있습니다. 하지만 그것은 당신의 질문의 범위를 벗어납니다. –

+0

나는 이해한다. 감사합니다. 진심으로 감사드립니다. 위의 다른 의견 중 일부는 NodeJS 및 MeteorJS를 추천하므로 그 중 일부를 검토하고 있습니다. 괜찮으 시다면, 이것들 중 어느 것을 인식합니까/그들을 추천 하시겠습니까? –