从继承CCSprite的类中创建一个sprite

Create a sprite from a class that inherits CCSprite

本文关键字:一个 sprite 创建 CCSprite 继承      更新时间:2023-10-16

我有一个Balloon类(请参见this),它继承自CCSprite。我给了它类似balloonSpeedballoonStrength的属性。不过,我似乎有问题。

我想做的是,当我创建Balloon类的实例时,我希望它执行以下操作:

  • 给它一个纹理(气球的PNG文件)
  • 设置balloonSpeedballoonStrength等属性
  • 添加动作使其移动并接受触摸输入

当物体被触摸时,我想:

  • 如果抽头数=balloonStrength,则计数。如果是,摧毁气球

我做了一个更简单的版本,其中Balloon对象在被触摸时会被破坏。我想在这里应用OOP和自定义类,但我似乎无法找到正确的方法

提前谢谢。

则h文件应如下所示:

#include "cocos2d.h"
using namespace cocos2d;
class Balloon : public cocos2d::CCSprite, public CCTargetedTouchDelegate {
public:
float balloonSpeed;
int balloonStrength;
int numberOfTaps;
virtual void onEnter();
virtual void onExit();
virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event);
virtual void ccTouchMoved(CCTouch* touch, CCEvent* event);
virtual void ccTouchEnded(CCTouch* touch, CCEvent* event);
}; 

并且在您的触摸方法中:

bool Balloon::ccTouchBegan(CCTouch* touch, CCEvent* event){
    CCPoint touchLocation = this->getParent()->convertTouchToNodeSpace(touch);
    if (CCRect::CCRectContainsPoint(this->boundingBox(), touchLocation)) {
        this->numberOfTaps++;
        if(this->balloonStrength == this->numberOfTaps){ 
            this->removeFromParentAndCleanup(true);
        }
    }
    return true;
}

您可以在添加blueBalloon作为层或节点的子级后使用它,如下所示:

blueBalloon->balloonSpeed = 2.0f;
blueBalloon->numberOfTaps = 0;
blueBalloon->balloonStrength = 5;