quick如何打开工程或者示例
quick如何打开工程或者示例
1. 那里打开工程
 cc.ui.UIPushButton.new(images, {scale9 = true})
    :setButtonSize(buttonWidth, buttonHeight)
    :setButtonLabel("normal", cc.ui.UILabel.new({
		    UILabelType = 2,
            text = "打开",
            size = 18,
        }))
    :pos(display.width-padding, top)
    :addTo(node)
    :onButtonClicked(function()
   		//新打开工程的配置
        local projectConfig = ProjectConfig:new()
        local argumentVector = vector_string_:new_local()
        local index = self.localProjectListView_:getCurrentIndex()
        if index > 0 then
            local arguments = cc.player.settings.PLAYER_OPEN_RECENTS[index].args
            for _,v in ipairs(arguments) do
                argumentVector:push_back(v)
            end
            projectConfig:parseCommandLine(argumentVector)
  //根据工程配置打开工程,下面分析:
 PlayerProtocol:getInstance():openNewPlayerWithProjectConfig(projectConfig)
        end
    end)
2.打开新工程
void PlayerMac::openNewPlayerWithProjectConfig(const ProjectConfig& config)
{
    if (_appController && [_appController respondsToSelector:NSSelectorFromString(@"launch:")])
    {
        NSString *commandLine = [NSString stringWithCString:config.makeCommandLine().c_str()
                                                   encoding:NSUTF8StringEncoding];
        NSArray *arguments = [NSMutableArray arrayWithArray:[commandLine componentsSeparatedByString:@" "]];
        //对工程配置进行处理转换,然后调用AppController中的launch方法, 并把工程配置参数传递过去
        [_appController performSelector:NSSelectorFromString(@"launch:") withObject:arguments];
    }
}
- (void) launch:(NSArray*)args
{
	//重新打开模拟器,也就是这个app,然后把新的工程配置信息传递过去, 这样重新打开的模拟器
	//就是新的工程了
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
    NSMutableDictionary *configuration = [NSMutableDictionary dictionaryWithObject:args forKey:NSWorkspaceLaunchConfigurationArguments];
    NSError *error = nil;
    [[NSWorkspace sharedWorkspace] launchApplicationAtURL:url
                                                  options:NSWorkspaceLaunchNewInstance
                                            configuration:configuration error:&error];
}
3.重新进入工程
//相当于重新打开模拟器,只不过传递了新的工程配置信息,那这样就打开新的工程了
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [self installUncaughtExceptionHandler];
    auto player = player::PlayerMac::create();
    player->setController(self);
  	 ...
  	 ...
  	 //updateProjectFromCommandLineArgs分析传递过来的新的工程信息,并转化为
  	 //ProjectConfig工程配置,然后打开新的工程
    [self updateProjectFromCommandLineArgs:&_project];
    //下面这些就跟第一次打开模拟器的时候一样了,只不过ProjectConfig使用的是新的
    [self createWindowAndGLView];
    [self registerEventsHandler];
    [self startup];
}
4. .quick_player.lua文件内容,其实我们可以直接修改这个文件,加入我们自己的工程,
下面那个test就是我直接添加的,这些配置项的具体含义可以参看最下面的部分:
PLAYER_WINDOW_WIDTH = 960,
PLAYER_WINDOW_HEIGHT = 640,
PLAYER_COCOACHINA_USER = "USER_NAME",
PLAYER_WINDOW_X = 0,
PLAYER_OPEN_LAST_PROJECT = true,
PLAYER_WINDOW_Y = 0,
PLAYER_COCOACHINA_KEY = "USER_KEY",
PLAYER_OPEN_RECENTS ={
  {
    title = "/Users/staff/Documents/cocos-quick/cocos-quick-lua/quick/samples/drag/",
    args ={
      "-quick",
      "/Users/staff/Documents/cocos-quick/cocos-quick-lua/",
      "-workdir",
      "/Users/staff/Documents/cocos-quick/cocos-quick-lua/quick/samples/drag/",
      "-file",
      "/Users/staff/Documents/cocos-quick/cocos-quick-lua/quick/samples/drag/src/main.lua",
      "-writable",
      "/Users/staff/Documents/cocos-quick/cocos-quick-lua/quick/samples/drag/",
      "-size",
      "960x640",
      "-write-debug-log",
      "-console",
      "-disable-load-framework",
      "-disable-debugger",
    },
  },
  {
    title = "/Users/staff/Documents/cocos-quick/sampletest/test/",
    args ={
      "-quick",
      "/Users/staff/Documents/cocos-quick/cocos-quick-lua/",
      "-workdir",
      "/Users/staff/Documents/cocos-quick/sampletest/test/",
      "-file",
      "/Users/staff/Documents/cocos-quick/sampletest/test/src/main.lua",
      "-writable",
      "/Users/staff/Documents/cocos-quick/sampletest/test/",
      "-size",
      "960x640",
      "-disable-write-debug-log",
      "-console",
      "-disable-load-framework",
      "-offset",
      "{790,207}",
      "-disable-debugger",
    },
  },
void ProjectConfig::parseCommandLine(const vector<string> &args)
{
    auto it = args.begin();
    while (it != args.end())
    {
        string arg = *it;
        if (arg.compare("-quick") == 0)
        {
            ++it;
            if (it == args.end()) break;
            setQuickCocos2dxRootPath((*it).c_str());
        }
        else if (arg.compare("-workdir") == 0)
        {
            ++it;
            if (it == args.end()) break;
            setProjectDir(*it);
            if (_writablePath.length() == 0) setWritablePath(*it);
        }
        else if (arg.compare("-writable") == 0)
        {
            ++it;
            if (it == args.end()) break;
            setWritablePath(*it);
        }
        else if (arg.compare("-file") == 0)
        {
            ++it;
            if (it == args.end()) break;
            setScriptFile(*it);
        }
        else if (arg.compare("-package.path") == 0)
        {
            ++it;
            if (it == args.end()) break;
            setPackagePath(*it);
        }
        else if (arg.compare("-landscape") == 0)
        {
            setFrameSize(cocos2d::Size(DEFAULT_HEIGHT, DEFAULT_WIDTH));
        }
        else if (arg.compare("-portrait") == 0)
        {
            setFrameSize(cocos2d::Size(DEFAULT_WIDTH, DEFAULT_HEIGHT));
        }
        else if (arg.compare("-size") == 0)
        {
            ++it;
            if (it == args.end()) break;
            const string& sizeStr(*it);
            size_t pos = sizeStr.find('x');
            int width = 0;
            int height = 0;
            if (pos != sizeStr.npos && pos > 0)
            {
                string widthStr, heightStr;
                widthStr.assign(sizeStr, 0, pos);
                heightStr.assign(sizeStr, pos + 1, sizeStr.length() - pos);
                width = atoi(widthStr.c_str());
                height = atoi(heightStr.c_str());
                setFrameSize(cocos2d::Size(width, height));
            }
        }
        else if (arg.compare("-scale") == 0)
        {
            ++it;
            if (it == args.end()) break;
            float scale = atof((*it).c_str());
            setFrameScale(scale);
        }
        else if (arg.compare("-write-debug-log") == 0)
        {
            setWriteDebugLogToFile(true);
        }
        else if (arg.compare("-disable-write-debug-log") == 0)
        {
            setWriteDebugLogToFile(false);
        }
        else if (arg.compare("-console") == 0)
        {
            setShowConsole(true);
        }
        else if (arg.compare("-disable-console") == 0)
        {
            setShowConsole(false);
        }
        else if (arg.compare("-load-framework") == 0)
        {
            setLoadPrecompiledFramework(true);
        }
        else if (arg.compare("-disable-load-framework") == 0)
        {
            setLoadPrecompiledFramework(false);
        }
        else if (arg.compare("-offset") == 0)
        {
            ++it;
            if (it == args.end()) break;
            setWindowOffset(cocos2d::PointFromString((*it).c_str()));
        }
        else if (arg.compare("-app-menu") == 0)
        {
            _isAppMenu = true;
        }
        else if (arg.compare("-resize-window") == 0)
        {
            _isResizeWindow = true;
        }
        else if (arg.compare("-retina-display") == 0)
        {
            _isRetinaDisplay = true;
        }
        ++it;
    }
    setDebuggerType(kCCLuaDebuggerNone);
}
quick如何打开工程或者示例的更多相关文章
- eclipse 创建maven 项目 动态web工程完整示例
		需求表均同springmvc案例 此处只是使用maven 注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了 没有的话需要安装m ... 
- xcode7 打开工程错误 This Document requires xcode8.0 or later.
		xcode7 打开工程错误 This Document requires xcode8.0 or later. 场景: xcode7创建的工程,后来安装了xcode8.0,用8打开7的工程跑了一下: ... 
- 关于XCode5打开工程闪退的一种解决方案
		今天同事遇到一个问题,是关于xcode5打开工程文件一直闪退的问题.后来查看了一下崩溃日志.有如下描述: xception Type: EXC_CRASH (SIGABRT) Exception Co ... 
- eclipse 创建maven 项目 动态web工程完整示例  maven 整合springmvc整合mybatis
		接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ... 
- Powerdesigner打开工程提示打印错误 解决方法
		在使用PowerDesigner打开工程时, 提示打印错误的问题,具体错误信息提示如下: 在您可以执行与打印机有关的任务(例如页面设置或打印一个文档)之前,您必须已经安装打印机.您想现在安装打印机么? ... 
- (OpenExplorer For Eclipse)Eclipse 中打开工程目录的插件(转)
		我们想在Eclipse中的打开工程目录,Eclipse 自身没有这个功能,我们可以安装一个插件来实现这个功能.具体的操作方法如下: (1).到以下链接中下载插件:https://github.com/ ... 
- Android Studio中每次打开工程Gradle sync龟速解决办法
		问题描述 自己使用android studio后,发现每次一打开工程,软件就在Grandle sync.sync就算了,而且这个步骤还必须过TZ,并且时间超级长,可能睡完觉起来还没有下载好.下面是正在 ... 
- idea-----怎样取消idea默认打开工程
		怎样取消idea默认打开工程 引用:https://jingyan.baidu.com/article/656db918c05135e381249cb7.html 
- Eclipse 中打开工程目录的插件
		我们想在Eclipse中的打开工程目录,Eclipse 自身没有这个功能,我们可以安装一个插件来实现这个功能.具体的操作方法如下: (1).到以下链接中下载插件:https://github.com/ ... 
随机推荐
- Android 支持库迁移到AndroidX
			一.背景 Android系统版本在不断更新,从最初的Android 1.0到现在Google和各大手机厂商正在推的Android 10,平均下来每个年头都有一个大的版本更新.但用户正在用的手机上的An ... 
- .NET MVC 支付宝支付(即时到账)
			已经好久没有搞过.NET了,朋友有一个网站 ,需要接入支付宝功能,重新对接了一下. 1.开发前,需要一个企业支付宝账号登录,获取 PID和 配置密钥 官方文档:https://docs.open.al ... 
- 使用Visual Studio的单元测试
			步骤1:创建被测试项目 创建单元测试项目步骤2:在测试项目中写测试代码步骤3:运行测试 方法1 右键运行测试,方法2 点击测试 运行所有测试备注:单击方法 右测有提示可以看测试方法的输出 
- nginx fastcgi模块ngx_http_fastcgi_module详细解析、使用手册、完整翻译
			ngx_http_fastcgi_module 模块允许将请求传递给 FastCGI 服务器. 示例配置 location / { fastcgi_pass localhost:9000; fastc ... 
- 理解了quote和 symbol-list的 关系
			'x === (quote x) '(x) === (list 'x) 
- oracle中查询一月的时间补0的问题
			sql语句 select NVL(B.weight, 0),A.time from (SELECT TO_CHAR(TO_DATE(开始时间, 'yyyy-MM-dd') + ROWNUM - 1, ... 
- Qt实现表格树控件-支持多级表头
			目录 一.概述 二.效果展示 三.实现方式 四.多级表头 1.数据源 2.表格 3.QStyledItemDelegate绘制代理 五.测试代码 六.相关文章 原文链接:Qt实现表格树控件-支持多级表 ... 
- redis的两种持久化方案
			前言 人生在于折腾系列,网络,多线程等系列博客楼主还在继续折腾也不会放弃.缓存的知识其实并不仅仅在于简单的增删改查,我觉得有必要全面深入的学习一波.记录学习的过程与体悟. RDB 什么是RDB 对re ... 
- English--元音
			English|元音 在一开始学习英语的时候,最需要掌握的就是音标.所以需要从音标的元音开始,并且不局限于掌握音标的元音与辅音,大家可以参考下英文版发音课,并不知道只学习元音与辅音,还有各种弱读连读等 ... 
- 隐马尔科夫模型(Hidden Markov Models) 系列之五
			转自:http://blog.csdn.net/eaglex/article/details/6458541 维特比算法(Viterbi Algorithm) 找到可能性最大的隐藏序列 通常我们都有一 ... 
