首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在黑莓,设置跟踪球的敏感性没有影响吗?

在黑莓,设置跟踪球的敏感性没有影响吗?
EN

Stack Overflow用户
提问于 2012-09-24 14:06:29
回答 1查看 153关注 0票数 3

我使用下面的代码来设置跟踪球的灵敏度

代码语言:javascript
复制
public class Main extends UiApplication {

    public static void main(String[] args) {
        Main theApp = new Main();
        theApp.enterEventDispatcher();
    }

    public Main() {
        if (Trackball.isSupported()) {
            Trackball.setFilter(Trackball.FILTER_ACCELERATION);
            Trackball.setSensitivityX(20);
            Trackball.setSensitivityY(20);
        }
        pushScreen(new LoginScreen());
    }
}

下面是使用的屏幕:

代码语言:javascript
复制
public class LoginScreen extends MainScreen {
    public LoginScreen() {
        super(MainScreen.NO_VERTICAL_SCROLL | MainScreen.NO_VERTICAL_SCROLLBAR);
        add(...) // SOME COMPONENTS ARE ADDED HERE
    }
}

当我使用LoginScreen中的Trackball.getSensitivityX()navigationMovement中的Trackball.getSensitivityY()检查轨迹球的灵敏度时,它返回"2147483647",同时,如果我在Main中立即设置它之后,它返回"20“!

因此,我将设置块移动到LoginScreen本身中,如下所示:

代码语言:javascript
复制
 public class LoginScreen extends MainScreen {
        public LoginScreen() {
            super(MainScreen.NO_VERTICAL_SCROLL | MainScreen.NO_VERTICAL_SCROLLBAR);
            if (Trackball.isSupported()) {
                Trackball.setFilter(Trackball.FILTER_ACCELERATION);
                Trackball.setSensitivityX(20);
                Trackball.setSensitivityY(20);
            }
            add(...) // SOME COMPONENTS ARE ADDED HERE
        }
    }

它还通过在Trackball.getSensitivityX()Trackball.getSensitivityY()中使用navigationMovement返回"2147483647“。

最后,基于一些web搜索,我将条件移到navigationMovement中如下:

代码语言:javascript
复制
protected boolean navigationMovement(int dx, int dy, int status, int time) {
        if (Trackball.isSupported()) {
            Trackball.setFilter(Trackball.FILTER_ACCELERATION);
            Trackball.setSensitivityX(20);
            Trackball.setSensitivityY(20);
        }
        return super.navigationMovement(dx, dy, status, time);      
    }

问题是导航运动从索引0跳到索引2到索引4.每一次移动都绕过场内的etc!

如何正确设置屏幕跟踪球的灵敏度?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-25 13:52:14

我也无法理解这个API设计,在我的经验中,这些方法不起作用。作为解决办法,您可以在Screen类中调用以下方法:

Screen.setTrackballSensitivityXOffset

Screen.setTrackballSensitivityYOffset

Screen.setTrackballFilter

使用前两个方法,可以将作为参数传递的偏移量添加到当前用户敏感性中。值在-100,100之间,并且还允许特殊值Integer.MAX_VALUE将值设置为"unset“。(别问我什么叫“未定”)。

现在来了讨厌的部分。假设100是灵敏度的最大值,如果我们想将其设置为100,我们首先需要得到所需值与实际值之间的差异。然后将灵敏度偏移量设置为屏幕。为了简洁起见,我不检查值在范围内:

代码语言:javascript
复制
int desiredSensitivityX = 100;  //your value here
int offsetX = desiredSensitivityX  - Trackball.getSensitivityXForSystem(); // make sure offset is not out of range
this.setTrackballSensitivityXOffset(offsetX); //here "this" is your screen

您可以将该代码放入屏幕构造函数中。它只适用于那个屏幕。离开屏幕后,灵敏度(实际上是偏移量)恢复正常。

最后,最后一个方法,也是在screen类中,允许您只为该屏幕设置trackball过滤器。因此,您可以将这一行放在构造函数中:

代码语言:javascript
复制
this.setTrackballFilter(Trackball.FILTER_ACCELERATION);

在你离开屏幕后应该会恢复正常。

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12566725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档