- 浏览: 12103 次
最新评论
懒骨头你给我听着:你有健康的家人~满意的工作~未知的女友~夫复何求~赶紧去奋斗!!!QQ=124774397;Email=lgtwboy*sina.com;Android技术开发群93367423:骨头属性_排名分先后:Android手机游戏&应用;J2ME手机游戏&应用;Flex\AS\WebGame;Java+Qtjambi桌面通讯软件;J2EE;几种常用CMS二次开发&Discuz皮肤定制;
懒骨头(http://blog.csdn.com/iamlazybone)
纪念Rokon停止更新--从零开始用Rokon开发一个小游戏
还没开始认真的学习Rokon框架,就这么停止更新了,真想接过来继续做下去,可惜骨头太有自知之名了。
那就用Rokon写个小游戏纪念一下:
0.建项目
首先新建一个android项目,然后建立libs文件夹,把rokon-2-0-3.jar文件和libgdx.so文件拖进去,然后项目右键Properties里找到Java Build Path,把rokon-2-0-3.jar作为引用库添加到项目里。
1.入口Activity类
下面是LazyGameByRokon.java的代码 package lazy.game.rokon.main; import com.stickycoding.rokon.DrawPriority; import com.stickycoding.rokon.RokonActivity; public class LazyGameByRokon extends RokonActivity { public static final float GAME_WIDTH = 480f; public static final float GAME_HEIGHT = 320f; @Override public void onCreate() { // 调试模式,打印,FPS // debugMode(); normalMode(); // 设置全屏 forceFullscreen(); // 强制横屏,也可以在manifest里设置'android:screenOrientation="landscape"' forceLandscape(); // 设置屏幕大小 setGameSize(GAME_WIDTH, GAME_HEIGHT); // 设置渲染模式,PRIORITY_VBO模式比一般的模式快 setDrawPriority(DrawPriority.PRIORITY_VBO); // 设置资源路径'.assets/textures/' setGraphicsPath("textures/"); // 创建引擎 createEngine(); } @Override public void onLoadComplete() { gotoGameScene(); } public void gotoGameScene() { } } 首先我们的activity类要继承RokonActivity,在onCreate()方法里进行引擎的一些初始化设置。
当引擎加载完成后,会自动调用onLoadComplete()方法。比如我们可以从这里进入游戏主菜单。
2.建场景类
和大多数游戏引擎一样,Rokon分场景Scene来管理的,比如主菜单为一个场景,游戏中为一个场景。这里我们只要游戏中一个场景。
新建一个GameScene类继承自Rokon的Scene类,如下: package lazy.game.rokon.main; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; import com.stickycoding.rokon.Scene; public class GameScene extends Scene { public LazyGameByRokon game; public GameScene(LazyGameByRokon game) { super(3);// 设定当前场景的层数 this.game = game;// 主类句柄 useInvoke();// 回调方法可用,Sprite必须有名字才能使用回调方法 } @Override public void onGameLoop() { } public void onTouchDown(float x, float y, MotionEvent event, int pointerCount, int pointerId) { Log.i("GameScene", "onTouchDown()"); } public void onTouchMove(float x, float y, MotionEvent event, int pointerCount, int pointerId) { Log.i("GameScene", "onTouchMove()"); } public void onTouchUp(float x, float y, MotionEvent event, int pointerCount, int pointerId) { Log.i("GameScene", "onTouchUp()"); } public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_CALL: Log.i("GameScene", "onKeyDown() KEYCODE_CALL "); break; case KeyEvent.KEYCODE_BACK: Log.i("GameScene", "onKeyDown() KEYCODE_BACK "); break; case KeyEvent.KEYCODE_SEARCH: Log.i("GameScene", "onKeyDown() KEYCODE_SEARCH "); break; case KeyEvent.KEYCODE_MENU: Log.i("GameScene", "onKeyDown() KEYCODE_MENU "); break; case KeyEvent.KEYCODE_ENDCALL: Log.i("GameScene", "onKeyDown() KEYCODE_ENDCALL "); break; case KeyEvent.KEYCODE_HOME: Log.i("GameScene", "onKeyDown() KEYCODE_HOME "); break; } return false; } @Override public void onPause() { } @Override public void onResume() { // 释放资源 } @Override public void onReady() { } } 我们只是实现和覆盖了一些基本的方法,比如
onGameLoop();//顾名思义,是游戏循环时调用的方法,可以在里面做一些更新。
onTouchDown();//等等按键和触摸事件。
onResume();//这里以后会用到,可以在这里释放图片资源。
useInvoke();// 回调方法以后再说。
场景类添加好了之后,回到主Activity里创建一下: private GameScene gameScene; public void gotoGameScene() { GameTextures.load(); gameScene = new GameScene(this); setScene(gameScene); } 3.加载图片资源
此时GameTextures.load();这句会报错。下面我们来添加资源类GameTextures。
GameTextures类代码如下: package lazy.game.rokon.main; import com.stickycoding.rokon.Texture; import com.stickycoding.rokon.TextureAtlas; public class GameTextures { // 资源管理器 public static TextureAtlas atlas; // 背景资源 public static Texture gameBack; public static void load() { try { atlas = new TextureAtlas(128); // 新建一个资源并添加到资源管理器 atlas.insert(gameBack = new Texture("background.png")); // 资源加载结束 atlas.complete(); } catch (Exception e) { e.printStackTrace(); } } } 每当需要一个资源时,你就可以new一个新的Texture,实例化并且添加到资源管理器altlas里。记住最要要调用atlas.complete();告诉引擎资源加载完成。
4.加载背景和Sprite精灵类
在GameScene.java里添加背景:(模拟器可能无法看到背景,真机可以,原因不明)
private FixedBackground background;
构造方法里面添加
background = new FixedBackground(GameTextures.gameBack);
setBackground(background);
精灵类的添加:
private Sprite boy;
// 实例化boy并添加到Scene里
boy = new Sprite(100, 100, GameTextures.boy.getWidth(), GameTextures.boy.getHeight()); boy.setTexture(GameTextures.boy); add(1, boy);
-----------------待续----------------
发表评论
-
Java实现IP地址字符串与整数之间的转换
2012-07-06 09:52 1451一、应用范围 一般用在登录限制、查找IP所在城市等需 ... -
sed
2012-07-06 09:46 864sed选项包含 e, f, n. -e 指定为多项编 ... -
ORM组件XCode(十八般武艺)
2012-07-03 13:44 664之前,XCode总是若 ... -
adobe Air 小玩意程序:加载百度随便听听
2012-07-02 13:01 531今天,我承认会有一点偷懒,在写微博的程序的时候,忽然 ... -
flash player的重绘渲染机制
2012-07-02 13:01 613先简洁说下前人的研究成果。 一个是Tencent的Y ... -
Hello Android
2012-07-02 13:01 484虚心是知识的向导,恒心是知识的保管。 ... -
imx515 开发板Android源代码编译过程[开发日记]
2012-07-02 13:01 978Android requires the followin ... -
as连接fms
2012-07-01 10:34 544如果 ActionScript 3.0 SWF 文件需要与 ... -
WebService另一种轻量级实现―Hessian 学习笔记
2012-07-01 10:34 608最近和同事聊天,得知他们在使用一种叫做Hessian的We ... -
关于The serializable class XXX does not declare a static final serialVersionUID field of type long的警告
2012-07-01 10:34 982最近在研究Java与Flex用Json交换数据,也就是Ja ... -
Flex Socket编程
2012-07-01 10:34 535比较懒,比较少上csdn的,如果发现留言给我没有回复,望见 ... -
Flex4与java通信(二、与servlet通信)
2012-07-01 10:34 532说明:这里介绍使用URLRequest+URLLoader ... -
Flex 和 Ogre
2012-06-30 16:57 526Flex 和 Ogre 2011年04月12日 最近和赖 ... -
Flex Spring整合包
2012-06-30 16:57 541Flex Spring整合包 2010年11月10日 A ... -
flex+java整合开发
2012-06-30 16:57 703flex+java整合开发 2010年08月16日 用F ... -
最全的FLEX网站收集分享
2012-06-30 16:57 491最全的FLEX网站收集分享 2010年06月24日 一、 ... -
如何进行Flex Spring整合
2012-06-30 16:57 475如何进行Flex Spring整合 2010年09月20日 ...
相关推荐
一个使用了Rokon游戏引擎的小游戏,可以作为学习游戏开发的入门了解资料
Rokon游戏引擎源码
rokon游戏引擎 类与方法介绍 游戏引擎开发步骤
android 游戏引擎Rokon实例教程
Android游戏引擎《Rokon》:主要类和方法的介绍文档
rokon游戏引擎包及S其源码
Rokon引擎主要类的介绍 中文文档 介绍每个类中经常使用的方法以及作用
整理出来的Android 游戏引擎Rokon的几个范例,简单易懂,适合入门
android 游戏引擎 rokon 源代码
rokon tutorials Rokon 入门教程
rokon引擎相关API 主要函数的说明
Android引擎框架Rokon中文文档
Rokon游戏引擎基础,教你使用rokon搭建你的第一个游戏,开发游戏从这里开始
Rokon引擎主要类介绍
Rokon详细API全汉化,对rokon进行了详细的说明及分析,对初学者有很大的帮助。
游戏引擎——Rokon中文API,可以帮助新手更快的了解rokon
createEngine boolean createRelativeLayout 参数为true创建包含SurfaceView和RelativeLayout的引擎 RalativeLayout可添加其他Android组件 以下4个函数须在createEngine前调用:">Rokon api说明 doc 介绍Rokon游戏...
rokon_lib_2-0-3.zip
安卓Android源码——rokon_src_2-0-3_游戏引擎.zip
rokon控制玩的游戏,可以触摸控制方向