Cocos2dx

一、Cocos2d-x 3.x 坐标系
来源:http://www.cocos.com/doc/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/coordinate-system/zh.md
1、使用笛卡尔坐标系中定义的右手系原点在左下角,x向右,y向上,z向外,OpenGL坐标系为笛卡尔右手坐标系
2、屏幕坐标系和Cocos2d坐标系
* 标志坐标系使用和OpenGL不同的坐标系,而Cocos2d使用和OpenGL相同的坐标系
* iOS、Android、Windows phone在开发应用时使用的是标志屏幕坐标系,原点为屏幕左上角,x向右,y向下
3、世界坐标系和本地坐标系
* 世界坐标系也叫绝对坐标系,是游戏开发中建立的概念。因此,“世界”指游戏世界。
* cocos2d中的元素是有父子关系的层级结构,通过Node的setPosition设定元素的位置,使用的是相对与其父节点的本地坐标系而非世界坐标系。最后在绘制的时候cocos2d会把这些元素的本地坐标映射成世界坐标系坐标。
* 本地坐标系也叫相对坐标系,是和节点相关联的坐标系。每个节点都有独立的坐标系,当节点移动或改变方向时,和该节点关联的坐标系将随之移动或改变方向。
4、锚点
* 将一个节点添加到父节点里面时,需要设置其在父节点上的位置,本质上是设置节点的锚点在父节点坐标系上的位置。
* Anchor Point的两个参数都在0~1之间。它们表示的并不是像素点,而是乘数因子。(0.5,0,5)表示Anchor Point位于节点长度乘0.5和宽度乘0.5的地方,即节点中心。
* 在Cocos2d-x中Layer的Anchor Point为默认值(0,0)并且默认忽略锚点,所以要设置ignoreAnchorPointForPosition(false),其他Node的默认值为(0.5,0.5)
5、VertexZ,PositionZ 和 zOrder
* VertexZ是OpenGL坐标系中的Z值
* PositionZ是Cocos2d-x坐标系中的Z值
* zOrder是Cocos2d-x本地坐标系中Z值
* 在实际开发中我们只需要关注zOrder
* 通过setPositionZ接口来设置PositionZ,PositionZ的值即为OpenGL的z值VertexZ
* 同样节点的PositionZ也是决定了该节点的渲染顺序,值越大,但是与zOrder不同的区别在于,PositionZ是全局渲染顺序即在根节点上的渲染顺序,而zOrder则是局部渲染顺序,即该节点在其父节点上的渲染顺序,值越大在其父节点上渲染越靠前
6、触摸点

————————————————————————————————————————————————————————————————————————————————

二、Cocos2dx中的宏
1、CC_SYNTHESIZE(type,variableName,functionName);//用于简单变量的初始化,自动创建getter、setter方法
2、CC_SYNTHESIZE_RETAIN(type,variableName,functionName);//可以用于自己创建的类变量,并且可以保留一次引用计数
3、CCASSERT(true,”sdfsdfs”)//前面的参数如果是true,则程序继续执行,如果是false,程序中断

三、Cocos2dx序列帧动画
http://www.cocos.com/doc/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/frame-animation/zh.md
1、手动添加 Animation、Animate、Sprite
【注】使用Animation类描述一个动画,而精灵显示动画的动作则是一个Animate对象。动画动作Animate是精灵显示动画的动作,它有一个动画对象创建,并由精灵执行。
* 创建方法:
* 手动添加序列帧到Animation类
* 创建Animation对象,往其中添加动画序列帧,设置动画隔间时间、播放参数,将Animation通过Animate转换成Action,然后使用,精灵的runAction播放Animate

        * 使用文件初始化Animation类

2、文件添加 AnimationCache、Animate、Sprite
    * 将创建好的动画plist文件添加到动画缓存AnimatioCache中,plist文件中包含了序列帧的相关信息
    auto cache = AnimationCache::getInstance();
    cache->addAnimationWithFile(“animation/animation-2.plist”);
    auto animation2 = cache->getAnimation(“dance_1”);

    auto nation = Animate::create(animation2);
    Sprite tamara = Sprite::create();
    tamara->runAction(Sequence::create(action2,action2->reverse(),null));
    * 用动画缓存初始化Animation实例
    * 用Animate实例来播放序列帧动画
3、动画缓存

四、基础知识
1、typedef和define
* typedef int p;用p可以表示int,是在编译器运行的时候执行
* define 是宏定义,在编译之前执行的,

五、引入CocoStudioUI
1、#include “cocos2d.h”
#include “CocosGUI.h”
#include “CocoStudio.h”
#include “CCSGUIReader.h”

USING_NS_CC;
using namespace ui;
using namespace std;
using namespace cocostudio;
     2、Mac中在Header FilePaths路径下,添加"$(SRCROOT)/../cocos2d/cocos/editor-support/cocostudio”,引入类库
     3、Windows下,需要引入CocoStudio的引用
     4、
const char *TEST_CUSTOMER_FONT_UI_PATH = "TestCustomFont.json";//测试自定义字体场景

custom = static_cast<Layout *>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile(TEST_CUSTOMER_FONT_UI_PATH));
addChild(custom, 1);
uiPanel = dynamic_cast<Layout *>(custom->getChildByName("uiPanel"));

_testTxt = dynamic_cast<Text *>(uiPanel->getChildByName("Custom"));
_testTxt->setFontName("FZY4JW--GB1-0.ttf");
_testTxt->setText(_testTxt->getStringValue());

六、添加自定义字体
1、在Mac下需要将rtf字体文件添加在resources中,再将rtf字体添加在info.plist文件中的Fonts provided by application 项里面
2、在需要显示的字体中调用xxxx.ttf字体全名

string intWithThousandthNotation(int source) {

bool isNegative = false;
if(source < 0) isNegative = true;
string ret = std::to_string(abs(source));
int len = ret.length();
for (int i = len - 3; i > 0; i -= 3) {
    if (ret.at(i - 1) != '-') {
        ret.insert(i, ",");
    }
}
if(isNegative){
    ret  = "-" + ret;
}
return ret;

}

/**
* 截取多余字符串转变成点号
*/
string cutExcessStringConvertdot(const string &str, Text *text) {
string ret = str;
int length = str.length();
std::string tempStr = str;
Size size = Size(0, 0);
int fontSize = text->getFontSize();
int with = text->getSize().width;

int cutIndex = 0;

int chinsesIndex = 0;

for (int i = 0; i < length;) {
    std::string substring = tempStr.substr(i, 1);
    if ((substring.c_str()[0] & 0x80) != 0) //是汉字
    {
        substring = tempStr.substr(i, 3);
        i += 3;
        chinsesIndex = i;
    }
    else {
        i++;
    }
    auto tempLabel = LabelTTF::create(substring.c_str(), "", fontSize);
    tempLabel->setHorizontalAlignment(TextHAlignment::LEFT);
    Size tmpLsize = tempLabel->getContentSize();
    size.width += tmpLsize.width;

    //显示宽度已经大于容器大小
    if (size.width >= with) {
        //求出截取的索引位置
        cutIndex = i;
        break;
    }
}
//说明有截取 并且有字符串可以被替换成 ..
if (cutIndex != 0 && cutIndex - 3 > 0) {
    //截取位置不能是中文
    if (cutIndex - chinsesIndex >= 3) {
        ret.replace(cutIndex - 3, str.length() - cutIndex + 3, "...");
    }
    else {
        ret.replace(cutIndex - (cutIndex - chinsesIndex), str.length() - cutIndex + (cutIndex - chinsesIndex), "...");
    }
}
log("==== show NickName:%s", ret.c_str());
return ret;

}

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值