我正在研究在MainActivity
上有一个操纵杆的应用程序。游戏杆是一个自定义的视图,并有一个游戏杆类。当用户触摸操纵杆并移动它时,我希望将Y轴值发送到MainActivity
,以便我可以使用该值。将值传递给另一个类
在Joystick.java中,我有一个onTouch()
侦听器。触摸时,操纵杆产生坐标(操纵杆的X和Y),以便我可以在Y轴上得到-100至100的值。
public class Joystick extends View implements OnTouchListener{
int xAxis, yAxis;
public int getYAxis(){
return yAxis;
}
@Override
public boolean onTouch(View arg0, MotionEvent event){
// Code to process event and assign xAxis and yAxis values (-100, 100)
}
}
在MainActivity
我试着做以下,以获得yAxis
值:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ... other code
Joystick joy = (Joystick) findViewById(R.id.joystick1);
joy.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
// updateMotorControl() is the funcion I need to pass my value to
updateMotorControl(joy.getYAxis(), 0);
return true;
}
}
但当然AndroidStudio告诉我,joy
需要被声明为final。问题是,如果它是最终的,我永远不会更新值。
我已经尝试了一百万件事情,并且不断收到类似的错误。我不是问为什么我会得到这个错误。我想知道的是,将该值传递给MainActivity
并转而转入updateMotorControl()
的最佳方法是什么?
你能不能通过它通过一个构造函数? –
你可以使用_this_而不是快乐(或者只是写'getYAxis()');) –
@ChrisBolton我可以看到你的意思,但我不确定那是怎么工作的。你能告诉我如何在代码中做到这一点? –