转自 http://www.cocoachina.com/bbs/read.php?tid=194668

前天, 在CocoaChina 2014春季大会上, 激动人心的Cocos2d-x 3.0和CocoStudio 1.3发布了. Cocos2d-x 3.0做出令人兴奋的性能, 易用性等一系列改进, CocoStudio 1.3带来了稳定性和新特性. 今天让我们看下如何在新建Cocos 3.0rc0的Win32的工程中添加CocoStudio的支持.  
一 软件及其下载  
1. Cocos2d-x 3.0rc  
    http://cdn.cocos2d-x.org/cocos2d-x-3.0rc0.zip  
2. CocoStudio 1.3  
    在CocoStudio 1.3中可以直接创建Cocos2d-x项目, 所以这次的安装包有3个.  
    仅含CocoStudio 1.3  
    http://126.am/YDrVk1  
    CocoStudio 1.3包含了Cocos2d-x 3.0rc0  
    http://126.am/lorYp2  
    CocoStudio 1.3 包含了Cocos2d-x 2.2.3  
    http://126.am/eGo4f4  
3. Python 2.7.6  
    Cocos2d-x的脚本用到了Python, Win下没有自带Python, 大家还需要下载Python.  
    Python的版本我这里推荐大家用最新的2.7.6. 因为Python的2.x和3.x不兼容, 所以一定不能用3.x的版本  
    大家可以根据自己的系统下载对应的版本.  
    https://www.python.org/download/releases/2.7.6/  
4. Visual Studio  
    地球人都知道啦. 我今天演示采用的版本是Visual Studio 2013.  
    VS2010, VS2012, 下面提到的需要设置的地方, 都是相同的. 请大家自行下载安装.  
 
二 Python的安装和设置

  
安装基本上就是下一步, 下一步就好了. 中间安装路径, 我选择的是"C:\Python27\", 等下要用到这个路径.  
右键单击“计算机”,选择“属性”----》“高级系统设置”,在“高级”选项卡下选择“环境变量”!  
在“系统变量”下选中“Path”,并点击下方的编辑按钮:  
在弹出的“编辑系统变量”对话框中编辑“变量值”,在“变量值”的后面添加Python的安装路径(C:\Python27\),用英文分号(;)将其与后面的其他内容隔开。

  
同样地,在“PATHEXT“的变量值中添加 .PY;.PYM .  
打开cmd控制台,输入 python,如果出现如下提示,则说明python安装成功.  
如果你设置环境变量前已经打开了cmd, 需要重新打开cmd.  
三 创建Cocos2d-x 3.0rc0项目  
在Cocos2d-x 3.0rc0中, 引入cocos2d-console这一新的Cocos2d-x工具.  
在console中你可以完成2d-x的新建项目, 编译甚至在模拟器里面运行项目.  
我们先来看下如何使用cocos2d-console创建新的项目.  
我们将下载好的2d-x 3.0rc0解压到C:\cocos2d-x-3.0rc0.  
我们打开cmd, 切换到C:\cocos2d-x-3.0rc0 目录  
运行python setup.py.  
中间会询问几个Android开发需要的地址, 我们今天不涉及Android开发, 直接回车跳过即可.

  
最后会提示我们重启电脑, 我们重启电脑.  
接下来我们在C:\Work目录中创建新项目HelloCocos.  
打开终端, 切换到C:\Work目录中.运行cocos new命令.  
这里我们可以看到cocos new的用法.

  
我们接着输入命令 cocos new -p com.young40.hellococos -l cpp HelloCocos  
其中-p是包名, -l 选择了cpp即C++开发, HelloCocos是项目名称.你可以替换为自己喜欢的名称.  
我们打开C:\Work\HelloCocos\proj.win32\HelloCocos.sln, 如果提示升级项目, 选择确定即可.  
点击F5, 运行项目. 稍等编译完成后, 我们就可以看到我们熟悉的HellWorld了.  
四 在项目中添加CocoStudio支持  
我们在VS中找到"解决方案资源管理器", 在解决方案"HelloCocos"上点击右键, 选择添加现有项目.

  
在弹出的对话框中选择C:\Work\HelloCocos\cocos2d\cocos\editor-support\cocostudio\proj.win32\libCocosStudio.vcxproj  
然后继续添加C:\Work\HelloCocos\cocos2d\extensions\proj.win32\libExtensions.vcxproj  
然后继续添加C:\Work\HelloCocos\cocos2d\cocos\ui\proj.win32\libGUI.vcxproj  
然后我们在HelloCocos项目上点击右键选择添加引用

  
在弹出的对话框中选择添加引用, 并勾选libCocosStudio, libGUI和libExtensions后点击确定.

  
如果大家使用的是VS2012或者VS2013, 可能会看到项目被标记为VS2010, 这里我们升级下项目设置, 否则可能无法编译.

  
然后, 我们HelloCocos项目属性(点击右键选择属性)中选择 "配置属性" => "C/C++" => "附加包含目录" 并编辑.  
添加下面几行  
$(EngineRoot)cocos  
$(EngineRoot)extensions  
$(EngineRoot)cocos\editor-support\  
$(EngineRoot)cocos\editor-support\cocostudio

  
编译一下工程, 还是能运行吧. 如果遇到问题, 不妨来CocoaChina论坛的CocoStudio专区来继续交流.  
五 添加代码  
我们打开CocoStudio 1.3的动画编辑器, 打开一个HeroAnimation的示例, 并直接导出, 将导出的文件放C:\Work\HelloCocos\Resources下面.  
我们打开HelloWorld.cpp给其添加引用以及命名空间

