我写了一个应用程序,基本上在屏幕上显示一个弹跳球。我想添加一个SeekBar,当我改变它的值时,它会增加球的速度。我在Ball类中创建了函数来获取和设置x和y的速度。
package perseus.gfx.test;
import everything;
public class GfxActivity extends Activity implements OnSeekBarChangeListener {
ViewGroup.LayoutParams vg = new ViewGroup.LayoutParams(-1, -1);
double velx, vely;
double x, y;
double finx, finy;
SeekBar velo;
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Ball ball = new Ball(this);
setContentView(R.layout.main);
addContentView(ball, vg);
tv = (TextView)findViewById(R.id.test);
velo = (SeekBar)findViewById(R.id.vel);
velo.setOnSeekBarChangeListener(this);
x = ball.getSpeedX();
y = ball.getSpeedY();
ball.setSpeedX(finx);
ball.setSpeedY(finy);
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
finx = x + arg1;
finy = y +arg1;
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
//nothing
}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
//nothing
}
}
问题是,(我认为),只有fin1和fin2的局部值受到影响,因此球根本不会移动。 如何将fin1和fin2的值传递回onCreate()?
答案 0 :(得分:0)
你不需要将它们传回onCreate(无论如何都不可能),你应该只需要在onProgresschanged()
结束时再次设置球的速度@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
finx = x + arg1;
finy = y +arg1;
ball.setSpeedX(finx);
ball.setSpeedY(finy);
}
答案 1 :(得分:0)
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
finx = x + arg1;
finy = y +arg1;
ball.setSpeedX(finx);
ball.setSpeedY(finy);
ball.invalidate();
}