加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-x基础学习--编写自己的精灵类

发布时间:2020-12-14 19:47:45 所属栏目:百科 来源:网络整理
导读:近来的空余时间比较充分,出于个人的兴趣,来学习一下cocos2d游戏开发。在cocos2d中最基本,也最经常使用的就是精灵类,对于游戏中的不同人物,我们经常使用自己类对精灵进行一个封装,做个简单的笔记,如何封装自己的精灵类。 第一步:重写自己的精灵类继承

近来的空余时间比较充分,出于个人的兴趣,来学习一下cocos2d游戏开发。在cocos2d中最基本,也最经常使用的就是精灵类,对于游戏中的不同人物,我们经常使用自己类对精灵进行一个封装,做个简单的笔记,如何封装自己的精灵类。

第一步:重写自己的精灵类继承基类Sprite,实现virtual方法init

1)头文件:

#include "cocos2d.h"

#ifndef _MY_SPRITE_
#define _MY_SPRITE_

class MySprite : public cocos2d::Sprite{
public :
	virtual bool init();
	static MySprite* create();
		 
	//CREATE_FUNC(MySprite);

}
	 
#endif // !_MY_SPRITE_

2)init方法
bool MySprite::init(){

	if(!Sprite::initWithFile("image.png")){
		return false;
	}
	//在这里进行一些精灵类的设置
	setScale(0.5f,0.5f);//设置缩放
	setRotation(90);//顺时针方向
	return true;
}
第二步:实现静态方法create方法,在create方法中创建新的MySprite,并调用init方法,同时将MySprite的生命周期交给程序来控制
MySprite* MySprite::create(){
 MySprite * sprite = new MySprite();
 if(sprite->init()){
  sprite->autorelease();//有程序控制sprite的生命周期,
 } else
 {
  delete sprite;
  sprite = NULL;
  return NULL;
 }
 return sprite;
}
如果我们在头文件中声明CREATE_FUNC(MySprite),则表明我们主动实现了父类中没有参数的create方法

第三步:在scene类中添加sprite

        auto s = MySprite::create();
	s->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2 ));//设置精灵的位置
	this->addChild(s);
我们也可以向create和init方法中加入参数来区分自己的精灵类,这时就不能在使用CREATE_FUNC的宏。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读