#include "CocoStudio.h"
 
using namespace cocostudio;

然后修改下HelloWorld::init函数, 在return前加入

ArmatureDataManager::getInstance()->addArmatureFileInfo("Hero0.png" , "Hero0.plist" , "Hero.ExportJson");
 Armature *armature = Armature::create( "Hero");
            armature->setPosition(ccp(visibleSize.width * 0.5, visibleSize.height * 0.5));
            armature->getAnimation()->playWithIndex(0);
 this->addChild(armature);
 
 return true;

好了, 赶快运行下吧.

上文为转载的帖子,基本全部操作完成,最后加入cocostudio时有点坑。时间太久,忘记了当时遇到的都是哪些具体问题。归根结底就是,cocos2d更新太快,相应文档更新则太慢,不同版本间的代码兼容性略差造成的。

扒出来了自己的代码,运行了一下,可以出界面。

源码如下:

 #include "HelloWorldScene.h"
#include "CocoStudio.h"
using namespace cocostudio;
USING_NS_CC; Scene* HelloWorld::createScene()
{
// 'scene' is an autorelease object
auto scene = Scene::create(); // 'layer' is an autorelease object
auto layer = HelloWorld::create(); // add layer as a child to scene
scene->addChild(layer); // return the scene
return scene;
} // on "init" you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
{
return false;
} Size visibleSize = Director::getInstance()->getVisibleSize();
Point origin = Director::getInstance()->getVisibleOrigin(); /////////////////////////////
// 2. add a menu item with "X" image, which is clicked to quit the program
// you may modify it. // add a "close" icon to exit the progress. it's an autorelease object
auto closeItem = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); closeItem->setPosition(Point(origin.x + visibleSize.width - closeItem->getContentSize().width/ ,
origin.y + closeItem->getContentSize().height/)); // create menu, it's an autorelease object
auto menu = Menu::create(closeItem, NULL);
menu->setPosition(Point::ZERO);
this->addChild(menu, ); /////////////////////////////
// 3. add your codes below... // add a label shows "Hello World"
// create and initialize a label auto label = LabelTTF::create("Hello World", "Arial", ); // position the label on the center of the screen
label->setPosition(Point(origin.x + visibleSize.width/,
origin.y + visibleSize.height - label->getContentSize().height)); // add the label as a child to this layer
this->addChild(label, ); // add "HelloWorld" splash screen"
auto sprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen
sprite->setPosition(Point(visibleSize.width/ + origin.x, visibleSize.height/ + origin.y)); // add the sprite as a child to this layer
this->addChild(sprite, ); cocos2d::ui::Widget * layout = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("testingMyUI.json");
layout->setPosition(Point::ZERO);
layout->setScale(this->getContentSize().width / layout->getContentSize().width);
this->addChild(layout, );
layout->setOpacity(); auto fadeIn = FadeIn::create();
auto delay = DelayTime::create();
auto fadeOut = FadeOut::create();
auto callback = CallFuncN::create([=](Ref* pSender){ });
auto finalAction = Sequence::create(fadeIn,delay,fadeOut,callback,NULL);
layout->runAction(finalAction); return true;
} void HelloWorld::menuCloseCallback(Ref* pSender)
{
Director::getInstance()->end(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit();
#endif
}

HelloWorldScene.cpp

[转帖]Cocos2d-x 3.0rc0 的Win32工程添加CocoStudio库的更多相关文章

  1. 给新建的Cocos2d-x 3.X的Win32工程添加CocoStudio库

    1.我们在VS中找到"解决方案资源管理器", 在解决方案"HelloCocos"上点击右键, 选择添加现有项目. 在弹出的对话框中选择************* ...

  2. Win32工程中使用MFCdll的解决方法

    我的项目是Win32,先使用了 Standard Windows Libraries,可后期又要要使用MFC的dll,所以要更改工程属性 ,MFC 的dll可以使用了,但标准的windows的dll出 ...

  3. Win32编程之静态库编写与使用.动态链接库的编写与使用

    Win32编程之静态库编写与使用.动态链接库的编写与使用 一丶什么是静态库.什么是动态链接库. 静态库其实就是解决模块开发的一种解决方案.在以前.我们写代码的时候.每个人都可以独立写一个项目.但是现在 ...

  4. quick cocos2dx 3.x 配置win32工程

    公司项目主体部分用c++,而ui部分用lua写,所以选择了用quick框架.项目先开发了ios/mac版,这两天试着配置其win32工程,遇到一些问题,记录一下(纯c++版本cocos2dx配置方法应 ...

  5. cmake 如何生成一个win32工程

    只需要加上下面一句连接选项就可以了. IF(WIN32) SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:W ...

  6. cocos2d JS touch(触摸监听)-快速添加事件监听器到管理器

    cc.eventManager.addListener({ event: cc.EventListener.TOUCH_ALL_AT_ONCE, onTouchesMoved: function (t ...

  7. win32程序应用mfc库

    引入<afx.h> 此时会出现如下错误: #ifdef _DLL#ifndef _AFXDLL#error Building MFC application with /MD[d] (CR ...

  8. [转帖]Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案

    Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案 https://www.cnblogs.com/xlecho/p/11834011.html echo编辑整理,欢迎转载,转 ...

  9. Cocos2d-x 开发 v3.2 建立新项目并添加库文件

    一.添加其它类库     3.0以上的设计耦合性强,项目中模块常以库的形式存在,需常添加链接库.在3.0中经常用到CocoStudio 编辑器的资源数据,所以需要添加CocoStudio 库. 1.1 ...

随机推荐

  1. Android 逆向project 实践篇

    Android逆向project 实践篇 上篇给大家介绍的是基础+小Demo实践. 假设没有看过的同学能够进去看看.(逆向project 初篇) 本篇主要给大家介绍怎样反编译后改动源代码, 并打包执行 ...

  2. 基础url、相对url、绝对url

    #基础url.相对url.绝对url #HTTP权威指南 34页 •绝对URL:包含了访问资源所需的全部信息,如:http://www.163.com/new.html •相对URL:去除基础的部分, ...

  3. Intellij IDEA 快捷键整理(dyCopy)

    原文:http://www.cnblogs.com/tonycody/p/3257601.html   [常规] Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “! ...

  4. jquery checkbox选框操作

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  5. 利用Windows 2003系统中实现两个网段的路由

    利用Windows 2003系统中实现两个网段的路由 当一个局域网中存在两个以上网段时,分属于不同网段内的主机彼此互不可见.为了解决这个问 题,就必须在不同的网段之间设置路由器.如果花费上万元资金购买 ...

  6. jQuery+ajax中,让window.open不被拦截(转)

    方法1:<input type="button" class="preview" value="预览"/>$('.preview ...

  7. Windows2008R2允许多用户远程登录设置

    Windows 2008 R2终端服务器安装配置 后面的一律下一步就可以安装完成了,下面是如何设置多用户远程登陆. Windows2008允许多用户远程登录设置 服务器重启,以上配置全部生效.

  8. Augular初探

    一年多前,巧遇angular,觉得是个非常优秀的mv*框架,当时项目使用了MooTools.因此也没继续研究.刚好最近,同事组中有用到ng,并且要做个分享.因此就将from Why Does Angu ...

  9. SQL 错误 823 I/O error (bad page ID) detected during read【修复方法】

    今天一个数据库损坏了,不管对 该表 查询.修改.添加 都会出错, 错误信息如下: I/O error (bad page ID) detected during read at offset 0x00 ...

  10. 命名管道FIFO和mkfifo函数

    进程间通信必须通过内核提供的通道,而且必须有一种办法在进程中标识内核提供的某个通道,前面讲过的匿名管道是用打开的文件描述符来标识的.如果要互相通信的几个进程没有从公共祖先那里继承文件描述符,它们怎么通 ...