package com.example.tower_defense;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
class Character_Image_Thread extends Thread{
SurfaceHolder mHolder; //서피스홀더 객체 선언
Bitmap chr_image[] = new Bitmap[1]; //이미지 저장할 비트맵 배열 선언
Canvas c = null; //캔버스 객체 생성
float count = 0.0f; //
int next_count=0;
Character_Image_Thread(Context context, SurfaceHolder surfaceHolder){
mHolder = surfaceHolder;
Resources res = context.getResources();
chr_image[0] = BitmapFactory.decodeResource(res, R.drawable.testimage1);
}
public void run(){
while(true){
try{
c = mHolder.lockCanvas(null);
synchronized(mHolder){
doDraw(c);
sleep(100);
}
}catch (InterruptedException e) {
e.printStackTrace();
}finally{
if(c!=null){
mHolder.unlockCanvasAndPost(c);
}
}
}
}
private void doDraw(Canvas canvas){
if(canvas != null){
count +=20.0f;
canvas.drawBitmap(chr_image[0], count, 400.0f, null);
}
}
}
public class Character_Thread extends SurfaceView implements SurfaceHolder.Callback{
SurfaceHolder mHolder;
private Character_Image_Thread thread; //캐릭터 움직이는 쓰레드 객체 선언
public Character_Thread(Context context) {
super(context);
init(context);
}
public Character_Thread(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context){
mHolder = getHolder();
mHolder.addCallback(this);
thread = new Character_Image_Thread(context, mHolder);
}
public void surfaceCreated(SurfaceHolder holder) {
thread.start();
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
public void surfaceDestroyed(SurfaceHolder holder) {
try{
thread.join();
}catch(Exception e){}
}
}
현재 제가 구성하려고 하는것은
이미지가 일정 속도로 가다가 1초 ~ 2초 뒤 다시 이미지가 나오는걸 구현 하려 합니다.
위에 보시는바와 같이 코드를 구성했는데
1~2초 뒤에 나오게 하려면 어떻게 조건을 줘야할 지 잘 모르겠습니다 `ㅅ`;;
저 코드를 실행시키면 0.1초마다 이미지들이 겹쳐지면서 왼쪽으로 이동하는것이 화면에 출력이 됩니다.
아래 화면과 같이 이미지가 출력이 됩니다 `ㅅ`;;
게임 배경화면이라는 영역은 그냥 텍스트뷰 영역이고
검은색 부분이 쓰레드로 구현한 영역 입니다.
