2014-04-30 104 views
0

你可以幫助我任何人在使用cocos2d 2.0.4在C++中拖放鼠標的同時交換精靈位置。在cocos2d中拖放小精靈2.0.4

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); 

與阻力交換與鼠標

回答

0

我想你知道有關操作觸摸拖放操作。按照以下步驟進行交換。

  • 從哪裏開始拖動複製該精靈。 (你已經在CCSprite中獲得了紋理,你可以用它來創建新的CCSprite)
  • 無論你在哪裏丟棄該Sprite紋理的存儲地址。
  • 變化紋理通過拖動紋理精靈(再次使用getTexture和方法的SetTexture)
  • 何地,你開始在一個步驟中使用存儲紋理尋址拖動使用的SetTexture方法2.
  • 最後你要刪除這被拖動雪碧。
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*包含該觸摸,然後對其執行操作。 (檢查邊界框)。

您可以通過繼承public cocos2d::CCLayercocos2d::CCTargetedTouchDelegate以及覆蓋一些功能,如添加觸摸到您的cocos2d::Layer*

#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); 
};