' touchend 'イベントで現在のXとYの位置を見つけています。ここで、ImageViewの元の位置は;であると言います。left=100およびtop=100。タッチエンドでは、 8、10、9、11などの2桁の値が表示されます。これで、画像ビューのオフセットが何であるかわかりません。lastLeft+xおよびlastTop+yの場合、まったく機能しません。後で復元できるように、DbのTouchEndで画像の現在の位置を保存したいのですが。
親切に助けてください
' touchend 'イベントで現在のXとYの位置を見つけています。ここで、ImageViewの元の位置は;であると言います。left=100およびtop=100。タッチエンドでは、 8、10、9、11などの2桁の値が表示されます。これで、画像ビューのオフセットが何であるかわかりません。lastLeft+xおよびlastTop+yの場合、まったく機能しません。後で復元できるように、DbのTouchEndで画像の現在の位置を保存したいのですが。
親切に助けてください
私の最初の答えは間違っていました。これが更新されたバージョンです。
イベント オブジェクトの globalpoint プロパティには、ユーザーがクリックした画面上の座標が含まれます。x プロパティと y プロパティは、ユーザーがクリックしたビュー内の座標です。一方を他方から離すことで (また、画面にステータス バーがあるかどうかに応じて、それも可能になります)、アニメーションの終了後にオブジェクトの上部/左側を計算できます。
これを示す 1.6.0 で動作するデモをまとめました (新しいプロジェクトを作成し、app.js を次のコードに置き換えるだけです)。
// 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();