青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Khan's Notebook GCC/GNU/Linux Delphi/Window Java/Anywhere

路漫漫,長(zhǎng)修遠(yuǎn),我們不能沒有錢
隨筆 - 173, 文章 - 0, 評(píng)論 - 257, 引用 - 0
數(shù)據(jù)加載中……

cocos 2d-x 從哪兒開始

疑問1, 不支持官方模擬器調(diào)試. 需真機(jī)調(diào)試, 網(wǎng)上據(jù)說有辦法解決 未測(cè)試, 
疑問2, 不支持genymontion這個(gè)geek模擬器

1.下載google adt(已經(jīng)包含eclipse 以及adk, cdt),
2.下載ndk, 配置ndk環(huán)境, eclipse中指明ndk路徑,
3.下載cocos-2dx, eclipse中配置環(huán)境變量
4. 導(dǎo)入范例工程 便于圍觀
5. 自行新建工程, 打開終端,進(jìn)入cocos2d-x目錄下的tools/project-creator,執(zhí)行命令 ./create_project.py -project [項(xiàng)目名] -package [包名] -language [使用語言cpp或java等]
    然后就能在cocos2d-x目錄下的projects中看到新生成的項(xiàng)目了。(cocos2dx 2.2以后不再使用模板安裝了, python安裝及環(huán)境自己腦補(bǔ)
   
由于未安裝cygwin 所以新項(xiàng)目編譯會(huì)產(chǎn)生錯(cuò)誤(Error: Program "bash" is not found in PATH), 在eclipse的新建工程名稱上 右鍵->屬性--> c/c++ build 面板右側(cè) build command 欄改為 xxxxx\android-ndk-r9\ndk-build.cmd 



現(xiàn)在開始分析cocos2dx源碼的驅(qū)動(dòng)流程, 以下是cocos2dx 2.2版本自動(dòng)生成的范例

//程序的入口
public class test extends Cocos2dxActivity{
    protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
    public Cocos2dxGLSurfaceView onCreateView() {
    Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
    // test should create stencil buffer
    glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
   
    return glSurfaceView;
    }
    static {
        System.loadLibrary("cocos2dcpp");
    }     
}

從源碼看, 好像沒做什么工作.  只是載入了jni 庫, 肯定內(nèi)有乾坤, 從parent class繼續(xù)跟
public abstract class Cocos2dxActivity extends Activity implements Cocos2dxHelperListener {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sContext = this;
            this.mHandler = new Cocos2dxHandler(this);
    this.init(); //此處調(diào)用內(nèi)部函數(shù)
Cocos2dxHelper.init(this, this);
}



// ===========================================================
public void init() {
    // FrameLayout
        ViewGroup.LayoutParams framelayout_params =
            new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
                                       ViewGroup.LayoutParams.FILL_PARENT);
        FrameLayout framelayout = new FrameLayout(this);
        framelayout.setLayoutParams(framelayout_params);
        // Cocos2dxEditText layout
        ViewGroup.LayoutParams edittext_layout_params =
            new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
                                       ViewGroup.LayoutParams.WRAP_CONTENT);
        Cocos2dxEditText edittext = new Cocos2dxEditText(this);
        edittext.setLayoutParams(edittext_layout_params);
        // ...add to FrameLayout
        framelayout.addView(edittext);
        // Cocos2dxGLSurfaceView
        this.mGLSurfaceView = this.onCreateView();
        // ...add to FrameLayout
        framelayout.addView(this.mGLSurfaceView);
        // Switch to supported OpenGL (ARGB888) mode on emulator
        if (isAndroidEmulator())
           this.mGLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0);
        this.mGLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());  //這里值得關(guān)注, 當(dāng)然是在看了當(dāng)前class 其他代碼沒什么頭緒的情況下, 用排除法得出的結(jié)論
        this.mGLSurfaceView.setCocos2dxEditText(edittext);
        // Set framelayout as the content view
setContentView(framelayout);
}

