1

' touchend 'イベントで現在のXとYの位置を見つけています。ここで、ImageViewの元の位置は;であると言います。left=100およびtop=100タッチエンドでは、 8、10、9、11などの2桁の値が表示されます。これで、画像ビューのオフセットが何であるかわかりません。lastLeft+xおよびlastTop+yの場合、まったく機能しません。後で復元できるように、DbのTouchEndで画像の現在の位置を保存したいのですが。

親切に助けてください

4

1 に答える 1

1

私の最初の答えは間違っていました。これが更新されたバージョンです。

イベント オブジェクトの 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();
于 2011-03-15T09:49:19.230 に答える