Android游戏引擎《Rokon》学习笔记一:为你的项目添加Rokon框架这个教程会演示如何建立一个基于Rokon框架的Android项目。我们假设你正在Windows下使用Eclipse,并且已经安装了ADT插件。否则,进这里(需翻墙,方法略)建立开发环境。1在这里下载最近的Rokon开发包。你只需要其中的[rokon_lib_x-y-z.zip]2打开你常用的工作空间,确保自己指导文件夹的位置。3新建一个Android工程,1.5以上版本的Rokon都支持。4打开工程文件夹。找到AndroidManifest.xml所在目录。5在当前目录新建一个文件夹libs6把rokon_lib_x-y-z.zip解压到此7更新一下刚才新建的Android工程,右键更新或者按F58确保文件位置的正确,如下图9添加rokon_x-y-z.jar到你的BuildPath(右键项目,选择bulidPath,点击AddtoBuildPath),正确的话,会看到他出现在引用包里。如图10现在已经准备好了,别忘了用Shift+Alt+O快捷键来格式化你的导入。Android游戏引擎《Rokon》学习笔记二:HelloWorld收藏关于《Rokon》的说明:Rokon主页:文档:懒骨头()本人四级未考~水平有限~权当学习笔记~仅供参考~版权的事骨头不会说~和一般博客大致相同吧~————————————————Android游戏引擎《Rokon》学习笔记二:HelloWorld欢迎来到《Rokon》教程第一集本教程和你一起建立第一个Rokon项目。假定你已经有了一定的Java编程、Android编程的基础,如果没有,来这里(需翻墙,方法略)。在这个教程里我将会用Eclipse作为开发工具,如果你用其他的开发工具,照样可以继续阅读。(在教程的最后你将会下载到所涉及到的源码)首先你需要下载Rokon的源码,里面有很多文件,但你只需那个lib包。然后打开Eclipse,建立一个新的Android项目,Rokon支持所有1.5和以上的版本。现在打开项目所在文件夹(即包含AndroidManifest.xml的目录)如果你不知道项目在哪,右键你的项目,选择Properties,Location即是项目的本地路径。在当前目录下新建一个libs的文件夹,把rokon_lib_x-y-z.zip解压到这里。回到Eclipse,在项目右键选择刷新(Refresh)。确保你的项目如下显示然后添加‘rokon_x-y-z.jar’到你的BuildPath,右键项目,选择BuildPathAddtoBuildPath,然后那个文件将会出现在引用包(ReferencedLibraries)里。现在你已经设置好了Rokon项目,很简单是吗,准本开始敲代码了。打开你的入口Activity类。用下面的代码替换。viewplaincopytoclipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······1501.packagecom.rokonexamples.helloworld;2.importcom.stickycoding.rokon.DrawPriority;3.importcom.stickycoding.rokon.RokonActivity;4.publicclassMainActivityextendsRokonActivity{5.publicstaticfinalfloatGAME_WIDTH=480f;6.publicstaticfinalfloatGAME_HEIGHT=320f;7.privateGameScenescene;8.publicvoidonCreate(){9.debugMode();10.forceFullscreen();11.forceLandscape();12.setGameSize(GAME_WIDTH,GAME_HEIGHT);13.setDrawPriority(DrawPriority.PRIORITY_VBO);14.setGraphicsPath(textures/);15.createEngine();16.}17.publicvoidonLoadComplete(){18.Textures.load();19.setScene(scene=newGameScene());20.}21.}(你可以按住[Ctrl+Shift+O]自动更新导入项目)像所有的Android程序那样,onCreate()方法是你游戏的入口,所以我们在这里启动、安装Rokon引擎。debugMode();告诉Rokon进入调试模式,这样会打印当前FPS和你自己调用Debug.print()所显示的内容。forceFullscreen();forceLandscape();强制游戏全屏、横向显示(这属于可选项,还可以调用forcePortrait()强制竖屏)。setGameSize(GAME_WIDTH,GAME_HEIGHT);在这里设置游戏屏幕的分辨率。如果和实际的屏幕不一致,会自动适配,自动放大缩小来适用的。setDrawPriority(DrawPriority.PRIORITY_VBO);让Rokon在绘画时使用VBO‘S(骨头按:可能是一种OpenGL的渲染方式)。VBO’s比一般的渲染方式更快。setGraphicsPath(textures/);设置图片存放路径,实际上放在assets/textures/'。‘onLoadComplete()’当引擎创建成功时被调用。所以我们在这个方法里调用Textures.load()来加载纹理(textures骨头感觉翻译成纹理不太合适),并且调用setScene(scene=newGameScene());来加载游戏场景。记住如果你用了‘forceLandscape()’or‘forcePortrait()’两个方法,别忘了在AndroidManifest.xml里配置一下:“android:screenOrientation”。如下图:然后建立‘GameScene.java’‘Textures.java’这两个文件。Textures.java:加载你的textures到你的引擎。Textures.java代码如下:viewplaincopytoclipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······1501.packagecom.rokonexamples.helloworld;2.importcom.stickycoding.rokon.Texture;3.importcom.stickycoding.rokon.TextureAtlas;4.publicclassTextures{5.publicstaticTextureAtlasatlas;6.publicstaticTexturebackground;7.publicstaticvoidload(){8.atlas=newTextureAtlas();9.atlas.insert(background=newTexture(background.png));10.atlas.complete();11.}12.}atlas=newTextureAtlas();这条语句会建立一个texture地图集,算是所有textures的一个管理器或句柄(不太顺,呵呵)。如果你有很多textures,你可以使用不止一个atlas来overloadthehardware.(不会)。建议一个只使用一个atlas,因为你不可能在同一个sence或者map里使用两个不同的atlases(待修改)。(notehoweverthatit’srecommendedtouseonlyoneatlasatatime,thereforeyoushouldn’tusetexturesfromtwodifferentatlasesinthesamescene/map/whatever)atlas.insert(background=newTexture(background.png));设置背景图的纹理。注意:我们建议按照大小顺序添加纹理了。大的在前,小的在后。atlas.complete();说明atlas已经加载完成。意味着一点你掉用此方法,将不能再添加其他的纹理。下面是GameScene.java源码:viewplaincopytoclipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······1501.packagecom.rokonexamples.helloworld;2.importcom.stickycoding.rokon.Scene;3.importcom.stickycoding.rokon.Sprite;4.importcom.stickycoding.rokon.background.FixedBackground;5.publicclassGameSceneextendsScene{6.privateFixedBackgroundbackground;7.publicGameScene(){8.super();9.setBackground(background=newFixedBackground(Textures.background));10.}11.@Override12.publicvoidonGameLoop(){13.}14.@Override15.publicvoidonPause(){16.}17.@Override18.publicvoidonResume(){19.}20.@Override21.publicvoidonReady(){22.}23.}这是个只有背景的Sence。setBackground(background=newFixedBackground(Textures.background));创建一个不可改变的背景。‘onGameLoop()’每一帧都会调用这个方法。你可以在里面更游戏逻辑,接下来的教程里会在里面处理更多东西。‘onPause()’当游戏隐藏时(当玩家切换到别的程序而没有关闭此程序时),此方法被调用,用来暂停游戏逻辑,而不会让用户离开时丢失任何游戏信、数据。‘onResume()’玩家重新回来时被调用。‘onReady()’当场景sense成功的创建,准备好被使用时被调用。iscalledwhenthescenehasbeensuccessfullycreatedandisreadytobeused.(和‘onLoadComplete()’方法相似,但它是针对scene,而不是引擎)好了,现在你只需要准备一张背景图,并且添加到‘assets/textures/’。现在在模拟器或者手机上测试你的游戏