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如何打开工程或者示例的更多相关文章

  1. eclipse 创建maven 项目 动态web工程完整示例

    需求表均同springmvc案例 此处只是使用maven 注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了 没有的话需要安装m ...

  2. xcode7 打开工程错误 This Document requires xcode8.0 or later.

    xcode7 打开工程错误 This Document requires xcode8.0 or later. 场景: xcode7创建的工程,后来安装了xcode8.0,用8打开7的工程跑了一下: ...

  3. 关于XCode5打开工程闪退的一种解决方案

    今天同事遇到一个问题,是关于xcode5打开工程文件一直闪退的问题.后来查看了一下崩溃日志.有如下描述: xception Type: EXC_CRASH (SIGABRT) Exception Co ...

  4. eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis

    接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ...

  5. Powerdesigner打开工程提示打印错误 解决方法

    在使用PowerDesigner打开工程时, 提示打印错误的问题,具体错误信息提示如下: 在您可以执行与打印机有关的任务(例如页面设置或打印一个文档)之前,您必须已经安装打印机.您想现在安装打印机么? ...

  6. (OpenExplorer For Eclipse)Eclipse 中打开工程目录的插件(转)

    我们想在Eclipse中的打开工程目录,Eclipse 自身没有这个功能,我们可以安装一个插件来实现这个功能.具体的操作方法如下: (1).到以下链接中下载插件:https://github.com/ ...

  7. Android Studio中每次打开工程Gradle sync龟速解决办法

    问题描述 自己使用android studio后,发现每次一打开工程,软件就在Grandle sync.sync就算了,而且这个步骤还必须过TZ,并且时间超级长,可能睡完觉起来还没有下载好.下面是正在 ...

  8. idea-----怎样取消idea默认打开工程

    怎样取消idea默认打开工程 引用:https://jingyan.baidu.com/article/656db918c05135e381249cb7.html

  9. Eclipse 中打开工程目录的插件

    我们想在Eclipse中的打开工程目录,Eclipse 自身没有这个功能,我们可以安装一个插件来实现这个功能.具体的操作方法如下: (1).到以下链接中下载插件:https://github.com/ ...

随机推荐

  1. jdk1.8 Stream 特性总结

    不是数据结构 它没有内部存储,它只是用操作管道从 source(数据结构.数组.generator function.IO channel)抓取数据. 它也绝不修改自己所封装的底层数据结构的数据.例如 ...

  2. 【java】查看Java字节码文件内容的方法+使用javap找不到类 解决方法

    研究synchronized底层实现,涉及到查看java字节码的需要 前提是,你的PC已经成功安装了JDK并别配置了环境变量. ==========查看方法========= 一.javap查看简约字 ...

  3. 浅析libuv源码-node事件轮询解析(1)

    好久没写东西了,过了一段咸鱼生活,无意中想起了脉脉上面一句话: 始终保持自己的竞争力.所以,继续开写! 一般的JavaScript源码看的已经没啥意思了,我也不会写什么xx入门新手教程,最终决定还是啃 ...

  4. spring好文章整理

    彻底搞明白Spring中的自动装配和Autowired IDEA编译spring 5源码 Spring源码——IDEA读Spring源码环境搭建 导入spring源码org.springframewo ...

  5. Centos 7 JDK 安装(默认之前没有安装过)

    第一步: 安装JDK,先检查JDK是否存在,输入以下命令回车: java -version 没有安装过会显示: [root@heyouhao /]# java -version [root@heyou ...

  6. Shell基础 -Linux从入门到精通第九天(非原创)

    文章大纲 一.关于shell二.shell进阶(重点)三.学习资料下载四.参考文章   一.关于shell 1. 什么是shell 1.1 shell简介  Shell(外壳) 是一个用 C 语言编写 ...

  7. 爬取 豆瓣电影Top250

    目标 学习爬虫,爬豆瓣榜单,获取爬取静态页面信息的能力 豆瓣电影 Top 250  https://movie.douban.com/top250 代码 import requests from bs ...

  8. ETHINK组件取值手册

    Ethink组件取值手册 一.取值 Sql查询配置中取值方式:所有可以对外过滤的组件都可以用id.output取值 就是取组件setOutput()里输出的值 ,具体分为以下两种: 1)$p{OBJ_ ...

  9. MySQL数据备份概述

    MySQL备份类型 热备份.温备份.冷备份 (根据服务器状态) 热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 物理备份与逻辑备份 (从对象来分) 物理备份 ...

  10. Linux shell if条件判断1

    shell 逻辑控制语句:            分支判断结构        if        case     循环结构         for         while         unt ...