【问题标题】:Appcelerator Titanium click event coordinates out of bounds on (some) AndroidAppcelerator Titanium 点击事件坐标在(某些)Android 上越界
【发布时间】:2014-10-22 12:53:50
【问题描述】:

我有一个简单的视图,可以捕获点击并在复杂图像上评估它们。在某些手机(带有 Android 4.1.2 的三星 S3 Mini)上,该代码可以正常工作,而在其他手机(带有 Android 4.1.1 的 HTC One X)上则不行。问题似乎是点击坐标超出范围。

在我看来,我有一个对象:viewCanvas,宽度为 1250,高度为 290。但是当我单击右下角(例如)时,我的 event.x = 1762.20214 和 event.y = 531.23968

为什么?事件中的 x/y 不应该受视图对象的尺寸约束吗?我检查了 event.source.id,它是正确的对象:viewObject,并且 event.source.rect 显示了正确的宽度和高度。我被难住了,有人见过这个吗?

谢谢

【问题讨论】:

    标签: android click titanium appcelerator


    【解决方案1】:

    在 Titanium 中,触摸坐标应始终是被触摸视图的坐标。这也体现在documentationx and y which describe the x/y coordinates of the event in the view's coordinates)中。但特别是在 Android 上,这并不像建议的那样工作。尤其是 webViews 和 imageViews 很可能在没有正确处理它们的情况下吞下触摸事件(监听器并不总是被触发)。我在使用 Titanium 时认识到的另一件事是您所描述的行为:某些坐标似乎超出了范围。不幸的是,我既不能正确地(即不断地)重现这种情况,也无法找出导致这种行为的原因。

    您的案例支持 Titanium 混合触摸事件的理论。即使触摸事件以某种方式冒泡到父视图,在 1280x720 显示器上似乎也不可能出现 event.x = 1762。

    最后我希望这个解释对你有所帮助,尽管我无法解决你的问题。

    【讨论】:

      【解决方案2】:

      问题被发现是屏幕尺寸的错误表示,一个以 DP(密度无关像素)表示,另一个仅以像素表示。视图以 android 像素报告,但事件以 DP 报告,因为我们在 tiapp.xml 中选择了它作为我们的默认单位。在此处查看详细信息:

      http://developer.appcelerator.com/question/178626/click-event-coordinates-out-of-range-on-some-android-platforms

      谢谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 2015-03-24
        • 1970-01-01
        • 1970-01-01
        • 2020-10-06
        相关资源
        最近更新 更多