使用CCTouchDispatcher,我在我的主...
初始化[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
我认为到目前为止这是正确的 - 我有拖动工作和一切我的触摸,但是当我拖动一个精灵超过CCMenu时,触摸优先级在菜单上而不是精灵 - 是否有任何解决这个问题的方法?
gameBoard = [CCMenu menuWithItems:nil];
[self addChild:gameBoard z:-1];
(我稍后填充了gameBoard)
我让它不使用CCTouchDispatcher和手势识别器,但是无论出于何种原因它都没有触发ccTouchEnded所以我想我会试一试!
感谢任何帮助!
答案 0 :(得分:1)
找出解决办法。
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
只需将0更改为-129或更低。 CCMenu的优先级为-128,值越低,优先级越高。
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:-130 swallowsTouches:YES];
因此,这允许将Sprite堆叠到按钮的CCMenu上,其中精灵仍在识别触摸。
答案 1 :(得分:1)
这是一个聪明的解决方案。但我认为更好的解决方案是您自己实施CCMenu。据我所知,很多人在按钮上使用CCMenu或者你可以按的东西。但它有许多你无法克服的限制。例如,CCMenu上不能有多个回调函数。所以我建议你有自己的课来实现它。
以下是C ++中的一些代码,希望它可以提供帮助(但是你仍然必须实现所有方法,LOL):
class ownButton : public CCNode
{
public:
ownButton();
void init(const char* normalPicPath, const char* pressedPicPath, const char* disabledPicPath, const char* basePicPath);
bool isContainpoint(CCTouch *touch);
void pressed();
void disabled();
void normalized();
int getStatus();
virtual CCSize getSize();
protected:
CCSprite* normalPicSprite_;
CCSprite* pressedPicSprite_;
CCSprite* disabledPicSprite_;
CCSprite* basePicSprite_;
int stat_;
};