工程目录

前置条件:看完OGE工程搭建

我们以FlappyBird来对工程目录做说明

首先是我们的游戏工程,这是个纯粹的java工程,不涉及任何平台(如AndroidIOS等)

该工程创建后引入OGE引擎,或者根据需求引入对应的扩展包(Box2d)

wKioL1Q_bNXB5zJMAACSDLwlcnw327.jpg

wKioL1Q_bPWyYcYkAACSDLwlcnw994.jpg

src中,我们需要一个类去继承OGE引擎中的GameLauncher作为程序的入口,在这个DemoMainLauncher继承了GameLauncher,实现了适配,资源加载等功能。

publicclassMainLauncherextendsGameLauncherimplementsIConstant{

@Override

protectedPixelPerfectEngineOptionsonCreatePixelPerfectEngineOptions(){

PixelPerfectEngineOptionspixelPerfectEngineOptions=newPixelPerfectEngineOptions(ZoomCamera.class);

//设置竖屏AndroidManifest.xmlandroid:screenorientation的设置一致

pixelPerfectEngineOptions.setScreenorientation(Screenorientation.PORTRAIT_FIXED);

//适配模式,根据自己的需求选择改变宽或者高,这里设置为“保持宽度不变,改变高”

pixelPerfectEngineOptions.setPixelPerfectMode(PixelPerfectMode.CHANGE_HEIGHT);

//参考尺寸,游戏期望尺寸

pixelPerfectEngineOptions.setDesiredSize(DESIRED_SIZE);

returnpixelPerfectEngineOptions;

}

@Override

protectedvoidonLoadResources(){

//加载图片资源

RegionRes.loadTexturesFromAssets(Res.ALL_XML);

//加载音效资源

Device.getDevice().getSoundFactory().setAssetBasePath("mfx/");

SoundRes.loadSoundFromAssets(SOUND_DIE,"mfx_die.mp3");

SoundRes.loadSoundFromAssets(SOUND_HIT,"mfx_hit.mp3");

SoundRes.loadSoundFromAssets(SOUND_POINT,"mfx_point.mp3");

SoundRes.loadSoundFromAssets(SOUND_SWOOSING,"mfx_swooshing.mp3");

SoundRes.loadSoundFromAssets(SOUND_WING,"mfx_wing.mp3");

}

@Override

protectedvoidonLoadComplete(){

//整个引擎资源加载和启动后跳转到想到的场景

startScene(GameScene.class);

}

}

下面是Android启动器

wKiom1Q_bM3jxm6HAAEUsEkgjp8036.jpg

Android工程中src是包名和一个启动类,该类继承引擎android端的入口类GameActivity

project_src就是我们使用linkSourceOGEDemo_flappybird_java项目的src给同步过来

Android4.1AndroidPrivateLibraries就是看androidAPI引用的版本和你引入哪些jar

assets目录支持任意深度的子目录,该目录下文件不会被编译处理,适合存放资源文件,我们Demo中存放音频文件、图片压缩后文件,字体文件等

bin目录,工程被编译后,会生成一个bin目录,里面会有debug签名的apk文件,所以直接整个bin目录删除也没关系

libs目录,这里存放jar包或者so文件,so文件通常放在libs\armeabi目录下

so文件是一个c++的函数库,androidJNI,是先将相应的C语言打包成so库导入到libs文件夹中调用的

res目录,里面的几个drawable目录中,存放适用于不同分辨率的Icon文件(文件名要一致)values目录下strings.xml文件存放文本,app的名字也包含其中

================AndroidManifest.xml文件中====================

package=com.orange.flappybird//包名

android:versionCode="1"//内部版本标示版本号

android:versionName="1.0"//应用版本号给用户看的

android:minSdkVersion="8"//目前引擎最小androidSDK版本号

android:targetSdkVersion="17"//目标androidSDK版本号

<application

android:icon="@drawable/ic_launcher"//引用drawable存放的icon文件@drawable/文件名

android:label="@string/app_name"//引用strings.xml文件中app的应用名>

</application>

<activity

android:name="com.orange.flappybird.MainActivity"//通常是包名加类名的格式

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"//实现全屏效果

android:screenorientation="portrait"//屏幕显示应当与PixelPerfectEngineOptions.Screenorientation属性一致

>

<intent-filter>

<actionandroid:name="android.intent.action.MAIN"/>//决定应用程序最先启动的Activity

<categoryandroid:name="android.intent.category.LAUNCHER"/>//决定应用程序是否显示在程序列表里

</intent-filter>

</activity>

================AndroidManifest.xml文件中====================

混淆是为了防止apk被反编译

proguard.cfg可引用混淆文件使工程进行混淆

proguard-project.txt混淆文件的配置

下面是IOS启动器

wKioL1Q_bR6TihUuAADK_019aig183.jpg