從 Cocos2dxRenderer 繼續(xù)跟.
public class Cocos2dxRenderer implements GLSurfaceView.Renderer {
@Override
public void onSurfaceCreated(final GL10 pGL10, final EGLConfig pEGLConfig) {
Cocos2dxRenderer.nativeInit(this.mScreenWidth, this.mScreenHeight); //從名稱上看 這個(gè)似乎跟jni相關(guān)了
this.mLastTickInNanoSeconds = System.nanoTime();
}

private static native void nativeInit(final int pWidth, final int pHeight); //果然是個(gè)native函數(shù). 

這里應(yīng)該會(huì)直接到c庫了
#include "AppDelegate.h"
#include "cocos2d.h"
#include "CCEventType.h"
#include "platform/android/jni/JniHelper.h"
#include <jni.h>
#include <android/log.h>
#define  LOG_TAG    "main"
#define  LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
using namespace cocos2d;
extern "C"
{
    
jint JNI_OnLoad(JavaVM *vm, void *reserved)
{
    JniHelper::setJavaVM(vm);
    return JNI_VERSION_1_4;
}


//此處就是java中找出來的jni函數(shù),  從程序最初的activity 驅(qū)動(dòng)到cocos2dx的引擎入口
void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv*  env, jobject thiz, jint w, jint h) 
    if (!CCDirector::sharedDirector()->getOpenGLView())
    {
        CCEGLView *view = CCEGLView::sharedOpenGLView();
        view->setFrameSize(w, h);
        AppDelegate *pAppDelegate = new AppDelegate(); // 這里的語法很奇怪, 靜態(tài)函數(shù)為什么不直接調(diào)用,  這么奇怪的語法是因?yàn)?nbsp;AppDelegate 對(duì)象需要調(diào)用parent class CCApplication的構(gòu)造器, 初始化一個(gè)靜態(tài)的CCApplication
對(duì)象, 這樣CCApplication::sharedApplication()才不會(huì)獲得null指針, 最后附上CCApplication.cpp的部分有關(guān)聯(lián)的代碼
        CCApplication::sharedApplication()->run();  //此處代表引擎的內(nèi)部循環(huán)正式開始了
    }
    else
    {
        ccGLInvalidateStateCache();
        CCShaderCache::sharedShaderCache()->reloadDefaultShaders();
        ccDrawInit();
        CCTextureCache::reloadAllTextures();
        CCNotificationCenter::sharedNotificationCenter()->postNotification(EVENT_COME_TO_FOREGROUND, NULL);
        CCDirector::sharedDirector()->setGLDefaultValues(); 
    }
}
}


platform/android/CCApplication.cpp
// sharedApplication pointer
CCApplication * CCApplication::sm_pSharedApplication = 0;
CCApplication::CCApplication()
{
    CCAssert(! sm_pSharedApplication, "");
    sm_pSharedApplication = this;
}

