Android:使用SeekBar改变球的速度

Android:使用SeekBar改变球的速度,android,function,android-widget,seekbar,Android,Function,Android Widget,Seekbar,我写了一个应用程序,基本上在屏幕上显示一个弹跳球。我想添加一个SeekBar,当我改变球的值时,它会增加球的速度。我在我的球课上做了一些函数来获取和设置x和y的速度 package perseus.gfx.test; import everything; public class GfxActivity extends Activity implements OnSeekBarChangeListener { ViewGroup.LayoutParams vg = new ViewGroup.

我写了一个应用程序,基本上在屏幕上显示一个弹跳球。我想添加一个SeekBar,当我改变球的值时,它会增加球的速度。我在我的球课上做了一些函数来获取和设置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()?

您不需要将它们传递回onCreate(无论如何,这不太可能),只需在onProgresschanged()结束时再次设置球的速度即可


谢谢:)我意识到我的错误,我在onCreate中实例化了ball。我把球移到了外面,现在可以了。谢谢,我意识到了我的错误,我在创建时实例化了里面的球,把它移到外面,现在可以了。我想,ball.invalidate()是不必要的,我把它放在了我的ball类中。
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {       

  finx = x + arg1;
  finy = y +arg1;

  ball.setSpeedX(finx);
  ball.setSpeedY(finy);
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {       

  finx = x + arg1;
  finy = y +arg1;

  ball.setSpeedX(finx);
  ball.setSpeedY(finy);
  ball.invalidate();
}