나는 라이브 벽지를 연구하고 있었다. 하지만 먼저 캔버스 애니메이션을 공부해야합니다. 여기에 코드가 있는데 괜찮습니다. 그것은 math.random()을 사용합니다. 하지만 내가 원한 것은 이것과 같은 것이다. 캔버스 임의의 움직임
여기에서 이미지는 위에서 설명한 경로처럼 움직이기를 원합니다. 내 생각은 x와 y에 math.random을 사용하는 것이다. 그러나 그것을 사용하는 문제는 이미지가 화면의 어느 곳에 나 나타납니다. 나는 임의의 경로를 만들기 위해 이미지를 원한다. x와 y 좌표에 대해 알고 있지만 경로가 임의로 트리거되는 방식을 생각할 수 없습니다. 나는 실제로 그것을 설명 할 수 없다. 그러나 튀는 공에 대해 아는 경우 공에는 임의의 공동이 있습니다. 그냥 그렇게. 여기 내 코드가있다.
public class MainActivity extends Activity {
private Game game;
public Handler updateHandler = new Handler(){
/** Gets called on every message that is received */
// @Override
public void handleMessage(Message msg) {
game.update();
game.invalidate();
super.handleMessage(msg);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
game = new Game(this);
setContentView(game);
Thread myThread = new Thread(new UpdateThread());
myThread.start();
}
public class UpdateThread implements Runnable {
@Override
public void run() {
while(true){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MainActivity.this.updateHandler.sendEmptyMessage(0);
}
}
}
}
public class Game extends View {
private Bitmap image;
private Paint paint;
private int x=0;
public Game(Context context) {
super(context);
image = Bitmap.createBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher));
paint = new Paint();
}
// called every Frame
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(image, x, 0, paint);
}
// called by thread
public void update() {
x = 1;
x += Math.random() * 100;
}
}
당신이 나를 도울 수 있기를 바랍니다. .. 감사합니다.
ahm. 베 지어 곡선? 그것을 사용하거나하는 방법에 대한 링크가 있습니까? 고맙습니다. – thenewbie
[Cubic Hermite splines] (http://en.wikipedia.org/wiki/Cubic_Hermite_spline)을 공부하면 나중에 나오는 것과 비슷한 부드러운 경로를 생성하는 가장 쉬운 방법이 될 수 있습니다. – harism
그것의 수학. :) 매끄러운 곡선을 치워. Ahm 무작위로 x와 y 값을 다른 방향으로 이동시키는 방법을 알고 있습니까? 예를 들어 그냥 직선으로 움직이는 것을 제외하고? – thenewbie