zoukankan      html  css  js  c++  java
  • 怎么运行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函数实现

    ①设计分辨率的宽

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

     

  • 相关阅读:
    383. Ransom Note
    598. Range Addition II
    453. Minimum Moves to Equal Array Elements
    492. Construct the Rectangle
    171. Excel Sheet Column Number
    697. Degree of an Array
    665. Nondecreasing Array
    视频网站使用H265编码能提高视频清晰度吗?
    现阶段的语音视频通话SDK需要解决哪些问题?
    企业远程高清会议平台视频会议系统在手机端使用的必备要求有哪些?
  • 原文地址:https://www.cnblogs.com/chevin/p/5871377.html
Copyright © 2011-2022 走看看