flappy bird游戏源代码揭秘和下载后续—添加广告,分享及和android交互 推荐
2014-04-19 12:24
204 查看
前言:这一节,笔者将给flappy加入google的AdMob广告 ,这也是为什么越南小伙瞬间日进5万美元的秘诀;平台还是android手机上,通过这个demo,读者可以学习js代码怎么和android代码交互,怎么按键检测退出,怎么分享;ps 如果没有出现广告,确定wifi是否打开,确定杀毒安全软件是否禁止广告模块;
背景:最近火爆全球的游戏flappy bird让笔者叹为观止,于是花了一天的时间山寨了一个一模一样的游戏,现在把游戏的思路和源码分享出来,代码是基于javascript语言,cocos2d-x游戏引擎,cocos2d-x editor手游开发工具完成的,请读者轻砸;ps:运行demo需要配置好cocos2d-x editor,暂不支持其他工具。还有demo是跨平台的,可移植运行android,ios,html5网页等。
Android源代码:进入代码集中营下载(flappy源码–添加admob广告): http://blog.makeapp.co/?p=306&preview=true
效果图 (图片顶部有广告)
代码分析首先实现广告模块:在以前android代码的基础上加入GoogleAdmobAdsSdk.jar,拷贝到libs路径下,并且右击选择add as library;然后在src目录下加入plugin模块。
接着修改asserts里面的MainActivity.js,在onEnter方法里面加入广告代码;a152fcf037adb43是广告秘钥,可到admob官网申请,showAds表示广告的位置;
找到CocosdLocalStorge,setItem方法,修改如下,如果关键词是share,开启分享意向;同时value里面也可以放入要传递的值;CocosdLocalStorge本来是放在cocos2dx-android.jar里面的,现在把它公开出来了
背景:最近火爆全球的游戏flappy bird让笔者叹为观止,于是花了一天的时间山寨了一个一模一样的游戏,现在把游戏的思路和源码分享出来,代码是基于javascript语言,cocos2d-x游戏引擎,cocos2d-x editor手游开发工具完成的,请读者轻砸;ps:运行demo需要配置好cocos2d-x editor,暂不支持其他工具。还有demo是跨平台的,可移植运行android,ios,html5网页等。
Android源代码:进入代码集中营下载(flappy源码–添加admob广告): http://blog.makeapp.co/?p=306&preview=true
效果图 (图片顶部有广告)
代码分析首先实现广告模块:在以前android代码的基础上加入GoogleAdmobAdsSdk.jar,拷贝到libs路径下,并且右击选择add as library;然后在src目录下加入plugin模块。
接着修改asserts里面的MainActivity.js,在onEnter方法里面加入广告代码;a152fcf037adb43是广告秘钥,可到admob官网申请,showAds表示广告的位置;
var adsAdmob = plugin.PluginManager.getInstance().loadPlugin("AdsAdmob"); cc.log("configDeveloperInfo AdsAdmob"); if (adsAdmob) { cc.log("configDeveloperInfo"); adsAdmob.configDeveloperInfo({"AdmobID": "a152fcf037adb43"}); adsAdmob.showAds(0, 0, 1); } else { cc.log("can't find AdsAdmob plugin"); }找到Cocos2dMainActivity文件,整个游戏场景作为一个activity存在,修改代码如下;初始化了PluginWarpper,同时可以添加返回按键事件onBackPressed();System.loadLibrary(“cocos2dx-game”)也很关键,把需要的库下载下来;在AndroidManifest修改相应的参数,代码不列出来;运行可以看到广告,也可以点击返回键弹出退出框;
public class Cocos2dMainActivity extends Cocos2dxActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PluginWrapper.init(this); // for plugins PluginWrapper.setGLSurfaceView(Cocos2dxGLSurfaceView.getInstance()); Cocos2dxLocalStorage.context = this; /*String languageType = getResources().getConfiguration().locale.getCountry(); if (languageType.equals("CN")) { Cocos2dxLocalStorage.setItem("language", "CN"); System.out.println("language china"); } else { Cocos2dxLocalStorage.setItem("language", "US"); System.out.println("language english"); }*/ } public Cocos2dxGLSurfaceView onCreateView() { Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this); // HelloAds should create stencil buffer glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8); return glSurfaceView; } public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { onBackPressed(); return true; } return super.dispatchKeyEvent(event); } public void onBackPressed() { AlertDialog.Builder builder = new AlertDialog.Builder(this) .setTitle("") .setMessage("quit the game?") .setNegativeButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { System.exit(0); finish(); } }).setPositiveButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); AlertDialog dialog = builder.create(); dialog.show(); } public void onClickShare(View view) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_SUBJECT, "分享"); intent.putExtra(Intent.EXTRA_TEXT, "终于可以了!!!"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(Intent.createChooser(intent, getTitle())); } static { // System.loadLibrary("game"); System.loadLibrary("cocos2dx-game"); } }接着我们实现在游戏里面触发分享事件,找到asserts–MainLayer.js, 给那个123图片添加点击事件;sys.localStorage.setItem(“share”, “xxx”)是交流通道,获得关键词share,直接在CocosdLocalStorge setItem方法下触发;
MainLayer.prototype.onGradeClicked = function () { sys.localStorage.setItem("share", "xxx"); }
找到CocosdLocalStorge,setItem方法,修改如下,如果关键词是share,开启分享意向;同时value里面也可以放入要传递的值;CocosdLocalStorge本来是放在cocos2dx-android.jar里面的,现在把它公开出来了
public static void setItem(String key, String value) { try { String sql = "replace into " + TABLE_NAME + "(key,value)values(?,?)"; mDatabase.execSQL(sql, new Object[]{key, value}); if (key.equals("share")) { System.out.println("jump share"); onClickShare(value); } } catch (Exception e) { e.printStackTrace(); } } public static void onClickShare(String score) { String shareText = "welcome to use cocos2d-x editor!"; Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_SUBJECT, "share"); intent.putExtra(Intent.EXTRA_TEXT, shareText); context.startActivity(Intent.createChooser(intent, "share to")); }然后我们要从android应用里面跳到cocos2d-x游戏里面,其实很简单,就是普通的活动意向跳转,在AndroidMainActivity.java加入代码;
Button btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(AndroidMainActivity.this, Cocos2dMainActivity.class)); } });最后别忘记在AndroidManifest.xml里面把需要的参数配置好,运行正常没问题,有问题可自行调试;
相关文章推荐
- flappy bird游戏源代码揭秘和下载后续---添加广告sdk和与android交互
- flappy bird游戏源代码揭秘和下载后续—日进5万美元的秘诀AdMob广告
- flappy bird游戏源代码揭秘和下载后续---移植到android真机上
- flappy bird游戏源代码揭秘和下载后续---移植到android真机上
- 为Android应用程序添加社会化分享功能
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(二,发送彩信<1>)
- Android 项目集成有米 SDK 添加广告
- Android与.Net交互模拟用户屏幕操作添加APN和网络4G/3G切换
- cocos2d-x 之 添加Android分享
- [Android分享] 推荐几篇关于android Graphics Canvas介绍的博客
- 给你的移动网站加点料:推荐下载App,如果本地安装则直接打开本地App(Android/IOS)
- 【android编译器/资源下载一个比较OK的地址推荐】
- 一个Android菜鸟“面霸”的面试经历分享 推荐
- Android实现分享一个广告页面给好友
- Cocos2d-x 3.X, Android Studio版添加广点通广告平台
- Android平台给cordova添加Admob广告
- 重磅推荐:Android_JNI整套视频分享
- 说说Android 两种为自定义组件添加属性的使用方法和区别 推荐
- 【源码分享下载】每日更新之Android应用源码比较不错的新闻客户端
- android -- 分享 二次打包植入广告