博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2d(3.0)一些基础的东西
阅读量:6282 次
发布时间:2019-06-22

本文共 2554 字,大约阅读时间需要 8 分钟。

1.创建项目后环境配置:

附加文件夹:加入

$(EngineRoot)

$(EngineRoot)cocos

$(EngineRoot)cocos\editor-support

$(EngineRoot)build\Debug.win32

..\proj.win32

 

通用属性加入

(先从 cocos2d-x-3.0rc0 中 extensions   cocos\editor-support   cocos\ui 加入进去)

libcocosstudio

libExtensions

libGUI

链接器 附加依赖项:

libGUI.lib

libCocosStudio.lib
libExtensions.lib

 

头文件的加入:

这些都放在头文件中

#include "cocos2d.h"

#include "ui\CocosGUI.h"
#include "cocos-ext.h"
#include "ui\UIButton.h"
#include "cocostudio\CocoStudio.h"
#include "editor-support\cocostudio\CCSGUIReader.h"
#include <iostream>

 

using namespace std;

using namespace cocos2d;
using namespace cocostudio;
using namespace ui;

 

在init中就能够将外部建好的场景倒入进来

auto m_layout = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("login_ui\\NewUI_1.ExportJson");

 this->addChild(m_layout);

 

场景中的button和代码链接UI_BUTTON_LOGIN是在外部场景中的tag值

 Button* startBtn = dynamic_cast<Button*>(m_layout->getChildByTag(UI_BUTTON_LOGIN)); 

 startBtn->addTouchEventListener(this,toucheventselector(HelloWorld::touchButton));

 

场景中的中文字符的显示:

 

wstring HelloWorld::charToWstring(const char* c) 

 wstring ws; 
 int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0); 
 wchar_t* m_wchar=new wchar_t[len+1]; 
 MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len); 
 m_wchar[len]='\0';

 ws.append(m_wchar); 

 return ws; 
}

 

inline std::string WideByte2UTF8(const wstring& text)

{

 int asciisize = ::WideCharToMultiByte(CP_UTF8, 0, text.c_str(), text.size(), NULL, 0, NULL, NULL);

 if (asciisize == ERROR_NO_UNICODE_TRANSLATION ||

  asciisize == 0) 

 { 

  return string();

 }

 char* resultstring = new char[asciisize];

 int convresult = ::WideCharToMultiByte(CP_UTF8, 0, text.c_str(), text.size(), resultstring, asciisize, NULL, NULL);

 if (convresult != asciisize)

 { 

  return string();

 } 

 std::string buffer(resultstring, convresult);

 delete[] resultstring;

 return buffer;

}

 

button切换场景

void HelloWorld::touchButton(Ref* obj,TouchEventType eventype)

{

Scene* pScene = ui_login_tag::createScene();

 Director::sharedDirector()->replaceScene(pScene);

}

 

加入动画:

ArmatureDataManager::getInstance()->addArmatureFileInfo("MyAnimation.ExportJson");

 Armature* armature = Armature::create("MyAnimation");
 armature->setTag(AM_MYANIMATION);

 armature->setPosition(Point(visibleSize.width/2,visibleSize.height/2));

 
 this->addChild(armature);

 

button播放动画

auto armature = (Armature*)getChildByTag(AM_MYANIMATION);

 switch (type)
 {
 case TouchEventType::TOUCH_EVENT_ENDED:
  if(tag == UI_BUTTON_BUTTON_PLAY1)
  {
   armature->getAnimation()->play("hit");
  }else if(tag == UI_BUTTON_BUTTON_PLAY2)
  {
   armature->getAnimation()->play("fall");
  }
  break;
 default:
  break;
 }

 

 

 

 

转载地址:http://hyxva.baihongyu.com/

你可能感兴趣的文章
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>
设计模式01:简单工厂模式
查看>>
项目经理笔记一
查看>>
Hibernate一对一外键双向关联
查看>>
mac pro 入手,php环境配置总结
查看>>
MyBatis-Plus | 最简单的查询操作教程(Lambda)
查看>>
rpmfusion 的国内大学 NEU 源配置
查看>>
spring jpa 配置详解
查看>>
IOE,为什么去IOE?
查看>>
java 用反射简单应用,将Object简单转换成map
查看>>
Storm中的Worker
查看>>
dangdang.ddframe.job中页面修改表达式后进行检查
查看>>
Web基础架构:负载均衡和LVS
查看>>
Linux下c/c++相对路径动态库的生成与使用
查看>>
SHELL实现跳板机,只允许用户执行少量允许的命令
查看>>
SpringBoot 整合Redis
查看>>
2014上半年大片早知道
查看>>
Android 6.0指纹识别App开发案例
查看>>
正文提取算法
查看>>