cocos2d-x基础1
1,cocos2d内存管理机制
某一个对象,A代码对其应用,引用基数++,B代码对其释放,引用基数--;这样就可以方便的统计 代码对某一个对象引用了多少次,每一个代码用某个对象,他的基数++;当所有的代码都不适用的 时候它的referenceconunt= 0;就会删除该对象;当某一个对象调用autorelase();方法时,他会把当前的 对象放到一个自动释放的池里,该池会在每一个绘图生命周期结束(一帧绘图结束)的时候会获取到池中所有的对象并自动释放对象一次,建议永远不要用delete obj,因为不知道是否有其他的对象引用该对象,造成系统的崩溃;一般使用了某个对象时写obj->retain(),在对象使用完毕后释放写obj->release();也可以在对象new了之后就调用obj->autorelease();方法,它会当前绘图周期结束release();如果这时依然没有代码引用该对象,那么他就会被删除! 2,自定义Sprite的创建Ball.h #include <iostream> #include<cocos2d.h> Using namespace std;
Class Ball:public Sprite{ Public: Virtualbool init(); CREATE_FUNCK(Ball); } Ball.cpp #include ball.h Bool Ball::init(){ initWithFile(“xx.png”);//调用父类的初始化的方法 return true; } 3,自定义场景
3.1自定义的头文件
#pragma once#include "cocos2d.h" using namespace cocos2d; class HelpScene:public cocos2d::Layer { public: //这里init和CREATE_FUNCK是约定俗称的方法,集合每一个对象初始化都需要,然后就是自定义的方法 //在.h头文件里面声明,在.cpp文件里面定义 StaticBall * create(){Ball * b = new Ball();b->init();b->atuorelase();return b;}; static Scene * createScene(); 3.2自定义的cpp文件 #include "HelpScene.h" //对init方法的实现 //在该场景初始化的时候就注册了点击和滑动屏幕的事件 //helloWorld本来是一个层,它需要创建一个场景,导演运行场景,场景添加层layer,layer添加sprite auto scene = Scene::create(); auto layer = HelpScene::create();//就调用CREATE_FUNCK方法,然后在调用init()初始化的方法 scene->addChild(layer); return scene; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |