- 浏览: 115356 次
- 性别:
- 来自: 厦门
最新评论
-
人可德福:
非常感谢附上源码包的楼主
实例16--心理测试 -
一口三个汉堡:
ljt122000 写道呵呵....看来大多数搞程序的被切图弄 ...
移动开发那点事-抱怨的移动开发程序员 -
ljt122000:
呵呵....看来大多数搞程序的被切图弄得有点郁闷啊...不管是 ...
移动开发那点事-抱怨的移动开发程序员 -
一口三个汉堡:
半夜透凉清 写道追求自己想要的生活,我是该羡慕你不断的走,跑, ...
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长! -
xdwangiflytek:
楼主发现自己的成长才是最可贵的
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长!
还是要重申一遍,因为只是转化,所以原j2me的问题,我不会进行修改。所以这个游戏还是那个样,各种不搭,非常不搭。。。因为实例需要,我在AndroidSprite中添加了几个方法,也修改paint方法.在转化过程中,遇到了最大的难点是matrix 的使用,他用在图片的翻转上。下面给出效果图,和源码.
MainView
package com.wjh.demon_9; import com.wjh.midp_me.AndroidSprite; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.media.MediaPlayer; import android.util.Log; import android.view.KeyEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.SurfaceHolder.Callback; public class MainView extends SurfaceView implements Callback,Runnable{ int keyCode = 0; String keyAction = ""; Thread gameThread = null; boolean isGame = true; SurfaceHolder holder = null; public AndroidSprite m_spDancer; //管理MM精灵 public ArrowSprite m_aArr_S[]; //管理静态箭头 public ArrowSprite m_aArr_M[]; //管理动态箭头 public int m_aSteps[] = { //存储舞步 1, 0, 2, 3, 1, 0, 1, 3, 0, 1, 2, 3, 3, 1, 1, 2, 1, 2, 1, 0, 1, 2, 1, 1, 0, 0, 1, 3, 0, 0, 2, 2, 1, 1, 2, 2, 1, 0, 2, 1, 3, 3, 0, 3, 0, 0, 2, 0 }; public int m_nStep = 0; //下一个舞步在m_aSteps中的索引 MediaPlayer m_Player; Paint backPaint = null; Paint forePaint = null; public MainView(Context context) { super(context); // TODO Auto-generated constructor stub setFocusable(true); getHolder().addCallback(this); holder = this.getHolder(); //读取MM精灵图片,设置MM精灵的参考点及位置 Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.dancer); m_spDancer = new AndroidSprite( image, 61, 80 ); //读取箭头图片,创建两种箭头数组 Bitmap image2 = BitmapFactory.decodeResource(getResources(), R.drawable.arrow); m_aArr_S = new ArrowSprite[4]; for( int n = 0; n < m_aArr_S.length; n ++ ){ m_aArr_S[n] = new ArrowSprite( image2, 15, 15 ); m_aArr_S[n].StartStatic( 15 + n * 20, 30, n ); } m_aArr_M = new ArrowSprite[6]; //最多同时显示6个动态箭头 for( int n = 0; n < m_aArr_M.length; n ++ ){ m_aArr_M[n] = new ArrowSprite( image2, 15, 15 ); } m_Player = MediaPlayer.create(context, R.raw.music); m_Player.setLooping(true); m_Player.start(); backPaint = new Paint(); backPaint.setColor(Color.BLACK); forePaint = new Paint(); } @Override public void run() { //获取系统当前时间,并将时间换算成以毫秒为单位的数 long T1 = System.currentTimeMillis(); long T2 = T1; while(isGame){ T2 = System.currentTimeMillis(); if( T2 - T1 > 100 ){ //间隔100毫秒 T1 = T2; input(); logic(); doDraw(); } } } //开始游戏主线程 public void start() { m_spDancer.defineReferencePixel( 30, 40 ); m_spDancer.setRefPixelPosition(getWidth() - 50, getHeight()/2); if(gameThread == null) { gameThread = new Thread(this); gameThread.start(); } } //停止游戏主线程 public void stop() { isGame = false; if(gameThread != null) { try { gameThread.join(); this.m_Player.stop(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //输入判断 public void input() { m_spDancer.setFrame( 0 ); //如果按下方向键的上键,MM向上跳舞 if( keyCode == KeyEvent.KEYCODE_DPAD_UP) m_spDancer.setFrame( 1 ); //如果按下方向键的下键,MM向下跳舞 if( keyCode == KeyEvent.KEYCODE_DPAD_DOWN ) m_spDancer.setFrame( 2 ); //如果按下方向键的左键,MM向左跳舞 if( keyCode == KeyEvent.KEYCODE_DPAD_LEFT) m_spDancer.setFrame( 3 ); //如果按下方向键的右键,MM向右跳舞 if( keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) m_spDancer.setFrame( 4 ); keyCode = -1; } public long m_LogicT1 = System.currentTimeMillis(); //逻辑判断 public void logic() { for( int n = 0; n < m_aArr_M.length; n ++ ) m_aArr_M[n].Logic(); long mT2 = System.currentTimeMillis(); if( mT2 - m_LogicT1 > 1500 ){ m_LogicT1 = mT2; for( int n = 0; n < m_aArr_M.length; n ++ ){ if( m_aArr_M[n].isVisible() == false ){ m_aArr_M[n].StartMove( 15 + m_aSteps[n] * 20, 110, 30, 1, m_aSteps[n] ); break; } } m_nStep ++; if( m_nStep > m_aSteps.length ) m_nStep = 0; } } public void doDraw() { Canvas c = null; try { c = holder.lockCanvas(); synchronized (holder) { paint(c); } }finally{ if(c != null) { holder.unlockCanvasAndPost(c); } } } //画图 public void paint(Canvas canvas) { //用黑色清屏 canvas.drawRect(0, 0, getWidth(), getHeight(), backPaint); //显示MM及所有箭头图像 m_spDancer.paint(canvas,forePaint); for( int n = 0; n < m_aArr_S.length; n ++ ){ m_aArr_S[n].paint(canvas,forePaint); } for( int n = 0; n < m_aArr_M.length; n ++ ){ m_aArr_M[n].paint(canvas,forePaint); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub stop(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub this.keyCode = keyCode; return true; } }
apk文件(将后缀改为apk):Demon_9.zip
源代码:Demon_9.rar
发表评论
-
android-单独开启闪光灯方法--适用于moto手机
2011-10-14 10:11 6951代码来自于http://code.google.com/p/s ... -
android线性布局布局的layout_weight
2011-10-08 16:23 1681对于LinearLayout的layout_weight属性, ... -
android-xml文件解析教程
2011-09-21 00:32 2106在讨论群里里面有人在问xml的解析方法,我就弄了个简单的d ... -
实例17--无敌抢钱鸡
2011-09-03 21:32 1055随着转化的进行,难度也在增加,这次的实例我弄了一天,当然有 ... -
实例16--心理测试
2011-09-01 11:59 2090隔了两个月,又重新开 ... -
实例-15---猜数字
2011-06-23 23:48 1376经典游戏,猜数字。各种不解释,因为最近发生了一些事情,所以 ... -
实例14---不准+弱智的生物钟
2011-06-19 12:06 1173这个例子在java me主要是演示form的使用,在and ... -
实例13---点击速度测试机
2011-06-18 00:15 1072在原java me中通过这个例子是想要讲解RecordSt ... -
实例12--会动的地图
2011-06-16 23:00 1275前面已经出了一个展示地图的例子,这个例子主要运用了将地图的 ... -
实例11--播放按键声音
2011-06-13 11:35 7286实例11播放按键声音,在java me中有playTone ... -
android的Sprite,TiledLayer,LayerManager
2011-06-08 10:42 3344因为android没有提供这些,而我要把j2me的一本游戏 ... -
实例9---我的地图
2011-06-08 10:18 1133实例9,在j2me中是使用了图层管理和地图图层,在andr ... -
实例8--《很幼稚的‘小’鸡快跑》
2011-06-04 22:08 1401实例8--《小鸡快跑》,原书用的是java me 提供的s ... -
实例7---android 版Sprite代码
2011-06-03 23:38 2997因为android 没有提供sp ... -
实例6--文字滚屏
2011-06-02 23:59 1112这个实例的本意展示j2me的字体,和滚屏的实现。我只实现了 ... -
实例5--自动换行(修订版)
2011-06-02 00:13 2103这个实例主要是运用字体的只是,但是android自带就几种 ... -
实例4---拼单词游戏
2011-06-01 00:02 1399这个第四个实例,我只是单纯的把j2me的代码换成andro ... -
实例3--使用surfaceView
2011-05-30 19:55 1371在那本书用的是GameCanvas,我就用surfaceVi ... -
实例2---获得按键值
2011-05-29 00:08 1171《手机游戏50例》第二个实例为将按键值显示在屏幕上,下面给出M ... -
《java手机游戏50例》转成android版。。--游戏View框架代码
2011-05-28 20:48 3608这学期我们班教j2me游戏开发,教材是《java游戏50例 ...
相关推荐
51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组...
51单片机Proteus仿真实例 K1-K4 键状态显示51单片机Proteus仿真实例 K1-K4 键状态显示51单片机Proteus仿真实例 K1-K4 键状态显示51单片机Proteus仿真实例 K1-K4 键状态显示51单片机Proteus仿真实例 K1-K4 键状态显示...
51单片机Proteus仿真实例 K1-K4 控制LED移位51单片机Proteus仿真实例 K1-K4 控制LED移位51单片机Proteus仿真实例 K1-K4 控制LED移位51单片机Proteus仿真实例 K1-K4 控制LED移位51单片机Proteus仿真实例 K1-K4 控制...
51单片机Proteus仿真实例 K1-K4 控制数码管移位显示51单片机Proteus仿真实例 K1-K4 控制数码管移位显示51单片机Proteus仿真实例 K1-K4 控制数码管移位显示51单片机Proteus仿真实例 K1-K4 控制数码管移位显示51单片机...
axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 ...
51单片机Proteus仿真实例 K1-K4 控制数码管加减演示51单片机Proteus仿真实例 K1-K4 控制数码管加减演示51单片机Proteus仿真实例 K1-K4 控制数码管加减演示51单片机Proteus仿真实例 K1-K4 控制数码管加减演示51单片机...
51单片机Proteus仿真实例 K1-K4 控制LED移位 (2)51单片机Proteus仿真实例 K1-K4 控制LED移位 (2)51单片机Proteus仿真实例 K1-K4 控制LED移位 (2)51单片机Proteus仿真实例 K1-K4 控制LED移位 (2)51单片机Proteus仿真...
javascript实例应用---连接数据库实例.rarjavascript实例应用---连接数据库实例.rarjavascript实例应用---连接数据库实例.rarjavascript实例应用---连接数据库实例.rar
FLUENT工程技术与实例分析--周俊杰(上)
javascript实例应用---系统检测类.rarjavascript实例应用---系统检测类.rarjavascript实例应用---系统检测类.rarjavascript实例应用---系统检测类.rar
javascript实例应用---在线测试类.rarjavascript实例应用---在线测试类.rarjavascript实例应用---在线测试类.rarjavascript实例应用---在线测试类.rar
javascript实例应用---图片特效类.rarjavascript实例应用---图片特效类.rarjavascript实例应用---图片特效类.rarjavascript实例应用---图片特效类.rar
javascript实例应用---密码校验类.rarjavascript实例应用---密码校验类.rarjavascript实例应用---密码校验类.rarjavascript实例应用---密码校验类.rar
javascript实例应用---计数转换类.rarjavascript实例应用---计数转换类.rarjavascript实例应用---计数转换类.rarjavascript实例应用---计数转换类.rar
javascript实例应用---鼠标键盘类.rarjavascript实例应用---鼠标键盘类.rarjavascript实例应用---鼠标键盘类.rarjavascript实例应用---鼠标键盘类.rar
c#控件实例大全c#控件实例大全---------------
路由器配置实例--100例,路由器配置实例--100例