溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

flappy bird游戲源代碼揭秘和下載后續(xù)—日進5萬美元的秘訣AdMob廣告

發(fā)布時間:2020-07-27 22:33:26 來源:網(wǎng)絡(luò) 閱讀:393 作者:makeapp628 欄目:游戲開發(fā)

前言:

這一節(jié),筆者將給flappy加入google的AdMob廣告 ,這也是為什么越南小伙瞬間日進5萬美元的秘訣;平臺還是android手機上,通過這個demo,讀者可以學(xué)習(xí)js代碼怎么和android代碼交互,怎么按鍵檢測退出,怎么分享;

ps 如果沒有出現(xiàn)廣告,確定wifi是否打開,確定殺毒安全軟件是否禁止廣告模塊;


背景:

最近火爆全球的游戲flappy bird讓筆者嘆為觀止,于是花了一天的時間山寨了一個一模一樣的游戲,現(xiàn)在把游戲的思路和源碼分享出來,代碼是基于javascript語言,cocos2d-x游戲引擎,cocos2d-x editor手游開發(fā)工具完成的,請讀者輕砸;

ps:運行demo需要配置好cocos2d-x editor,暫不支持其他工具。還有demo是跨平臺的,可移植運行android,ios,html5網(wǎng)頁等。


Android源代碼:

進入代碼集中營下載(flappy源碼–添加admob廣告):  http://blog.makeapp.co/?p=306&preview=true


效果圖 (圖片頂部有廣告)

flappy bird游戲源代碼揭秘和下載后續(xù)—日進5萬美元的秘訣AdMob廣告flappy bird游戲源代碼揭秘和下載后續(xù)—日進5萬美元的秘訣AdMob廣告

代碼分析

首先實現(xiàn)廣告模塊:在以前android代碼的基礎(chǔ)上加入GoogleAdmobAdsSdk.jar,拷貝到libs路徑下,并且右擊選擇add as library;

然后在src目錄下加入plugin模塊。

flappy bird游戲源代碼揭秘和下載后續(xù)—日進5萬美元的秘訣AdMob廣告


接著修改asserts里面的MainActivity.js,在onEnter方法里面加入廣告代碼;a152fcf037adb43是廣告秘鑰,可到admob官網(wǎng)申請,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”)也很關(guān)鍵,把需要的庫下載下來;在AndroidManifest修改相應(yīng)的參數(shù),代碼不列出來;運行可以看到廣告,也可以點擊返回鍵彈出退出框;

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");
    }
}


接著我們實現(xiàn)在游戲里面觸發(fā)分享事件,找到asserts–MainLayer.js, 給那個123圖片添加點擊事件;sys.localStorage.setItem(“share”, “xxx”)是交流通道,獲得關(guān)鍵詞share,直接在CocosdLocalStorge setItem方法下觸發(fā);

MainLayer.prototype.onGradeClicked = function () {
    sys.localStorage.setItem("share", "xxx");
}



找到CocosdLocalStorge,setItem方法,修改如下,如果關(guān)鍵詞是share,開啟分享意向;同時value里面也可以放入要傳遞的值;CocosdLocalStorge本來是放在cocos2dx-android.jar里面的,現(xiàn)在把它公開出來了

   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應(yīng)用里面跳到cocos2d-x游戲里面,其實很簡單,就是普通的活動意向跳轉(zhuǎn),在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里面把需要的參數(shù)配置好,運行正常沒問題,有問題可自行調(diào)試;


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI