2011-03-14 6 views
1

'touchend'이벤트에서 현재 X 및 Y 위치를 찾습니다. ImageView의 원래 위치는 다음과 같습니다. 왼쪽 = 100상단 = 100. touchend에 그냥 8,10 또는 9,11 등 2 자리 값을 제공합니다. 이제 이미지보기의 오프셋 무엇인지 잘 모르겠습니다. lastLeft + x 및 lastTop + y 인 경우 전혀 작동하지 않습니다. 내가 Db의 TouchEnd에서 Image의 현재 위치를 저장하여 나중에 복원 할 수 있도록하려면 어떻게해야합니까? Appcelerator : 이미지의 현재 위치 찾기

친절하게 나를

답변

1

내 원래의 대답은 정확 도움 : 여기에 업데이트 된 버전입니다.

이벤트 객체의 globalpoint 속성에는 사용자가 클릭 한 좌표가 포함되는 반면 x 및 y 속성은 사용자가 클릭 한 뷰 내의 좌표입니다. 하나를 다른 것으로 가져 가면 (그리고 화면에 상태 표시 줄이 있는지 여부에 따라 허용) 애니메이션을 마친 후에는 객체의 위쪽/왼쪽을 작업 할 수 있습니다.

내가 함께이 입증 된 1.6.0에서 작동하는 데모를 넣어 한 답변

// Windows 
var window = Ti.UI.createWindow(); 

var image = Ti.UI.createImageView({ 
    url: 'KS_nav_ui.png', 
    width: 100, 
    height: 100, 
    top: 0, 
    left: 0, 
    backgroundColor: '#f00' 
}); 

image.addEventListener('touchstart', function (e) { 

    var left = e.globalPoint.x - e.x, 
     top = e.globalPoint.y - e.y - 20; // The 20 accounts for status bar 

    Ti.API.info('Starting left: ' + left); 
    Ti.API.info('Starting top: ' + top); 

}); 

image.addEventListener('touchmove', function(e) { 

    var newX = e.x + image.animatedCenter.x - image.width/2; 
    var newY = e.y + image.animatedCenter.y - image.height/2; 

    image.animate({center:{x:newX,y:newY}, duration:1}); 

}); 

image.addEventListener('touchend', function (e) { 

    var left = e.globalPoint.x - e.x, 
     top = e.globalPoint.y - e.y - 20; // The 20 accounts for status bar 

    Ti.API.info('Finishing left: ' + left); 
    Ti.API.info('Finishing top: ' + top); 

}); 

window.add(image); 

window.open(); 
+0

감사 (단지 새 프로젝트를 만들고 다음 코드로 app.js 교체). 상단과 왼쪽은 표시하지만 현재 표시는 표시하지 않습니다. 그것은 처음에 설정 한 값을 제공합니다. 친절하게 안내 – Volatil3

+0

아, 그래. 이미지를 드래그하고 있습니까? – Craig

+0

예, 끌고 있습니다. – Volatil3