Appcelerator:查找Image的当前位置

时间:2011-03-14 19:00:10

标签: iphone imageview appcelerator appcelerator-mobile

我在' touchend '事件中找到了当前的X和Y位置。现在说ImageView的原始位置是; 左= 100 顶部= 100 。在 touchend 它只给出2位数的值,即8,10或9,11等。现在我不确定图像视图的偏移是什么。如果它是lastLeft + x和lastTop + y那么它根本不会起作用。我想在Db的TouchEnd中保存Image的当前位置,以便我以后可以恢复它。

请帮助我

1 个答案:

答案 0 :(得分: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();