cocos2d-x基础1

来源:互联网 发布:大数据风控模型 编辑:程序博客网 时间:2024/05/19 21:16

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文件里面定义
bool init();
CREATE_FUNC(HelpScene);<==>

StaticBall * create(){
  Ball * b = new Ball();
  b->init();
  b->atuorelase();
  return b;};

 static Scene * createScene();
};

3.2自定义的cpp文件

#include "HelpScene.h"
#include "HelloWorldScene.h"

//对init方法的实现
bool HelpScene::init(){
if(!Layer::init()){
return false;
}
auto spbk = Sprite::create("help.png");
spbk->setPosition(Point::ZERO);
spbk->setAnchorPoint(Point::ZERO);
this->addChild(spbk);

//在该场景初始化的时候就注册了点击和滑动屏幕的事件
EventListenerTouchOneByOne * touch = EventListenerTouchOneByOne::create();
touch->onTouchBegan=[](Touch *touch,Event * event){
return true;
};
touch->onTouchMoved=[](Touch *touch,Event * event){
Director::getInstance()->replaceScene(HelloWorld::createScene());
};
_eventDispatcher->addEventListenerWithSceneGraphPriority(touch,this);
return true;
}


Scene * HelpScene::createScene(){

//helloWorld本来是一个层,它需要创建一个场景,导演运行场景,场景添加层layer,layer添加sprite
auto scene = Scene::create();
auto layer = HelpScene::create();//就调用CREATE_FUNCK方法,然后在调用init()初始化的方法
scene->addChild(layer);
return scene;
}

0 0
原创粉丝点击