posted on 2013-11-03 12:26 Khan 閱讀(1637) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产精品欧美一二99| 亚洲黄色性网站| 欧美成人亚洲成人| 一区二区三区视频在线观看| 欧美专区日韩视频| 新狼窝色av性久久久久久| 亚洲二区在线视频| 极品尤物久久久av免费看| 国产精品亚洲а∨天堂免在线| 欧美日韩ab| 免费在线观看一区二区| 制服丝袜亚洲播放| 亚洲午夜极品| 欧美 日韩 国产 一区| 亚洲免费一在线| 欧美一区二区三区视频免费播放| 欧美日韩国产一中文字不卡 | 亚洲人屁股眼子交8| 国产精品福利网| 国产亚洲一区二区三区| 亚洲国产精品va| 性色av香蕉一区二区| 午夜亚洲伦理| 亚洲国产精品第一区二区| 一区二区三区四区国产精品| 久久精品道一区二区三区| 欧美日韩国产经典色站一区二区三区| 亚洲高清不卡在线观看| 亚洲片区在线| 久久综合伊人77777| 国产精品视频xxxx| 99国产精品国产精品毛片| 欧美在线观看你懂的| 亚洲美女精品久久| 麻豆国产精品777777在线| 国产日韩在线视频| 欧美亚洲专区| 国产区亚洲区欧美区| 亚洲综合色婷婷| 亚洲一二三区在线| 国产毛片一区| 欧美一区二区私人影院日本 | 一区二区三区四区五区精品| 午夜精品视频一区| 亚洲少妇中出一区| 欧美亚州韩日在线看免费版国语版| 久久偷窥视频| 亚洲毛片在线观看| 一区二区三区日韩欧美精品| 含羞草久久爱69一区| 欧美激情精品久久久| 欧美gay视频激情| 艳妇臀荡乳欲伦亚洲一区| 亚洲一区二区三区涩| 亚洲国产精品ⅴa在线观看| 亚洲国产另类精品专区| 国产精品jizz在线观看美国| 欧美一级视频一区二区| 欧美在线免费视频| 久久久91精品国产| 国产精品美女久久久久av超清 | 免费观看成人鲁鲁鲁鲁鲁视频 | 亚洲精品色图| 久久精品成人| 午夜亚洲伦理| 国产视频在线观看一区二区三区 | 欧美一区二区三区成人| 老司机一区二区| 欧美亚洲综合在线| 久久先锋影音av| 亚洲黄页视频免费观看| 国产一区二区你懂的| 久久黄色网页| 亚洲在线免费观看| 国产日韩精品入口| 小黄鸭精品密入口导航| 亚洲一区日韩| 国产亚洲欧洲一区高清在线观看| 国产精品乱码妇女bbbb| 欧美体内she精视频| 亚洲无亚洲人成网站77777| 亚洲综合精品一区二区| 欧美国产在线观看| 在线视频欧美一区| 亚洲欧美国产不卡| 亚洲激情影视| 亚洲午夜在线| 亚洲黄色片网站| 久久久国产精品一区| 亚洲第一视频网站| 狠狠久久亚洲欧美专区| 在线中文字幕不卡| 亚洲黄色免费| 亚洲欧美春色| 亚洲视频精选| 欧美激情视频一区二区三区在线播放| 欧美国产高清| 久久综合伊人| 国产一区二区三区日韩| 亚洲一区二区三区涩| 久久综合九色综合久99| 国内精品久久久久久久影视蜜臀| 99re8这里有精品热视频免费 | 国产精品午夜春色av| 国产精品久久久久久影院8一贰佰| 国产欧美韩日| 亚洲国产日韩欧美一区二区三区| 久久综合久久综合久久综合| 国产精品高清在线| 99国产精品久久久久老师| 亚洲国产毛片完整版| 欧美在线国产| 久久久久九九九| 在线观看91精品国产入口| 久久久久久9| 欧美福利视频在线观看| 国产酒店精品激情| 亚洲精品乱码久久久久久日本蜜臀 | 欧美区在线播放| 亚洲国产aⅴ天堂久久| 久久久精品国产一区二区三区| 亚洲国产精品久久久| 欧美国产免费| 亚洲精品看片| 久久精品青青大伊人av| 亚洲国产中文字幕在线观看| 欧美国产精品人人做人人爱| 亚洲欧美日韩在线高清直播| 欧美不卡在线视频| 欧美一区日本一区韩国一区| 日韩一本二本av| 91久久国产精品91久久性色| 一区二区久久久久久| 一区久久精品| 亚洲已满18点击进入久久| 久久精品亚洲热| 亚洲国产精品小视频| 国产精品自拍视频| 国产精品a久久久久久| 欧美a级一区| 欧美a级片一区| 国产精品女同互慰在线看| 亚洲精品免费电影| 欧美成人免费在线观看| 久久九九热免费视频| 欧美一区二区在线免费播放| 久久色在线观看| 性欧美大战久久久久久久久| 欧美一区观看| 久久婷婷av| 亚洲自拍三区| 亚洲欧美日本在线| 一区二区三区黄色| 亚洲色无码播放| 午夜精品久久久| 欧美在线二区| 欧美二区视频| 欧美日韩在线一区| 欧美午夜一区二区三区免费大片 | 国产精品一区二区久久| 麻豆精品视频在线| 欧美成人a视频| 国产伦精品免费视频| 中文精品视频一区二区在线观看| 亚洲国产高清视频| 亚洲色图在线视频| 免费成人网www| 国产欧美日韩免费看aⅴ视频| 一区二区国产精品| 久久精彩视频| 亚洲精品一区在线观看香蕉| 在线观看视频免费一区二区三区| 欧美va天堂在线| 国产情人综合久久777777| 亚洲激情视频在线| 久久精品72免费观看| 99视频一区| 欧美日韩在线一二三| 伊大人香蕉综合8在线视| 午夜视频久久久久久| 亚洲最黄网站| 欧美视频一区在线观看| 亚洲女人av| 欧美激情亚洲精品| 1000部精品久久久久久久久| 久久国产精品99国产精| 亚洲天堂av电影| 精久久久久久| 亚洲视频视频在线| 性久久久久久久久久久久| 亚洲三级电影在线观看| 亚洲激情一区二区| 狠狠色丁香久久综合频道| 9人人澡人人爽人人精品| 欧美一区二视频| 亚洲精品一区二区三区99| 国产日韩欧美日韩| 欧美色精品天天在线观看视频| 国产精品免费看| 久久精品91久久久久久再现|