怎么運行cocos2dx 3.x simulator?


1.simulator的好處是:

快速切換分辨率;F5快速重新啟動項目;

這對於腳本語言來說都是很方便快捷的。

 

2.涉及到顯示參數的文件有兩個:

①lang,這個是菜單的語言文件,如果沒有這個文件的話,則上圖的菜單為英文。(這個文件可以在ide-support文件夾找到,但是在3.13中去掉了這個文件夾)

②config.json,這個文件定義了一些分辨率之類的參數,將在下面列出來。

③還有啟動參數,也在下面列出來。

 

3.啟動參數(不提供啟動參數,將不能正常運行,在windows下可以使用bat文件來提供啟動參數進行啟動)

具體可以參看ProjectConfig.cpp文件里的parseCommandLine函數實現

①-workdir:工作目錄

②-writable-path:寫入路徑

③-entry:腳本入口文件

④-landscape:是否橫屏

⑤-portrait:是否豎屏

⑥-resolution:窗體分辨率

⑦-scale:縮放比例

⑧-write-debug-log:日志路徑

⑨-console:是否顯示控制台

⑩-position:窗體偏移位置

⑪-debugger:調試器類型

⑫-app-menu:是否顯示菜單

⑬-resize-window:窗口大小是否可變

⑭-retina-display:是否retina

⑮-port:沒有實現功能

⑯-listen:綁定監聽地址

⑰-search-path:資源搜索路徑

⑱-first-search-path:首個資源搜索路徑

⑲-language-data-path:語言數據路徑

 

在windows下寫的運行bat如下(simulator.exe當前目錄為工作目錄;當前目錄下的src和res為資源搜索路徑;窗口分辨率1134x750):

@echo off start simulator.exe -workdir ./ -search-path ./src;./res -resolution 1334x750 exit

 

4.config.json配置文件

具體可以參看ConfigParser.cpp文件里的readConfig函數實現

①width:設計分辨率的寬

②height:設計分辨率的高

③name:窗口顯示的名字

④isLandscape:是否橫屏

⑤entry:腳本入口文件

⑥consolePort:控制台監聽端口

⑦debugPort:沒有實現

⑧uploadPort:文件上傳端口

⑨isWindowTop:沒有實現

⑩simulator_screen_size數組:菜單按鈕顯示的分辨率

 

5.個性化需求:讓運行窗口在屏幕中間

①-position可以設置偏移位置,如果屏幕分辨率都一樣的話可以設置這個屬性,另外一個方法就是增加一個參數。

②增加一個-screen-center參數

在ProjectConfig.h/ProjectConfig.cpp中增加_isInScreenCenter屬性(仿照_isResizeWindow屬性增加對應的方法) 

③ProjectConfig.h增加代碼:

  

④ProjectConfig.cpp增加代碼:

 

 

 

讀取配置文件中的數據:

 

 

⑤在SimulatorWin.cpp中增加代碼

 

    Vec2 pos = _project.getWindowOffset(); if (pos.x != 0 && pos.y != 0) { RECT rect; GetWindowRect(_hwnd, &rect); if (pos.x < 0) pos.x = 0; if (pos.y < 0) pos.y = 0; MoveWindow(_hwnd, pos.x, pos.y, rect.right - rect.left, rect.bottom - rect.top, FALSE); } //增加的代碼
    else if (_project.isInScreenCenter()){ RECT rect; GetWindowRect(_hwnd, &rect); int screen_x = GetSystemMetrics(SM_CXSCREEN); int screen_y = GetSystemMetrics(SM_CYSCREEN); SetWindowPos(_hwnd, HWND_TOP, (screen_x + rect.left - rect.right) / 2, (screen_y + rect.top - rect.bottom) / 2, 0, 0, SWP_NOSIZE | SWP_NOZORDER); }

 

 

 

6.個性化需求:增加-console_leftop參數讓控制台窗口出現在屏幕左上角的位置

①和上面的代碼同理,增加_isConsoleLeftTop屬性

②在SimulatorWin.cpp中增加代碼

 

    if (_project.isShowConsole()) { AllocConsole(); _hwndConsole = GetConsoleWindow(); if (_hwndConsole != NULL) { ShowWindow(_hwndConsole, SW_SHOW); BringWindowToTop(_hwndConsole); freopen("CONOUT$", "wt", stdout); freopen("CONOUT$", "wt", stderr); HMENU hmenu = GetSystemMenu(_hwndConsole, FALSE); if (hmenu != NULL) { DeleteMenu(hmenu, SC_CLOSE, MF_BYCOMMAND); } //增加的代碼
            if (_project.isConsoleLeftTop()){ RECT rect; GetWindowRect(_hwndConsole, &rect); MoveWindow(_hwndConsole, 0, 0, rect.right - rect.left, rect.bottom - rect.top, FALSE); } } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM