2016-01-13 123 views
0

我有一個矩形,我想以恆定的速度向上移動屏幕,並對我的代碼爲什麼不工作感到困惑。以下是代碼:向上移動屏幕上的矩形

package com.ashmore.MyGame; 

import java.util.ArrayList; 
import java.util.List; 

import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Rect; 
import android.util.Log; 

import com.ashmore.framework.Game; 
import com.ashmore.framework.Graphics; 
import com.ashmore.framework.Image; 
import com.ashmore.framework.Screen; 
import com.ashmore.framework.Input.TouchEvent; 

public class GameScreen extends Screen { 
enum GameState { 
Ready, Running, Paused 
} 

GameState state = GameState.Ready; 

boolean BarisMoving = false; 

private ArrayList<Rect> rectangles = new ArrayList<Rect>(); 

int bar_x = 32; 
int bar_y = 653; 
int bar_width = 183; 
int bar_height = 648; 

Rect bar; 
Paint paint; 

public GameScreen(Game game) { 
super(game); 

// Initialize game objects here 

bar = new Rect(); 
bar.set(bar_x, bar_y, bar_width, bar_height); 

// Defining a paint object 
paint = new Paint(); 
paint.setTextSize(30); 
paint.setTextAlign(Paint.Align.CENTER); 
paint.setAntiAlias(true); 
paint.setColor(Color.WHITE); 

} 

private void updateRunning(List<TouchEvent> touchEvents, float deltaTime) { 

// 1. All touch input is handled here: 
int len = touchEvents.size(); 
for (int i = 0; i < len; i++) { 
TouchEvent event = touchEvents.get(i); 

BarisMoving = true; 

if (event.type == TouchEvent.TOUCH_UP) { 

if (ScalesScreen.scaleType.equals("C")) { 
rectangles.add(new Rect(56, 400, 80, 435)); 
//rectangles.get(0); 
break; 
} 
if (BarisMoving) { 

bar_y = bar_y -= 10; 


} 
for (Rect rect : rectangles) { 
if(bar.intersect(rect)) { 

checkButtons(); 

} 

} 

} 

} 

private void checkButtons() { 
    Log.d("GameScreen","Note and Bar Intersected"); 
} 

@Override 
public void paint(float deltaTime) { 
Graphics g = game.getGraphics(); 

Paint paint = new Paint(); 
Paint paint2 = new Paint(); 

paint.setColor(Color.RED); 
paint2.setColor(Color.RED); 

for (Rect rect : rectangles) { 
g.drawRect(rect, paint); 
} 

g.drawRect(bar, paint2); 

} 

private boolean inBounds(TouchEvent event, int x, int y, int width, 
     int height) { 
    if (event.x > x && event.x < x + width - 1 && event.y > y 
      && event.y < y + height - 1) 
     return true; 
    else 
     return false; 
} 
} 

我可能錯過了一些非常基本的東西。但是,我似乎無法找到問題。任何幫助表示讚賞!

+0

「不工作」有點含糊。如果你告訴我們發生了什麼,你會得到更快的答案。 – christutty

+0

我想把屏幕上的矩形條移動到屏幕上,但它並沒有向上移動這個代碼 – user2712795

+0

它與你的問題無關,但不應該「bar_y = bar_y - = 10;」只是「bar_y - = 10;」 ? – christutty

回答

0

我已經想通了我的問題。問題是我的代碼放在updateRunning()方法中的位置。在我的問題,布爾BarisMoving的設置被設置爲等於「真」,當有觸摸事件:

int len = touchEvents.size(); 
for (int i = 0; i < len; i++) { 

TouchEvent event = touchEvents.get(i); 

BarisMoving = true; 

布爾不得不被移動的這個(外側以上INT LEN = touchEvents.size() ;)和整個觸摸事件區域外部以我想要的方式工作(在for(){和結束括號}之外)。