• 怎么运行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);
                }
            }
        }

     

  • 相关阅读:
    2017洛谷7月月赛总结
    poj3169 Layout
    poj3613Cow Relays
    洛谷P1418 选点问题
    poj3311Hie with the Pie
    poj1734Sightseeing trip
    poj3728The merchant
    洛谷P2420 让我们异或吧
    struts2.1笔记02:servlet简介
    struts2.1笔记01:MVC框架思想浅层理解
  • 原文地址:https://www.cnblogs.com/chevin/p/5871377.html
Copyright © 2020-2023  润新知