cocos2dx 18个易忽略的知识点

news/2024/7/5 20:02:00 标签: cocos2d-x, 查漏补缺
一、const与define的区别
1.const修饰的是有数据类型的,在编译时编译器会对其进行数据类型安全检查
2.define只是简单的宏替换 ,不对进行数据类型安全检查
const实现机制:const用来说明定义的变量是只读的。实现机制:这些在编译期间完成,编译器直接使用常数来替换掉对此变量的引用

二、重载:参数列表不同(1.参数个数不同2.参数类型不同)
        重写:子类实现从父类继承来的方法

三、struct与class的区别 :
最本质的一个区别就是默认的访问控制: 
默认的继承访问权限
struct是public的class是private的
struct与union的区别是所有的成员共用一块地址空间,给其他成员赋值会造成重写

四、虚函数
父类对象指向子类对象,子类重写父类中的函数, 这时候 若声明为虚函数,该父类对象将调用正确版本的函数,即为该子类重写的函数。

五、我们将对文件的操作封装到类中以方便使用
操作文件类型为XML文件,其他类型的大致原理一致
xml文件的类型:
  <SignWang  firstname = ' />
 解释:firstChild->getvalue=SignWang
      signWang->getfirstAttritube 得到xmlelementAttribute * 类型的属性
      属性 ->name=firstname;
     属性 ->value=‘万'   

六、内存管理
1、cocos2dx来源于cocos-iPhone,采用的是oc的内存管理机制分为两种(1、自动释放autorelease 2、手动释放 release )autorelease加入自动释放池,在每帧刷新的时候释放,而release则是直接释放
2、节点子树管理(都继承自Node节点)
3、cache缓存管理(精灵帧缓存、纹理缓存)spriteCacheNode加载一次
(内存分区:堆区、栈区、常量区、静态区、代码区)

七、设计模式
设计模式:单例模式 ,(特点:只被初始化一次,永久存在)缺点:会一直占用内存空间
要求:1、本类的静态对象(注意需要在类外进行初始化,指针的话让其指向空)
           2、得到这个成员变量(对象)的静态方法

八、 同一时间只有一个场景在运行
       节点的各个子节点锚点均为(0.5,0.5)
       (Layer只是cocos2dx底层中忽略其锚点,导致使用的时候将其看做锚点为(0,0))

九、WinSize  设备的尺寸
        FrameSize 画框大小
       VisibleSize 可视化区域

十、引用计数
create,add,添加进数组均会使引用计数+1,remove则会-1

十一、Label 与 MenuItem  
auto label2 = Label::createWithBMFont("sign.fnt", "123");
// 注意调用的是 sign.fnt格式
auto label3 = Label::createWithCharMap("tuffy_bold_italic-charmap.plist");
// 参数是字体文件plist
 
auto item5 = MenuItemAtlasFont::create("Cl", "tuffy_bold_italic-charmap.png", 48, 64, ' ');
// 参数解释依次是字体文件、每个字的宽度、高度(宽高需要到对应的plist查看)、文件中第一个字符是  
menuItem必须添加到menu中,menuItemToogle必须要设置select index值,0的话初始化为itemImage1的样子

十二、 onEnter(), onExit()
    // 刚开始创建调用(对应的资源,成员变量初始化在构造函数里面调用)
    // 对应的初始化UIonEnter()中实现
   
void onEnter();
   
// 释放资源(对应的资源,成员变量在析构函数里面释放)
   
// 对应的UI移除在onExit()中实现
    void onExit();

十三、repeatForever中有sequence是可以执行的,可以一直执行序列动作,反过来不行
因为在执行序列动作时候是依次执行,执行到repeatForever,程序会死到那里

十四、 关于随机数rand(),srand();的使用
  rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。

要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
      要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)

十五、动作
摄像机动作,每个精灵都默认带有一个摄像机
OrbitCamera :: create ( 2.0f , 1 , 0 , 0 , 90 , 0 , 0 )
起始Z角及旋转Z角,我们目前可以理解成摄像机沿着球面的的水平方向旋转。
起始X角及旋转X角,可以理解成摄像机沿着球面的的垂直方向旋转。
参数解释:执行时间、摄像机离目标的半径,半径差,起始Z角
removeSelf() action删除动作
progressTimmer // 进度条动作

