gpt4 book ai didi

blackberry - 在黑莓中,设置 Trackball Sensitivity 没有效果?

转载 作者:行者123 更新时间:2023-12-04 01:30:06 26 4
gpt4 key购买 nike

我使用下面的代码来设置轨迹球的灵敏度

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());
}
}

这是使用的屏幕:

public class LoginScreen extends MainScreen {
public LoginScreen() {
super(MainScreen.NO_VERTICAL_SCROLL | MainScreen.NO_VERTICAL_SCROLLBAR);
add(...) // SOME COMPONENTS ARE ADDED HERE
}
}

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


所以我将设置 block 移动到 LoginScreen 本身,如下所示:

 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
}
}

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


最后,根据一些网络搜索,我将条件移动到 navigationMovement 中,如下所示:

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 ... 等等,每次移动都绕过字段!


如何正确设置轨迹球对屏幕的灵敏度?

最佳答案

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

Screen.setTrackballSensitivityXOffset
Screen.setTrackballSensitivityYOffset
Screen.setTrackballFilter

使用前两种方法,您可以将作为参数传递的偏移量添加到当前用户灵敏度。值在 [-100, 100] 范围内,特殊值 Integer.MAX_VALUE 也允许将值设置为“unset”。 (不要问我 unset 是什么意思)。

现在到了 hacky 部分。假设 100 是灵敏度的最大值,如果我们想将它设置为 100,我们首先需要获得期望值和实际值之间的差值。然后将灵敏度偏移设置到屏幕。为了简洁起见,我没有检查值是否在范围内:

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

您可以将该代码放在屏幕构造函数中。它仅适用于该屏幕。一旦离开该屏幕,灵敏度(实际上是偏移量)就会恢复正常。

最后,最后一个方法,也是在屏幕类中,允许您仅为该屏幕设置轨迹球过滤器。所以你可以把这一行放在你的构造函数中:

this.setTrackballFilter(Trackball.FILTER_ACCELERATION);

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

希望对您有所帮助。

关于blackberry - 在黑莓中,设置 Trackball Sensitivity 没有效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12566725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com