WEB开发网
开发学院手机开发Android 开发 Android游戏中的多线程问题 阅读

Android游戏中的多线程问题

 2010-06-29 15:19:00 来源:WEB开发网   
核心提示:this.initializeFireflyList(fireflyList, fireflyX, fireflyY);然后就是整个View里面Java代码public FireflyView extends View{// ..... 不关键方法都省了// 初始化那个timer的时候就把当前这个实例传过去,方便他调用

this.initializeFireflyList(fireflyList, fireflyX, fireflyY);

然后就是整个View里面

Java代码

public FireflyView extends View{

// ..... 不关键方法都省了

// 初始化那个timer的时候就把当前这个实例传过去,方便他调用方法

FireFlyTimerTask timerTask = new FireFlyTimerTask(this, fireflyX, fireflyY);

// 另一个线程,那个timerTask就用这个copyXYArray方法来把已经更新完了的数据发过来,然后这边再弄个拷贝来用

// 就可以避免冲突了

public synchronized void copyXYArray(int x[], int y[]){

// System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

System.arraycopy(x,0,fireflyX,0,MAX_FIREFLY_COUNT);

System.arraycopy(y,0,fireflyY,0,MAX_FIREFLY_COUNT);

}

// 然后在主线程的onDraw里画到屏幕上

public synchronized void onDraw(Canvas canvas){

int fireflyIndex = 0;

for(Firefly drawFirefly : fireflyList){

// 因为我吧XY都拿出来了,所以画的时候就只有把参数传过去了

drawFirefly.draw(fireflyX[fireflyIndex], fireflyX[fireflyIndex],canvas);

fireflyIndex++;

}

}

}

public FireflyView extends View{

// ..... 不关键方法都省了

// 初始化那个timer的时候就把当前这个实例传过去,方便他调用方法

FireFlyTimerTask timerTask = new FireFlyTimerTask(this, fireflyX, fireflyY);

// 另一个线程,那个timerTask就用这个copyXYArray方法来把已经更新完了的数据发过来,然后这边再弄个拷贝来用

// 就可以避免冲突了

public synchronized void copyXYArray(int x[], int y[]){

// System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

System.arraycopy(x,0,fireflyX,0,MAX_FIREFLY_COUNT);

System.arraycopy(y,0,fireflyY,0,MAX_FIREFLY_COUNT);

}

// 然后在主线程的onDraw里画到屏幕上

上一页  1 2 3 4 5  下一页

Tags:Android 游戏 线程

编辑录入:coldstar [复制链接] [打 印]
赞助商链接