同理,工程中src是包名和一个启动类,该类继承引擎IOS端的入口类GameActivity

project_src就是我们使用linkSourceOGEDemo_flappybird_java项目的src给同步过来

robovmRuntimeLibraryrobovmCocoaTouchLibrary是创建robovmProject后自动引用的库

assets目录支持任意深度的子目录,该目录下文件不会被编译处理,适合存放资源文件,我们Demo中存放音频文件、图片压缩后文件,字体文件等

libs目录,这里存放jar包或者.a文件,.a文件通常放在libs\iphonesimulatorlibs\iphoneos目录

Info.plist.xml里可设置Icon文件

<dict>

...

<key>CFBundleIconFiles</key>

<array>

<string>assets/icon/icon_96.png</string>

<string>assets/icon/icon_72.png</string>

<string>assets/icon/icon_48.png</string>

</array>

</dict>

robovm.propertiesapp相关配置

app.version=1.0//版本

app.id=com.orange.flappybird//id通常以包名作为id

app.mainclass=com.orange.flappybird.MainActivity//主类

app.executable=MainActivity//可执行的类

app.build=1

app.name=OGE_FlappyBird//app名字

robovm.xml:设置引用.a文件的路径

<config>

...

<libs>

<lib>libs/iphoneos/libOGEngineIOS.a</lib>

<lib>libs/iphonesimulator/libOGEngineIOS.a</lib>

<lib>libs/iphoneos/libOGEngineIOS_Box2D.a</lib>

<lib>libs/iphonesimulator/libOGEngineIOS_Box2D.a</lib>

</libs>

</config>

OGEngine工程目录的更多相关文章

  1. html5 canvas合成海报所遇问题及解决方案总结

    这篇文章主要介绍了html5 canvas合成海报所遇问题及解决方案总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Html5 video标签视频的最佳实践

    这篇文章主要介绍了Html5 video标签视频的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题

    HTML5在微信内置浏览器下,在右上角菜单的调整字体导致页面显示错乱的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  4. ios – containerURLForSecurityApplicationGroupIdentifier:在iPhone和Watch模拟器上给出不同的结果

    我使用默认的XCode模板创建了一个WatchKit应用程序.我向iOSTarget,WatchkitAppTarget和WatchkitAppExtensionTarget添加了应用程序组权利.(这是应用程序组名称:group.com.lombax.fiveminutes)然后,我尝试使用iOSApp和WatchKitExtension访问共享文件夹URL:延期:iOS应用:但是,测试NSURL

  5. ios – Xcode警告:“没有处理文件的规则”和“找不到目录”

    重命名我的项目文件夹后,我收到以下错误消息:什么可能出错?解决方法关于第一个警告,您可以在项目设置中的“构建阶段”中检查XCode,即头文件不会出现在“编译源”列表中.

  6. Ionic – Splash Screen适用于iOS,但不适用于Android

    我有一个离子应用程序,其中使用CLI命令离子资源生成的启动画面和图标iOS版本与正在渲染的启动画面完美配合,但在Android版本中,只有在加载应用程序时才会显示白屏.我检查了config.xml文件,所有路径看起来都是正确的,生成的图像出现在相应的文件夹中.(我使用了splash.psd模板来生成它们.我错过了什么?这是config.xml文件供参考,我觉得我在这里做错了–解决方法在config.xml中添加以下键:它对我有用!

  7. 你如何将xcode项目转换为cocoapod?

    我有一段代码,我发现我在多个不同的项目中重复使用,所以我想把它变成一个cocoapod并使用私人cocoapod仓库.我的问题是如何将xcode项目设置为cocoapod?它应该是一个静态库还是一个带有appdelegate的空“项目”?

  8. ios – 如何将文件添加到主包的/ Library / Sounds目录中?

    根据Apple’sdocumentation,/Library/Sounds中的声音文件将在尝试播放声音时由系统搜索.如何将声音文件添加到此文件夹?适用于iOS的正确文档应为here总之,您只需将声音文件作为应用程序包的非本地化资源添加到项目中.

  9. ios – 资产目录与文件夹参考:何时使用其中一个?

    我可以将文件放入Assets.xcassets,或者我可以将文件放入文件夹引用.我何时会选择一个而不是另一个?

  10. ios – 从icloud备份中限制sqlite-wal和sqlite-shm

    我是第一次使用coredata,我必须从文档目录中的iCloud备份限制sqlitedb文件,我使用下面的代码完成了它//阻止iCloud备份文档目录文件夹现在我不明白的是,我们还需要从icloud备份中限制sqlite-wal和sqlite-shm文件,如果是,那么如何从icloud备份限制sqlite-wal和sqlite-shm文件我想要一个解决方案,而无需从文档目录文件夹中更改sqlitedb位置…

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部