在cocos2d 2.0.4中拖放精灵

时间:2014-04-30 05:22:48

标签: cocos2d-x

使用cocos2d 2.0.4在c ++中使用鼠标拖放时可以帮助我更换sprite的位置。

 CCSprite *splash=CCSprite::create("Level3.png");
   splash->setPosition((200,500));
    this->addChild(splash,1);

    CCSprite *splash1=CCSprite::create("Level2.png");
   splash1->setPosition((300,500));
    this->addChild(splash,1);

    CCSprite *splash=CCSprite::create("Level3.png");
   splash->setPosition((200,500));
    this->addChild(splash,1);

    CCSprite *splash1=CCSprite::create("Level2.png");
   splash1->setPosition((300,500));
    this->addChild(splash,1);

使用鼠标拖放操作

进行交换

2 个答案:

答案 0 :(得分:0)

我想你知道处理接触。要交换,请按照以下步骤操作。

  • 从哪里开始拖动复制精灵。 (您可以在CCSprite中使用getTexture,您可以使用它来创建新的CCSprite)
  • 无论你在哪里删除该Sprite纹理的商店地址。
  • 通过拖动纹理更改精灵纹理(再次使用getTexture和setTexture方法)
  • 无论你在哪里开始拖动,都要在步骤2中使用存储的纹理地址使用setTexture方法。
  • 最后你必须删除被拖动的Sprite。

答案 1 :(得分:0)

对于Cocos2d-x v 2.0.4,不建议(由于速度问题)在每个cocos2d::CCSprite*上创建事件。

一种解决方案是将cocos2d::CCSprites*存储在std::vector<cocos2d::CCSprite*>中,让cocos2d::Layer响应触摸事件。当cocos2d::Layer*收到并发送事件时,循环浏览std::vector<cocos2d::CCSprite*>并查看哪个cocos2d::CCSprite*包含触摸,然后对其进行操作。 (检查边界框)。

您可以通过继承cocos2d::Layer*public cocos2d::CCLayer以及覆盖以下几个功能来为cocos2d::CCTargetedTouchDelegate添加触摸功能:

#include "cocos2d.h"
using namespace cocos2d;
class MyLayer : public cocos2d::CCLayer, public cocos2d::CCTargetedTouchDelegate 
{
    public:
        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);
};