十六、触摸  
(1)单点触摸优先级永远比多点触摸高
(2)多点触摸没有吞噬
lis-> setSwallowTouches ( true );// 设置吞噬触摸(条件1.设置为true2.onTouchBegin返回值为True)
EventListenerTouchOneByOne// 设置单点监听
bool HelloWorld ::onTouchBegan( Touch *touch, Event *event)// touch为点击屏幕的点  event->getCurentTarget()可以得到点击对象
监听器只能被注册一次,在被注册需要用到clone()函数

十七、 MessageBox ( " 体力值不足 " , " 提示 " );
// 系统提供的弹出框 第二个参数是标题,第一个是内容(支持中文)

十八、进度条 LoadingBar默认为不开启九宫格
区分进度条动作  :
auto spr = Sprite :: create ( "HelloWorld.png" );
    auto pro = ProgressTimer :: create (spr);
    pro-> setType ( ProgressTimer :: Type :: BAR );//bar为矩形radios为圆形展开
    pro-> setBarChangeRate ( Vec2 ( 1 , 0 ));// 展开方向为x正方向
    pro-> setMidpoint ( Vec2 ( 0 , 0.5 ));// 设置中点(类似锚点)
    pro-> setPercentage ( 50 );// 设置percent
   
    auto progress = ProgressTo :: create ( 2.0f , 100 );// 创建动作
    pro-> runAction (progress);
    pro->
setPosition ( 400 , 300 );
    addChild(pro,10);

http://www.niftyadmin.cn/n/1785723.html

相关文章

C++混编OC 交互编译

首先需要将C类中的CPP后缀名改为.mm然后在导入oc类的头文件之前需要判断是否为IOS平台&#xff0c;若是则导入对OC窗体的添加首先要获得glview 导演类的单例对象调用getOpenGLView()函数在调用getEAGLView()获得GLview窗口之后创建一个窗体&#xff08;按照oc的方法&#xff09…

cocos studio 初体验 版本3.10

新建项目—>添加控件 cocos项目中需要添加头文件 #include "cocostudio/CocoStudio.h" using namespace cocostudio; #include "ui/cocosGUI.h" // 播放帧序列动画时需要使用该命名空间 using namespace cocostudio::timeline; // 通过csb文件获取…

Lua 开发环境搭建 基本语法

一、配置lua引擎包lua引擎包安装配置&#xff0c;首先下载lua的引擎包&#xff0c;这里采用的是5.3.3版本&#xff0c;mac环境&#xff0c;然后解压缩到存放的地方&#xff0c;尽量不要中文路径&#xff0c;然后运行终端&#xff0c;cd进入该文件src目录&#xff0c;输入 make …

Lua table表函数库

一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明. table.concat(table, sep, start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以…

lua实现ipairs、pairs的功能

ipairs只能遍历以数字为下标的&#xff0c;而pairs则可以遍历各种下标&#xff08;包括字符串&#xff09; 其中的实现都仰仗闭合函数 function dieDaiQi(t)--实现ipairs的功能 local i 0return function ()i i1if i>#t then // 检测是否超出范围return nilendretu…

cocos2d-x 屏幕适配 策略

资源分辨率&#xff1a;表示我们的图片的分辨率。设计分辨率&#xff1a;表示我们设计的分辨率。可以这么认为&#xff0c;如果将我们的程序放到这个分辨率的设备上&#xff0c;那么我们的程序将完美显示。屏幕分辨率&#xff1a;实际屏幕的分辨率。getVisibleSize&#xff1a;…

Lua 初学者需要注意的地方

实现不定参数: ...需要用一个表来接收不定参数 table表可以通过下标运算符来获取值&#xff0c;但是下标从1开始lua文件实现读入数据&#xff1a; lua文件需要有 io.read() 在控制台到文件的路径下使用lua命令 lua 文件名 即可执行此文件封装&#xff1a;三个权限 继承…