`
473687880
  • 浏览: 482435 次
文章分类
社区版块
存档分类
最新评论

【cocos2d-x入门实战】微信飞机大战之十五:跨平台移植和广告植入

 
阅读更多

原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12150907

整个游戏是出炉了,但是只在PC上玩很不过瘾,触屏的体验是鼠标没办法达到的。所以这节我们把它移植到Android平台上。当然这个游戏太微不足道了,所以我也不指望它能为我赚什么钱,现在考虑些就图样图森破了。这里的广告只是纯技术上的研究。做游戏,浮躁不得。


1.移植到Android平台

其实这些我在http://blog.csdn.net/jackystudio/article/details/11516435一文中就有讲过了,这里就再重复一遍吧。Cygwin和Eclipse自行准备好吧。


1.1.配置Android项目

(1)点击已配置好的create-android-project.bat,创建JackyAirplane的安卓项目。配置方式创建请看上文。

(2)Win32项目下的Classes里面的所有源文件和头文件都放进Android项目中的Classes。如果你写的源文件和头文件是放在proj.win32中的,也把它们拷出来到Classes。

(3)进入proj.android,把音效,字体,图片这些资源拷入asset文件夹中。

(4)进入proj.android,res下各目录存放有游戏的图标,你可以进行修改。

(5)进入proj.android,jni→helloworld目录下有main.cpp,这是跨平台的入口,也就是jni层相关。找到这个函数Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit,修改如下内容。

    if (!CCDirector::sharedDirector()->getOpenGLView())
    {
        CCEGLView *view = &CCEGLView::sharedOpenGLView();
        view->setFrameSize(w, h);
        // set the design resolution screen size, if you want to use Design Resoulution scaled to current screen, please uncomment next line.
         view->setDesignResolutionSize(480, 800);//加入这一句,目的就是为了适配屏幕

        AppDelegate *pAppDelegate = new AppDelegate();
        CCApplication::sharedApplication().run();
    }
(6)进入proj.android,jni。打开android.mk,修改LOCAL_SRC_FILES字段为下面内容,这就是所有的源码。

LOCAL_SRC_FILES := helloworld/main.cpp \
                   ../../Classes/AppDelegate.cpp \
		   ../../Classes/BulletLayer.cpp \
		   ../../Classes/ControlLayer.cpp \
		   ../../Classes/Enemy1Layer.cpp \
		   ../../Classes/Enemy2Layer.cpp \
		   ../../Classes/Enemy3Layer.cpp \
		   ../../Classes/GameLayer.cpp \
		   ../../Classes/GameScene.cpp \
		   ../../Classes/PlaneLayer.cpp \
		   ../../Classes/WelcomeLayer.cpp \
		   ../../Classes/WelcomeScene.cpp \
		   ../../Classes/Enemy1Sprite.cpp \
		   ../../Classes/Enemy2Sprite.cpp \
		   ../../Classes/Enemy3Sprite.cpp \
		   ../../Classes/UFOLayer.cpp \
		   ../../Classes/GameOverLayer.cpp \
		   ../../Classes/GameOverScene.cpp \
		   ../../Classes/MutiBulletsLayer.cpp 


1.2.交叉编译

打开Cygwin,把proj.android中的build-native.sh拖到Cygwin中,执行编译。正常编译成功后,你可以在\proj.android\libs\armeabi目录下找到libgame.so。这就是整个游戏的内容被打包进去了。.so是linux下的动态链接库,相当于windows下的.dll。


1.3.导入android项目,生成apk

打开Eclipse,File-Import-Android-Existing Android code to workspace。选择刚才的proj.android。导入。Eclipse工作区就可以看到这个游戏的android项目了。啥都不用改了,直接编译成.apk就可以了。

注意:AVD不支持openGLES2.0,所以必须用真机调试。


2.广告植入

现在这类广告多如牛毛。选择哪家我也就不多说了,免得有广告嫌疑。如何植入广告这里我也只能简单的说下。因为实际植入还是很麻烦的,毕竟广告商的SDK不一样,还涉及到jni技术,java基础,Android开发基础,这些都要有了解。

这里我把广告分为两类,这部分我也算初学,如果有什么错误,烦请指出。。。


2.1.Android广告和cocos2d-x游戏无交互

这类比如开场插屏广告之类的。

这里广告和游戏没有交互,也就是说它和游戏的相对独立的,大体步骤是:

(1)单独的做出一个带有广告LoadingActivity和对应布局,然后在AndroidManifest.xml中把启动Activity指向它。

(2)我们看一下JackyActivityActivity(cocos2d-x自动帮你生成的):

public class JackyAirplane extends Cocos2dxActivity
public class Cocos2dxActivity extends Activity
是的,cocos2d-x游戏也是一个Activity,所以可以在LoadingActivity中实现Runnable接口,开启一个线程调用它。

Runnable runnable=new Runnable() {
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		Intent intent = new Intent(LoadActivity.this, JackyAirplane.class);
		LoadActivity.this.startActivity(intent);//切换Activity
		LoadActivity.this.finish();
	}
};


2.2.Android广告和cocos2d-x游戏有交互

这类比如过场广告,暂停广告之类的。

这里处理起来就比无交互的麻烦多了。其实也就是要在C++代码中调用JavaAPI,所以采用了Jni技术。

(1)Java代码:给JackyAirplane添加一个静态广告成员变量。

public class JackyAirplane extends Cocos2dxActivity{
...
public static AdView adView;    // 第3方广告

}

(2)Java代码:添加静态成员方法,用来显示广告。

public static void showAD() { 
  new Thread(new Runnable(){
 
  @Override
  public void run() {
  adView.setVisibility( adView.VISIBLE );
  }
 
  }).start();
}

(3)C++代码:通过jni调用showAD()。

#include <jni/JniHelper.h>

JniMethodInfo minfo;  
jobject jobj;  
 
bool b = JniHelper::getStaticMethodInfo(minfo,   
"com/jacky/jackyAirplane/JackyAirplane",  //类路径
"showAD",   //静态方法名  
"()V");   //括号里的是参数,后面的是返回值
if(b)
	jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);  
else
	;//打印错误...
如果要控制广告的开关,可以在Java内使用Handler来接收消息控制,不过这个时候就要记得传参(开/关)了。


好了,微信飞机大战讲解到这里就全部结束了。感谢CCTV什么的就不来了。希望这一系列的教程能够帮助您开启cocos2d-x游戏的快乐旅途!

本系列源码:VS2008+cocos2d-x 2.0.1版https://github.com/fusijie/Jacky_AirPlane.git

VS2010+cocos2d-x 2.2.0版 https://github.com/fusijie/Airplane.git直接Fork吧:)

游戏下载猛击这里:http://as.baidu.com/a/item?docid=4225601&pre=web_am_se&f=web_alad_5@next

分享到:
评论

相关推荐

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台发布、程序...

    Cocos2d-x 3.2 仿微信打飞机

    使用的cocos2d-x 3.2最新版本。 搜索了很久才搜索到完整的素材,空降物竟然也是黑白的,只好自己随便加了点颜色。重在练手,成功移植到了android真机。 详细内容,博客:...

    cocos2d-x微信飞机大战源码

    cocos2d-x 微信飞机大战的源码, 分享与大家学习, 免积分下载! 

    cocos2d-x 3.2 仿微信的飞机大战

    使用的cocos2d-x 3.2最新版本。 搜索了很久才搜索到完整的素材,空降物竟然也是黑白的,只好自己随便加了点颜色。重在练手,成功移植到了android真机。 详细内容,博客:...

    Cocos2d-x 3.1.1 微信打飞机源码

    参照《偶尔e网事》博客 编写出的Cocos2d-x 3.1.1 微信打飞机源码。

    cocos2d-x实战项目

    cocos2d-x实战项目 01.cocos2d-x原理及环境配置.rar 03.cocostudio使用方法及UI控制.rar 04.XML文件读取与骨骼动画.rarcocos2d-x实战项目 01.cocos2d-x原理及环境配置.rar 03.cocostudio使用方法及UI控制.rar 04.XML...

    cocos2d-x高仿微信打飞机

    高仿飞机打飞机,亲测安卓可用,适合初学者学习

    大富翁手机游戏开发实战基于Cocos2d-x3.2引擎

    资源名称:大富翁手机游戏开发实战基于Cocos2d-x3.2引擎内容简介:李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发...

    Cocos2d-x实战 JS卷

    Cocos2d-x实战

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    Cocos2d-x实战 JS卷 Cocos2d-JS开发 PDF 电子书完整版本

    Cocos2d-x 3.x游戏开发实战pdf含目录

    Cocos2d-x 3.x游戏开发实战pdf含目录,内容详细,强烈推荐给大家。

    迷失航线-Cocos2d-x项目实战-射击类游戏-关东升

    Cocos2d-x项目实战-射击类游戏-迷失航线,版本是Cocos2d-x-3.2

    基于cocos2d-x 的微信打飞机

    基于cocos2d-x 的微信打飞机.cocos2d-x的版本为2.1.5

    Cocos2d-x入门视频教程(全7讲)

    资源名称:Cocos2d-x入门视频教程(全7讲)资源目录:【】cocos2d-x视频教程_01【】cocos2d-x视频教程_02【】cocos2d-x视频教程_03【】cocos2d-x视频教程_04【】cocos2d-x视频教程_05【】cocos2d-x视频教程_06【】...

    cocos2d-x-2.1.5

    cocos2d-x-2.1.5

    Cocos2d-x高级开发教程

    Cocos2d-x是移动跨平台开发最流行的游戏引擎,而本书是一本很全面的、比较‘接地气’的游戏开发教程。书中汇聚了热门手机游戏《捕鱼达人》开发的实战经验,作者从最基础的内容开始,逐步深入地介绍了Cocos2d-x的相关...

    cocos2d-x项目ios-android版接入微信分享功能

    公司需要,历经一周,终于把cocos2d-x项目接入微信分享功能搞定了,含android版及ios版接入。 功能实现:1.截屏并分享截屏图片到微信;2.网页链接分享到微信. 局限:cocos2d-x项目. 方便:截屏分享和链接分享就只需...

    cocos2d-x事件类

    在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...

    教你用Cocos2D-X开发跨平台移动应用

    Cocos2d-x源于Cocos2d,是一款开源游戏引擎项目,是一款基于对原有iOS平台cocos2d重写为C++的开源代码,封装了OpenGL,Box2d,LibCurl,LibPng等开源的跨平台代码。由于基于C++和STL特点使其广泛应用于游戏开发、移动...

    Cocos2d-x3.1 《飞机大战》源代码(全)

    Cocos2d-x3.0项目创建和VS2012编译 场景跳转和主菜单实现 游戏场景背景滚动 飞机动画和触摸控制 子弹发射 敌机实现 碰撞检测和加分 爆炸效果 粒子特效和音乐播放 判定死亡 移植到Android平台

Global site tag (gtag.js) - Google Analytics