Привет :) Я рисую шесть круг изображения в представлении поверхности., Как это ..андроид подсветка массив растровых изображений один за другим
public class GameBoard extends SurfaceView implements Surface.Callback {
CircleObject circles[];
public GameBoard(Context c){
super(c);
circles = new CircleObject[6];
for(int i = 0; i < circle.length; i++){
circles[i] = new CircleObject(someX, someY, someWidth, someHeight);
}
}
public void surfaceCreated(SurfaceHolder){
// i start the GameLoop here . .
gameLoop.start();
}
public void onDraw(Canvas c){
super.onDraw(c);
gameDraw(c);
}
public void gameDraw(Canvas c){
// draw six circles from left to right
for(int i = 0; i < 6; i++){
circles[i].draw(c);
}
}
public boolean onTouch(TouchEvent event){
for(int i = 0; i < circles.length; i++){
if(circles[i].onTouch(event)){
circles[i].highlight();
return true;
}
}
return false;
}
}»
мой круг объект ..
public class CircleObject{
public CircleObject(int x, int y, int w, int h, Bitmap bmp){
// initialize local variables here from constructors params . .
// set width and height of bmp here
}
public void setBitmap(Bitmap b){
myBmp = b;
}
public boolean onTouch(TOuchEvent event){
// check if event.x and event.y is within
// this circle then return true...,
// false if not.
}
public void draw(Canvas c){
if(isHighlight){
highlightDuration--;
if(highlightDuration == 0){
// set bit map to originalbitmap
setBitmap(originalBitmap);
isHighlight = false;
highlightDuration = 10;
}
}
c.drawBitmap(myBmp, my_X, my_Y, null);
}
public void highlight(){
// store my myBmp so i can set it back from being highlighted
originalBmp = myBmp;
ishighlight = true;
// highlight bitmap
setBitmap(highlightBitmap);
}
}
мой Gameloop .. (работает 10 кадров в секунду)
public class GameLoop extends Thread{
long tickPS = 1000/10;
public void run(){
while(running){
Canvas c = null;
c = surfaceHolder.lockCanvas();
synchronized(surfaceHolder){
gameBoard.onDraw(c);
}
surfaceHolder.unlockCanvasAndPost(c);
sleepTime = tickPS - (System.currentTimeMillis() - startTime);
try {
if (sleepTime > 0) {
Thread.sleep(sleepTime);
} else {
Thread.sleep(10);
}
}
}
}
на экране будет шесть кругов, и когда я коснусь одного из них, кружок выделит короткий период времени и вернется к исходному Bmp (который не подсвечен). пока что работает :).
Теперь я пытаюсь добиться того, что когда я коснулся первого круга, я хочу выделить все из них один за другим. Я имею в виду, что после того, как первый круг был выделен, второй будет выделенный третий, четвертый и т. д .. как анимация анимации, пока что мой план состоит в том, чтобы создать отдельный поток для каждого круга. Я не пробовал это, потому что я думаю, что «бой мой gameLoop обрабатывает рисунок за рамку для меня .., hmhmhm. , ,
любые предложения ребята ..? извините за длинный пост ...
, что «lastCircleHighlighted» мне очень помог :) спасибо –