四,主要菜单界面的创建
2015-11-03 23:44
381 查看
package com.hj.lee.game.screens; import static com.badlogic.gdx.scenes.scene2d.actions.Actions.delay; import static com.badlogic.gdx.scenes.scene2d.actions.Actions.moveBy; import static com.badlogic.gdx.scenes.scene2d.actions.Actions.sequence; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.Interpolation; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.utils.viewport.FitViewport; import com.badlogic.gdx.utils.viewport.StretchViewport; import com.badlogic.gdx.utils.viewport.Viewport; import com.hj.lee.game.DirectedGame; import com.hj.lee.game.assets.Assets; import com.hj.lee.game.assets.Constants; import com.hj.lee.game.assets.GamePreferences; import com.hj.lee.game.screens.actor.ButtonActor; import com.hj.lee.game.screens.actor.RadioActor; import com.hj.lee.game.screens.transitions.ScreenTransition; import com.hj.lee.game.screens.transitions.ScreenTransitionFade; import com.hj.lee.game.utils.AudioManager; import com.hj.lee.game.utils.GameObject; /** * @author lee *游戏刚进入时的主菜单界面 */ public class MenuScreen extends AbstractGameScreen { public static final String TAG = MenuScreen.class.getName(); boolean audioIsVisible = false; Stage stage; SpriteBatch batch; Viewport viewport; Image bgImage; ButtonActor playButton; ButtonActor optionsButton; RadioActor sound; RadioActor music; BitmapFont fnt; public MenuScreen(DirectedGame game) { super(game); batch = new SpriteBatch(); viewport = new StretchViewport(Constants.SCREEN_PIXEL_WIDTH, Constants.SCREEN_PIXEL_HEIGHT); stage = new Stage(viewport); fnt = Assets.instance.fnt.bitmapFont; buildStage(); } private void buildStage() { // TODO Auto-generated method stub loadSettings(); bgImage = new Image(new TextureRegionDrawable(Assets.instance.atlas_ui.findRegion(Assets.background))); initAudioActors(); initControls(); stage.clear(); stage.addActor(bgImage); stage.addActor(playButton); stage.addActor(optionsButton); stage.addActor(music); stage.addActor(sound); Gdx.input.setInputProcessor(stage); } private void initAudioActors() { // TODO Auto-generated method stub sound = new RadioActor(new TextureRegionDrawable(Assets.instance.atlas_ui.findRegion(Assets.soundOn)), new TextureRegionDrawable( Assets.instance.atlas_ui.findRegion(Assets.soundOff)), new GameObject(590, 0 - 70, 70, 70), GamePreferences.instance.sound); sound.addListener(new ActorGestureListener() { public void touchDown(InputEvent event, float x, float y, int pointer, int button) { sound.touchDown(); sound.changeDrawable(!GamePreferences.instance.sound); GamePreferences.instance.sound = !GamePreferences.instance.sound; } public void touchUp(InputEvent event, float x, float y, int pointer, int button) { sound.touchUp(); saveSettings(); } }); music = new RadioActor(new TextureRegionDrawable(Assets.instance.atlas_ui.findRegion(Assets.musicOn)), new TextureRegionDrawable( Assets.instance.atlas_ui.findRegion(Assets.musicOff)), new GameObject(520, 0 - 70, 70, 70), GamePreferences.instance.music); music.addListener(new ActorGestureListener() { public void touchDown(InputEvent event, float x, float y, int pointer, int button) { music.touchDown(); music.changeDrawable(!GamePreferences.instance.music); GamePreferences.instance.music = !GamePreferences.instance.music; } public void touchUp(InputEvent event, float x, float y, int pointer, int button) { music.touchUp(); saveSettings(); } }); } void initControls() { playButton = new ButtonActor(new TextureRegionDrawable(Assets.instance.atlas_ui.findRegion(Assets.play)), new GameObject(800 - 130, 130, 130, 130), 1.2f); playButton.addListener(new ActorGestureListener() { public void touchDown(InputEvent event, float x, float y, int pointer, int button) { playButton.touchDown(); } public void touchUp(InputEvent event, float x, float y, int pointer, int button) { playButton.touchUp(); onPlayClicked(); } }); optionsButton = new ButtonActor(new TextureRegionDrawable(Assets.instance.atlas_ui.findRegion(Assets.options)), new GameObject(800 - 130, 0, 130, 130), 1.2f); optionsButton.addListener(new ActorGestureListener() { public void touchDown(InputEvent event, float x, float y, int pointer, int button) { optionsButton.touchDown(); // saveSettings(); } public void touchUp(InputEvent event, float x, float y, int pointer, int button) { onOptionsClicked(); optionsButton.touchUp(); } }); } protected void onPlayClicked() { // TODO Auto-generated method stub ScreenTransition transition = ScreenTransitionFade.init(0.3f); game.setScreen(new LevelScreen(game), transition); //dispose(); } protected void onOptionsClicked() { // TODO Auto-generated method stub showAudioButtons(audioIsVisible); if (audioIsVisible) { audioIsVisible = false; } else { audioIsVisible = true; } } private void showAudioButtons(boolean visible) { // TODO Auto-generated method stub Interpolation moveEasing = Interpolation.swing; float delay = 0.25f; float duration = 0.5f; float moveX = 0 * (visible ? -1 : 1); float moveY = 70 * (visible ? -1 : 1); sound.addAction(moveBy(moveX, moveY, duration, moveEasing)); music.addAction(sequence(delay(delay), moveBy(moveX, moveY, duration, moveEasing))); } private void loadSettings() { GamePreferences prefs = GamePreferences.instance; prefs.load(); } private void saveSettings() { GamePreferences prefs = GamePreferences.instance; prefs.save(); AudioManager.instance.onSettingsUpdated(); } @Override public void resize(int width, int height) { // TODO Auto-generated method stub viewport.setScreenSize(width, height); } @Override public void show() { // TODO Auto-generated method stub } @Override public void hide() { // TODO Auto-generated method stu } @Override public void pause() { // TODO Auto-generated method stub } @Override public void dispose() { // TODO Auto-generated method stub stage.dispose(); batch.dispose(); } @Override public void render(float deltaTime) { // TODO Auto-generated method stub stage.act(deltaTime); stage.draw(); batch.setProjectionMatrix(stage.getCamera().combined); batch.begin(); batch.draw(Assets.instance.atlas_ui.findRegion(Assets.app_name_background), 15, Constants.SCREEN_PIXEL_HEIGHT - Assets.instance.atlas_ui.findRegion(Assets.app_name_background).getRegionHeight() - 10); fnt.setColor(Color.OLIVE); fnt.draw(batch, "STUPID ZOMBIES", 30, 350); batch.end(); } @Override public InputProcessor getInputProcessor() { // TODO Auto-generated method stub return stage; } }
[align=left]主界面包含一些简单的按钮,使用了libgdx中的stage。
[/align]
相关文章推荐
- Android下2d物理引擎Box2d用法简单实例
- winform异型不规则界面设计的实现方法
- Android中设置只有程序第一次运行才显示的界面实现思路
- hta 实现的五子棋界面
- android开发之欢迎界面的小例子
- C#中载入界面的常用方法
- Android判断现在所处界面是否为home主桌面的方法
- android 引导界面的实现方法
- Libgdx之封装简单的脚本机制
- VC 界面库皮肤库相关信息珍藏
- mybatis执行批量更新batch update 的方法(oracle,mysql)
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- Android中界面实现全屏显示的两种方式
- 简单做出不丑设计
- extmail 界面修改
- QT程序启动界面的使用