溫馨提示×

溫馨提示×

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

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

【cocos2d-x從c++到js】17:使用FireFox進行JS遠程調試

發布時間:2020-06-15 15:00:42 來源:網絡 閱讀:9691 作者:老G 欄目:游戲開發

一、四種調試方式


目前為止,cocos2d-x jsbinding的調試方法有四種:


1.在基于Native的手游開發中,腳本語言一般都不支持在原生IDE中的調試,除非有專門的IDE或插件。所以打log是一種常見的調試方式。log調試的問題就是,錯誤定位需要很多遍才行,也不能修改內存數據。


2.使用cocos2d-html5版本,在瀏覽器里面進行調試,調試完成后把代碼移回到cocos2d-x項目中。-html5版本和-x版本在API接口上已經保持高度的一致性了。但是這么做要求配置和維護兩套開發環境,很繁瑣。對于單機游戲等小規模項目,因為需求簡單,完全沒有問題。但對于大中型網游,很多時候都要在-x中自己編寫擴展代碼,那么在-html5也必須編寫同樣的代碼,游戲才能運行,這樣就比較麻煩了。所以,這注定只是一個過渡方案。


3.使用Google v8提供的Eclipse插件,可以用來調試JS腳本。社區一直在做這方面的努力,未來幾個月應該就會有正式版本放出。這應該是最好的一種方案。


4.使用FireFox瀏覽器進行遠程調試,這是本文要探討的內容。


二、啟動模擬器


FireFox自帶的Web developer中就有Debugger。支持兩種方式,一種是調試網頁,一種是鏈接到運行FireFox OS的裝置上,進行Remote debugger(遠程調試)。我們就是使用Remote debugger來進行Cocos2d-x jsbinding的調試。


需要準備的開發環境:

最新版本的引擎cocos2d-x 3.0beta2。最新版本的FireFox v27 for mac。注意FireFox最好現在英文版,不要去中文官網上找那個一大堆插件的版本。


首先,我們要啟動游戲。使用cocos2d-x 3.0beta2的自帶的腳本,新建一個JavaScript項目。但注意,現在的項目模板中,沒有啟動調試支持的代碼(但是官方例子中TestJavaScript里面就添加了支持,蛋疼?。?,需要我們手動加上。在項目中,找到AppDelegate.cpp,改寫AppDelegate::applicationDidFinishLaunching()函數,在sc->start()后面加入sc->enableDebugger()的調用。改完后的函數如下。


bool AppDelegate::applicationDidFinishLaunching()
{
    // initialize director
    Director *director = Director::getInstance();
    director->setOpenGLView(EGLView::getInstance());
                                                                                                                                                                                                                                                                           
    // turn on display FPS
    director->setDisplayStats(true);
                                                                                                                                                                                                                                                                           
    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);
                                                                                                                                                                                                                                                                           
    ScriptingCore* sc = ScriptingCore::getInstance();
    sc->addRegisterCallback(register_all_cocos2dx);
    sc->addRegisterCallback(register_all_cocos2dx_extension);
    sc->addRegisterCallback(register_cocos2dx_js_extensions);
    sc->addRegisterCallback(register_all_cocos2dx_extension_manual);
    sc->addRegisterCallback(jsb_register_chipmunk);
    sc->addRegisterCallback(JSB_register_opengl);
    sc->addRegisterCallback(jsb_register_system);
    sc->start();
                                                                                                                                                                                                                                                                           
#if defined(COCOS2D_DEBUG) && (COCOS2D_DEBUG > 0)
    sc->enableDebugger();
#endif
                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                           
    ScriptEngineProtocol *engine = ScriptingCore::getInstance();
    ScriptEngineManager::getInstance()->setScriptEngine(engine);
    ScriptingCore::getInstance()->runScript("cocos2d-jsb.js");
                                                                                                                                                                                                                                                                              
    return true;
}


然后啟動iOS模擬器。

【cocos2d-x從c++到js】17:使用FireFox進行JS遠程調試


三、鏈接調試器和模擬器


在FireFox中,連接功能的菜單項缺省是被隱藏的,我們需要改一下瀏覽器配置。


如下操作

【cocos2d-x從c++到js】17:使用FireFox進行JS遠程調試

【cocos2d-x從c++到js】17:使用FireFox進行JS遠程調試

這樣菜單項就顯示出來了,然后。

【cocos2d-x從c++到js】17:使用FireFox進行JS遠程調試


然后,我們把調試器和設備連接起來:

【cocos2d-x從c++到js】17:使用FireFox進行JS遠程調試

【cocos2d-x從c++到js】17:使用FireFox進行JS遠程調試

彈出一個新窗口,表示連接成功:

【cocos2d-x從c++到js】17:使用FireFox進行JS遠程調試


四、開始調試


點擊窗口最上面的Debugger按鈕,進入調試界面。這界面的功能大家應該都很熟悉了。我們在按鈕的回調函數里做個斷點試試。

【cocos2d-x從c++到js】17:使用FireFox進行JS遠程調試


好的,命中了。



這種調試方式是基于瀏覽器自帶的工具,那么也應該是跨平臺的,這種方式在win32和linux下,應該是都可用的。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女