我一直在开发一款适用于Android的游戏,但知道到目前为止我还没有使用过一个Activity,这一点非常重要。我的游戏到目前为止工作得很好,但我想在一些设置中使用一个活动,因为这样更容易改变..我一直在阅读一些类似的主题,但我没有成功目的呢。因此,我需要在代码中看到来自屏幕上点击5,5,75,75边界的SettingsActivity的意图。正如我所说,我一直在阅读一些类似的主题并使用代码,但它没有工作..感谢您的帮助
public class MainMenuScreen extends Screen {
public MainMenuScreen(Game game) {
super(game);
}
@Override
public void update(float deltaTime) {
Graphics g = game.getGraphics();
List<TouchEvent> touchEvents = game.getInput().getTouchEvents();
int len = touchEvents.size();
for (int i = 0; i < len; i++) {
TouchEvent event = touchEvents.get(i);
if (event.type == TouchEvent.TOUCH_UP) {
if(inBounds(event,5,5,75,75)){
// Get an Intent to open the SettingsActivity
}if(inBounds(event,85,350,200,75)){
System.out.println("Start Last level");
if(SampleGame.progress==0)
Settings.currentLevel=0;
if(SampleGame.progress==1)
Settings.currentLevel=1;
if(SampleGame.progress==2)
Settings.currentLevel=2;
if(SampleGame.progress==3)
Settings.currentLevel=3;
if(SampleGame.progress==4)
Settings.currentLevel=4;
Settings.save(game.getFileIO());
GameScreen.state=GameState.Ready;
game.setScreen(new GameScreen(game));
}if(inBounds(event,500,350,275,75)){
game.setScreen(new LevelSelectionScreen(game));
}
}
}
}
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;
}
@Override
public void paint(float deltaTime) {
Graphics g = game.getGraphics();
g.drawImage(Assets.menu, 0, 0);
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void dispose() {
}
@Override
public void backButton() {
android.os.Process.killProcess(android.os.Process.myPid());
}
}
答案 0 :(得分:0)
从代码我可以看到你正在关注这本书Beginning Android Games
。这种方法(使用&#34;屏幕&#34;的单一活动)确实非常适合游戏开发。
如果您确实想要添加额外的活动,最好在实现主要活动的Game
(AndroidGame
)类中实现它们的启动/处理。
为了做到这一点,您可以在其中添加newActivity
方法(与setScreen
方法位于同一位置)。它的参数可能会根据您的需要而有所不同:您可以直接传递Intent,也可以传递Class。这一切都取决于重用框架时你想要多少自由。
以下是您可以添加的基本示例:
public abstract class AndroidGame extends Activity implements Game {
public void newActivity(Intent intent) {
startActivity( intent );
}
public void newActivity(Class<?> cls) {
startActivity( new Intent( this, cls ) );
}
}
这只是实现目标的两种方式,而且它们都非常基础。有关可以启动活动的各种方式,请查看Activity和Intent文档。此外,如果您想要从活动中接收回信息,可以使用startActivityForResult并在Game
课程中实施onActivityResult(也许可以选择存储最后一个结果,以便它可以由您的游戏处理。