- 浏览: 115980 次
- 性别:
- 来自: 厦门
最新评论
-
人可德福:
非常感谢附上源码包的楼主
实例16--心理测试 -
一口三个汉堡:
ljt122000 写道呵呵....看来大多数搞程序的被切图弄 ...
移动开发那点事-抱怨的移动开发程序员 -
ljt122000:
呵呵....看来大多数搞程序的被切图弄得有点郁闷啊...不管是 ...
移动开发那点事-抱怨的移动开发程序员 -
一口三个汉堡:
半夜透凉清 写道追求自己想要的生活,我是该羡慕你不断的走,跑, ...
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长! -
xdwangiflytek:
楼主发现自己的成长才是最可贵的
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长!
前面已经出了一个展示地图的例子,这个例子主要运用了将地图的放在txt上面,然后读取尽力啊,在j2me中是直接获取,而在android中text放在assets文件夹中,通过AssetManager来获取。应为我已经写出了android版的java me的游戏包,那么转化这些东西就很简单了。
下面给出效果图和代码:
MainView.java
package com.wjh.demon_12; import java.io.InputStream; import com.wjh.midp_me.AndroidLayerManager; import com.wjh.midp_me.AndroidSprite; import com.wjh.midp_me.AndroidTiledLayer; import android.content.Context; import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; 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; Paint backPaint = null; Paint forePaint = null; //具体游戏相关 public AndroidTiledLayer m_TLayer; //管理场景 public AndroidSprite m_ManSprite; //用于显示精灵动画 public AndroidLayerManager m_Manager; //图层管理器,管理各个图层 public int m_nX = 0; //显示区域左上角的横坐标 public int m_nY = 0; //资源管理 AssetManager assetManager = null; public MainView(Context context) { super(context); // TODO Auto-generated constructor stub setFocusable(true); getHolder().addCallback(this); holder = this.getHolder(); backPaint = new Paint(); backPaint.setColor(Color.BLACK); forePaint = new Paint(); assetManager = context.getAssets(); //读取tile图片 Bitmap image = BitmapFactory.decodeResource(context.getResources(), R.drawable.map); //创建TiledLayer场景 m_TLayer = new AndroidTiledLayer( 8, 8, image, 32, 32 ); //设置场景的位置 m_TLayer.setPosition( 0, 0 ); LoadMap(); //读取精灵图片,创建精灵,精灵的像素大小为27*36 Bitmap image2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.man); m_ManSprite = new AndroidSprite( image2, 27, 36 ); //设置精灵左上角的位置 m_ManSprite.setPosition( 80 , 80 ); //将各个图层添入m_Manager m_Manager = new AndroidLayerManager(); m_Manager.append(m_ManSprite); m_Manager.append(m_TLayer); //设置m_Manager的显示区域 m_Manager.setViewWindow( m_nX, m_nY, getWidth(), getHeight() ); } public void LoadMap(){ try{ InputStream is = assetManager.open("map.txt"); int row = 0; //行号 int col = 0; //列号 int ch = is.read(); //读取一个字节的数据 while( ch != -1 ){ //当读到文件末尾时,返回-1 if( ch == '\n' && row < 7 ){ //修正行列号 row ++; col = 0; } else if( ch > '0' && ch < '5' ) {//如果是符合需要的数据 m_TLayer.setCell( row, col, ch - '0' ); if( col < 7 ) col ++; } ch = is.read(); //读取下一数据 } is.close(); //释放资源 } catch (Exception e){ e.printStackTrace(); //显示错误信息 } } @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() { if(gameThread == null) { gameThread = new Thread(this); gameThread.start(); } } //停止游戏主线程 public void stop() { isGame = false; if(gameThread != null) { try { gameThread.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //输入判断 public void input() { boolean m_bKeyDown = false; //有无按键的标志 //如果按下方向键的上键,则显示区域向上移动 if( keyCode == KeyEvent.KEYCODE_DPAD_UP ){ m_nY -= 2; m_bKeyDown = true; } //如果按下方向键的下键,则显示区域向下移动 if( keyCode == KeyEvent.KEYCODE_DPAD_DOWN ){ m_nY += 2; m_bKeyDown = true; } //如果按下方向键的左键,则显示区域向左移动 if( keyCode == KeyEvent.KEYCODE_DPAD_LEFT ){ m_nX -= 2; m_bKeyDown = true; } //如果按下方向键的右键,则显示区域向右移动 if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT ){ m_nX += 2; m_bKeyDown = true; } if( m_bKeyDown ){ //调整显示区域,使显示区域不超出场景 if( m_nX < 0 ) m_nX = 0; //m_TLayer中存储的场景图像的宽度为8*32,高度也为8*32 if( m_nX > getWidth()-8*32 ) m_nX = getWidth()-8*32; if( m_nY < 0 ) m_nY = 0; if( m_nY > getHeight()-8*32 ) m_nY = getHeight()-8*32; //重新设置显示区域 m_Manager.setViewWindow( m_nX, m_nY, getWidth(), getHeight() ); } keyCode = -1; } public long m_LogicT1 = System.currentTimeMillis(); //逻辑判断 public void logic() { //更换精灵当前显示的“帧”编号,“帧”编号不能大于上限 int n = m_ManSprite.getFrame(); n ++; //getFrameSequenceLength可获取精灵图像中“帧”的个数 if( n >= m_ManSprite.getFrameSequenceLength() ) n = 0; m_ManSprite.setFrame(n); } 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); //从屏幕的(0,0)点开始显示图像 m_Manager.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_12.zip
源代码:Demon_12.rar
发表评论
-
android-单独开启闪光灯方法--适用于moto手机
2011-10-14 10:11 6954代码来自于http://code.google.com/p/s ... -
android线性布局布局的layout_weight
2011-10-08 16:23 1686对于LinearLayout的layout_weight属性, ... -
android-xml文件解析教程
2011-09-21 00:32 2122在讨论群里里面有人在问xml的解析方法,我就弄了个简单的d ... -
实例17--无敌抢钱鸡
2011-09-03 21:32 1071随着转化的进行,难度也在增加,这次的实例我弄了一天,当然有 ... -
实例16--心理测试
2011-09-01 11:59 2108隔了两个月,又重新开 ... -
实例-15---猜数字
2011-06-23 23:48 1382经典游戏,猜数字。各种不解释,因为最近发生了一些事情,所以 ... -
实例14---不准+弱智的生物钟
2011-06-19 12:06 1179这个例子在java me主要是演示form的使用,在and ... -
实例13---点击速度测试机
2011-06-18 00:15 1085在原java me中通过这个例子是想要讲解RecordSt ... -
实例11--播放按键声音
2011-06-13 11:35 7291实例11播放按键声音,在java me中有playTone ... -
实例10--不搭的跳舞机
2011-06-10 23:32 1768还是要重申一遍,因为只是转化,所以原j2me的问题,我不会 ... -
android的Sprite,TiledLayer,LayerManager
2011-06-08 10:42 3347因为android没有提供这些,而我要把j2me的一本游戏 ... -
实例9---我的地图
2011-06-08 10:18 1150实例9,在j2me中是使用了图层管理和地图图层,在andr ... -
实例8--《很幼稚的‘小’鸡快跑》
2011-06-04 22:08 1428实例8--《小鸡快跑》,原书用的是java me 提供的s ... -
实例7---android 版Sprite代码
2011-06-03 23:38 3000因为android 没有提供sp ... -
实例6--文字滚屏
2011-06-02 23:59 1115这个实例的本意展示j2me的字体,和滚屏的实现。我只实现了 ... -
实例5--自动换行(修订版)
2011-06-02 00:13 2119这个实例主要是运用字体的只是,但是android自带就几种 ... -
实例4---拼单词游戏
2011-06-01 00:02 1413这个第四个实例,我只是单纯的把j2me的代码换成andro ... -
实例3--使用surfaceView
2011-05-30 19:55 1378在那本书用的是GameCanvas,我就用surfaceVi ... -
实例2---获得按键值
2011-05-29 00:08 1176《手机游戏50例》第二个实例为将按键值显示在屏幕上,下面给出M ... -
《java手机游戏50例》转成android版。。--游戏View框架代码
2011-05-28 20:48 3618这学期我们班教j2me游戏开发,教材是《java游戏50例 ...
相关推荐
在本实例中,我们将探讨如何利用TopMap与C#编程语言相结合,构建一个针对清华大学的网上导航地图应用——“清华网上游”。 【TopMap与C#集成开发】 1. **接口开发**:TopMap提供了丰富的API接口,允许开发者通过C#...
在这个"HTML+CSS+JS数据可视化大屏平台模板实例10-大数据地图"中,我们将探讨如何利用这些技术将大量复杂的数据转化为直观且具有吸引力的地图展示。 首先,HTML(HyperText Markup Language)作为网页内容的结构...
【标题】"实例9---我的地图"涉及到的知识点主要集中在Android应用开发领域,尤其是与地图相关的功能实现。在这个实例中,开发者可能创建了一个自定义的地图应用程序,让用户能够查看和交互地图信息。 【描述】虽然...
计算机软件-编程源码-实例十--电子地图开发之GIS组件--Mapobject深入开发.zip
本实例“HTML+CSS+JS数据可视化大屏平台模板实例30-智慧物联网+GIS地图通用模板”是专门为展示智慧物联网数据与GIS地图结合而设计的一个模板,适用于各种监控、分析和决策支持场景。 首先,HTML(超文本标记语言)...
这个压缩包包含了一个实例,通过这个实例,我们可以学习如何深入地使用MapObject进行地图开发。 MapObject是一个强大的GIS开发工具,它可以被嵌入到各种Windows应用程序中,如Visual Basic、VC++或Delphi等,使得...
此外,还会涉及图层符号化和标签设置,以提高地图的可读性。 2. **实例2:数据编辑** 实例2将介绍如何在ArcMap中进行数据编辑,包括创建新特征、修改现有特征、删除特征以及进行拓扑规则检查。这对于维护和更新...
在构建“HTML+CSS+JS数据可视化大屏平台模板实例12-产品销售”时,我们需要深入了解HTML、CSS和JavaScript这三种技术,并结合数据可视化工具,以创建一个展示产品销售情况的动态大屏幕界面。以下是对这个项目所涉及...
"天地图开发实例"是一个基于Web的项目,它利用了天地图这一强大的地理信息系统平台,为开发者提供了一套具体的实践示例。这个实例主要展示了如何在天地图上进行各种自定义操作,以增强地图的交互性和功能。接下来,...
标题“echarts右键菜单实例 --- 不修改源码”表明我们将探讨如何在ECharts图表上添加右键菜单,而无需直接修改ECharts的源代码。这意味着我们将通过ECharts的API和事件监听来实现这一功能,这是一个常见的最佳实践,...
在本资源"基于Java的实例源码-Google地图JSP标签库.zip"中,我们可以深入探讨几个关键的IT知识点,主要集中在Java编程、JSP(JavaServer Pages)技术和Google地图API的应用。 首先,Java是一种广泛使用的面向对象的...
- 这段代码展示了如何导入 `Alert` 类并定义一个函数 `showData()`,该函数会在用户触发某个事件时弹出消息框。 #### 4. 程序组件布局 - Flex提供了多种布局管理器,如 `HorizontalLayout`, `VerticalLayout`, `...
HTML+CSS+JS数据可视化大屏平台模板实例demo-安徽省地图大屏
在本压缩包“基于Java的实例源码-用的在线地图浏览模块.zip”中,包含的是一个使用Java语言实现的在线地图浏览模块。这个模块可能是为了帮助开发者集成地图功能到他们的应用程序中,使得用户能够方便地查看、导航或...
- **GPS坐标处理**:将接收到的经纬度转换为可读格式,进行地图匹配或其他地理计算。 - **时间同步**:通过GPS获取准确的时间信息,可用于系统时间同步。 4. **第7章:智能安防报警系统** 串口可能用于连接...
JavaScript应用实例-高德地图经纬度求实际距离.js
2. **导入SDK**:将下载的百度地图SDK库导入Android Studio项目中,通常会有一个aar文件或对应的依赖配置。 3. **初始化地图**:在Activity的onCreate方法中,初始化地图控件并设置API密钥。 4. **设置权限**:...