zoukankan      html  css  js  c++  java
  • 建立一个测试项目

    自行建立了一个cocos工程,尝试自己写写代码。

    发现cocos一个做法,似乎cocos比较少去自定义一个scene,于是一般的做法是自定义一个layer,并写一个createScene静态函数,在这个静态函数中,创建一个scene和这个layer的一个对象,并把这个对象加入scene中,返回scene。

    另一个做法是把构造函数设为保护类成员,再专门定义一个create静态函数负责对象创建。cocos的对象估计都有一套内存管理策略,因此禁止了用户手动new和delete。

    cocos用到不少新版c++的特性,例如回调函数的一个宏:
    #define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA_ARGS__)
    #define CC_CALLBACK_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)
    用了新版的bind函数(以前只有bind1st和bind2nd)。这个函数是一个“适配器”,作用是把函数指针“改造”成一个函数对象,selector是函数指针,之后的都是参数。可以指定原来函数参数与新函数对象的对应关系,例如:
    int f(int, char, double);
    
    auto frev = bind(f, _3, _2, _1);        // 翻转参数顺序
    std::placeholders::_1表示宏定义中 “...”的第一个参数
    有意思的是bind可以绑定非静态成员函数,例如:CC_CALLBACK_0(Test1Layer::closeItemFunc,this)),把this指针作为第一个参数即可。
    bind函数的详细说明在这里。
    总的来说,这个宏的用法如下
    CC_CALLBACK_0(函数指针,参数1(如果是成员函数,是this指针),参数2,参数3,...)生成一个有一个参数的普通函数对象,或一个有0个参数的成员函数对象






  • 相关阅读:
    javascript学习一
    对软件工程课程的认识
    人月神话读后感
    项目开发总结报告(GB8567——88)
    MFC双缓冲绘图
    QT连接MySQL
    [QT学习]拷贝文件
    Arduino入门笔记【1】
    《人月神话》读后感以及软件工程总结
    十天冲刺任务(第二次冲刺)
  • 原文地址:https://www.cnblogs.com/dydx/p/4297598.html
Copyright © 2011-2022 走看看