您好,登錄后才能下訂單哦!
前言:
這一節,筆者將給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表示廣告的位置;
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("p_w_picpath/*"); 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里面把需要的參數配置好,運行正常沒問題,有問題可自行調試;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。