乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【cocos2d-x入門實戰(zhàn)】微信飛機大戰(zhàn)之十五:跨平臺移植和廣告植入

       rockljl 2013-09-30

      原創(chuàng)作品,轉載請標明http://blog.csdn.net/jackystudio/article/details/12150907

      整個游戲是出爐了,但是只在PC上玩很不過癮,觸屏的體驗是鼠標沒辦法達到的。所以這節(jié)我們把它移植到Android平臺上。當然這個游戲太微不足道了,所以我也不指望它能為我賺什么錢,現(xiàn)在考慮些就圖樣圖森破了。這里的廣告只是純技術上的研究。做游戲,浮躁不得。


      1.移植到Android平臺

      其實這些我在http://blog.csdn.net/jackystudio/article/details/11516435一文中就有講過了,這里就再重復一遍吧。Cygwin和Eclipse自行準備好吧。


      1.1.配置Android項目

      (1)點擊已配置好的create-android-project.bat,創(chuàng)建JackyAirplane的安卓項目。配置方式創(chuàng)建請看上文。

      (2)Win32項目下的Classes里面的所有源文件和頭文件都放進Android項目中的Classes。如果你寫的源文件和頭文件是放在proj.win32中的,也把它們拷出來到Classes。

      (3)進入proj.android,把音效,字體,圖片這些資源拷入asset文件夾中。

      (4)進入proj.android,res下各目錄存放有游戲的圖標,你可以進行修改。

      (5)進入proj.android,jni→helloworld目錄下有main.cpp,這是跨平臺的入口,也就是jni層相關。找到這個函數(shù)Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit,修改如下內容。

      1. if (!CCDirector::sharedDirector()->getOpenGLView())  
      2. {  
      3.     CCEGLView *view = &CCEGLView::sharedOpenGLView();  
      4.     view->setFrameSize(w, h);  
      5.     // set the design resolution screen size, if you want to use Design Resoulution scaled to current screen, please uncomment next line.  
      6.      view->setDesignResolutionSize(480, 800);//加入這一句,目的就是為了適配屏幕  
      7.   
      8.     AppDelegate *pAppDelegate = new AppDelegate();  
      9.     CCApplication::sharedApplication().run();  
      10. }  
      (6)進入proj.android,jni。打開android.mk,修改LOCAL_SRC_FILES字段為下面內容,這就是所有的源碼。

      1. LOCAL_SRC_FILES := helloworld/main.cpp \  
      2.                    ../../Classes/AppDelegate.cpp \  
      3.            ../../Classes/BulletLayer.cpp \  
      4.            ../../Classes/ControlLayer.cpp \  
      5.            ../../Classes/Enemy1Layer.cpp \  
      6.            ../../Classes/Enemy2Layer.cpp \  
      7.            ../../Classes/Enemy3Layer.cpp \  
      8.            ../../Classes/GameLayer.cpp \  
      9.            ../../Classes/GameScene.cpp \  
      10.            ../../Classes/PlaneLayer.cpp \  
      11.            ../../Classes/WelcomeLayer.cpp \  
      12.            ../../Classes/WelcomeScene.cpp \  
      13.            ../../Classes/Enemy1Sprite.cpp \  
      14.            ../../Classes/Enemy2Sprite.cpp \  
      15.            ../../Classes/Enemy3Sprite.cpp \  
      16.            ../../Classes/UFOLayer.cpp \  
      17.            ../../Classes/GameOverLayer.cpp \  
      18.            ../../Classes/GameOverScene.cpp \  
      19.            ../../Classes/MutiBulletsLayer.cpp   


      1.2.交叉編譯

      打開Cygwin,把proj.android中的build-native.sh拖到Cygwin中,執(zhí)行編譯。正常編譯成功后,你可以在\proj.android\libs\armeabi目錄下找到libgame.so。這就是整個游戲的內容被打包進去了。.so是linux下的動態(tài)鏈接庫,相當于windows下的.dll。


      1.3.導入android項目,生成apk

      打開Eclipse,F(xiàn)ile-Import-Android-Existing Android code to workspace。選擇剛才的proj.android。導入。Eclipse工作區(qū)就可以看到這個游戲的android項目了。啥都不用改了,直接編譯成.apk就可以了。

      注意:AVD不支持openGLES2.0,所以必須用真機調試。


      2.廣告植入

      現(xiàn)在這類廣告多如牛毛。選擇哪家我也就不多說了,免得有廣告嫌疑。如何植入廣告這里我也只能簡單的說下。因為實際植入還是很麻煩的,畢竟廣告商的SDK不一樣,還涉及到jni技術,java基礎,Android開發(fā)基礎,這些都要有了解。

      這里我把廣告分為兩類,這部分我也算初學,如果有什么錯誤,煩請指出。。。


      2.1.Android廣告和cocos2d-x游戲無交互

      這類比如開場插屏廣告之類的。

      這里廣告和游戲沒有交互,也就是說它和游戲的相對獨立的,大體步驟是:

      (1)單獨的做出一個帶有廣告LoadingActivity和對應布局,然后在AndroidManifest.xml中把啟動Activity指向它。

      (2)我們看一下JackyActivityActivity(cocos2d-x自動幫你生成的):

      1. public class JackyAirplane extends Cocos2dxActivity  
      1. public class Cocos2dxActivity extends Activity  
      是的,cocos2d-x游戲也是一個Activity,所以可以在LoadingActivity中實現(xiàn)Runnable接口,開啟一個線程調用它。

      1. Runnable runnable=new Runnable() {  
      2.       
      3.     @Override  
      4.     public void run() {  
      5.         // TODO Auto-generated method stub  
      6.         Intent intent = new Intent(LoadActivity.this, JackyAirplane.class);  
      7.         LoadActivity.this.startActivity(intent);//切換Activity  
      8.         LoadActivity.this.finish();  
      9.     }  
      10. };  


      2.2.Android廣告和cocos2d-x游戲有交互

      這類比如過場廣告,暫停廣告之類的。

      這里處理起來就比無交互的麻煩多了。其實也就是要在C++代碼中調用JavaAPI,所以采用了Jni技術。

      (1)Java代碼:給JackyAirplane添加一個靜態(tài)廣告成員變量。

      1. public class JackyAirplane extends Cocos2dxActivity{  
      2. ...  
      3. public static AdView adView;    // 第3方廣告  
      4.   
      5. }  

      (2)Java代碼:添加靜態(tài)成員方法,用來顯示廣告。

      1. public static void showAD() {   
      2.   new Thread(new Runnable(){  
      3.    
      4.   @Override  
      5.   public void run() {  
      6.   adView.setVisibility( adView.VISIBLE );  
      7.   }  
      8.    
      9.   }).start();  
      10. }  

      (3)C++代碼:通過jni調用showAD()。

      1. #include <jni/JniHelper.h>  
      2.   
      3. JniMethodInfo minfo;    
      4. jobject jobj;    
      5.    
      6. bool b = JniHelper::getStaticMethodInfo(minfo,     
      7. "com/jacky/jackyAirplane/JackyAirplane",  //類路徑  
      8. "showAD",   //靜態(tài)方法名    
      9. "()V");   //括號里的是參數(shù),后面的是返回值  
      10. if(b)  
      11.     jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);    
      12. else  
      13.     ;//打印錯誤...  
      如果要控制廣告的開關,可以在Java內使用Handler來接收消息控制,不過這個時候就要記得傳參(開/關)了。


      好了,微信飛機大戰(zhàn)講解到這里就全部結束了。感謝CCTV什么的就不來了。希望這一系列的教程能夠幫助您開啟cocos2d-x游戲的快樂旅途!

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多