[文件] GamePanel.java ~ 5KB 下载(36) /** * */ package ghost.fivechess.gui; import ghost.fivechess.bean.Common; import ghost.fivechess.bean.GameData; import ghost.fivechess.bean.ImageFactory; http://www.fpshijiazhuang.com/linked/20130207.do; import ghost.fivechess.bean.PanelFactory; import ghost.fivechess.gui.panel.PanelObject; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.SurfaceHolder.Callback; /** * 游戏烘托类 * @author 玄雨 * @qq 821580467 * @date 2013-1-19 */ public class GamePanel extends SurfaceView implements Callback, Common { private SurfaceHolder sfh; private Paint paint; /** * 界面刷星线程 */ private Thread update_thread; /** * 游戏目标 */ private PanelObject game; /** * 触屏能否可用 */ private boolean clickaviliable; public GamePanel(Context context) { super(context); GameData.status = MENU; GameData.context = context; sfh = this.getHolder(); sfh.addCallback(this); paint = new Paint(); paint.setColor(Color.GREEN); paint.setAntiAlias(true); } public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Canvas canvas = sfh.lockCanvas(); GameData.scaleWidth = (float) canvas.getWidth() / (float) GameData.width; GameData.scaleHeight = (float) canvas.getHeight() / (float) GameData.height; sfh.unlockCanvasAndPost(canvas); } public void surfaceCreated(SurfaceHolder holder) { Canvas canvas = sfh.lockCanvas(); GameData.scaleWidth = (float) canvas.getWidth() / (float) GameData.width; GameData.scaleHeight = (float) canvas.getHeight() / (float) GameData.height; sfh.unlockCanvasAndPost(canvas); update_thread = new Thread(new UpdateSurface()); inilization(); update_thread.start(); } public void surfaceDestroyed(SurfaceHolder holder) { GameData.flag = false; update_thread = null; } public boolean onTouchEvent(MotionEvent event) { if (clickaviliable) { int x = (int) ((int) event.getX() / GameData.scaleWidth); int y = (int) ((int) event.getY() / GameData.scaleHeight); game = PanelFactory.getInstance(GameData.status); game.clickAction(x, y); disableTouch(); } return true; } /** * 游戏初始化,包含各种图像资源的加载,状态值的初始化 */ private void inilization() { ImageFactory.loadImageFromAssets("image/background/background.png", "background"); ImageFactory.loadImageFromAssets("image/logo/logo.png", "logo"); ImageFactory.loadImageFromAssets("image/button/start.png", "start"); ImageFactory.loadImageFromAssets("image/button/help.png", "help"); ImageFactory.loadImageFromAssets("image/button/exit.png", "exit"); ImageFactory.loadImageFromAssets("image/button/return.png", "return"); ImageFactory.loadImageFromAssets("image/button/gamestart.png", "game_start"); ImageFactory.loadImageFromAssets("image/button/gamerestart.png", "game_restart"); ImageFactory.loadImageFromAssets("image/button/gamehelp.png", "game_help"); ImageFactory.loadImageFromAssets("image/button/gameback.png", "game_back"); ImageFactory.loadImageFromAssets("image/func/help.png", "help_text"); ImageFactory.loadImageFromAssets("image/func/win.png", "win_text"); ImageFactory.loadImageFromAssets("image/func/loss.png", "loss_text"); ImageFactory.loadImageFromAssets("image/func/chessboard.jpg", "chessboard"); ImageFactory.loadImageFromAssets("image/func/white.png", "white"); ImageFactory.loadImageFromAssets("image/func/black.png", "black"); ImageFactory.loadImageFromAssets("image/func/choose.png", "choose"); GameData.flag = true; GameData.debugModel = true; GameData.fps = 15; GameData.moveSpeedIn=10; GameData.moveSpeedOut=20; clickaviliable = true; } private void myDraw() { Canvas canvas = sfh.lockCanvas(); GameData.canvas=canvas; GameData.paint=paint; canvas.drawColor(Color.BLACK); game = PanelFactory.getInstance(GameData.status); game.drawSelf(); sfh.unlockCanvasAndPost(canvas); } private void myLogic() { } /** * 暂时禁用触屏点击 */ private void disableTouch() { if (clickaviliable) { new Thread(new DisableTouch()).start(); } } /** * 暂时禁用触屏点击 * * @param time */ @SuppressWarnings("unused") private void disableTouch(long time) { if (clickaviliable) { new Thread(new DisableTouch(time)).start(); } } private class DisableTouch implements Runnable { private long time; public DisableTouch() { this.time = 200; } public DisableTouch(long time) { this.time = time; } public void run() { // TODO Auto-generated method stub clickaviliable = false; try { Thread.sleep(time); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } clickaviliable = true; ; } } private class UpdateSurface implements Runnable { public void run() { while (GameData.flag) { long start = System.currentTimeMillis(); myDraw(); myLogic(); long end = System.currentTimeMillis(); if (end - start < GameData.fps) { try { Thread.sleep(GameData.fps - (end - start)); } catch (InterruptedException e) { } } } } } } http://www.haofapiao.com/linked/20130207.do;
相关文章: