Android: изменить скорость мяча с помощью SeekBar - PullRequest
0 голосов
/ 25 января 2012

Я написал приложение, которое в основном показывает прыгающий мяч на экране.Я хочу добавить 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 ()?

Ответы [ 2 ]

0 голосов
/ 25 января 2012
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {       

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

  ball.setSpeedX(finx);
  ball.setSpeedY(finy);
  ball.invalidate();
}
0 голосов
/ 25 января 2012

Вам не нужно возвращать их обратно в onCreate (во всяком случае, это не очень возможно), вам просто нужно снова установить скорость мяча в конце onProgresschanged ()

@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {       

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

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