Cocos2d iphone 无法取消选择拖动时的CCSprite事件,selectedSprite=nil不工作

Cocos2d iphone 无法取消选择拖动时的CCSprite事件,selectedSprite=nil不工作,cocos2d-iphone,Cocos2d Iphone,我正在使用以前在其他项目中使用过的代码唯一的区别是,这次我使用的是一个定制的sprite类,它似乎没有取消选择自身 我在这里做了一个关于这个问题的视频 在rahul_send89的帮助下我们解决了这个问题, 首先,自定义类cclayer被更改为接受自己的触摸,然后在init中 [self-setContentSize:[Backubble boundingBox].size];用于确定层的大小 所以其他的触球会着火,这可能是我把触球弄得一团糟的原因 上面的链接包含所有代码。再次感谢你的帮助 尝试

我正在使用以前在其他项目中使用过的代码唯一的区别是,这次我使用的是一个定制的sprite类,它似乎没有取消选择自身 我在这里做了一个关于这个问题的视频

在rahul_send89的帮助下我们解决了这个问题, 首先,自定义类cclayer被更改为接受自己的触摸,然后在init中 [self-setContentSize:[Backubble boundingBox].size];用于确定层的大小 所以其他的触球会着火,这可能是我把触球弄得一团糟的原因


上面的链接包含所有代码。再次感谢你的帮助

尝试查看您是否收到“touchCancelled”事件。如果是的话,你也需要管理那里的状态。谢谢Yves…..嗯,那里运气不好,它似乎仍然保留着最后一个精灵,它已经解决了问题,如果我在屏幕上拖动手指,一个精灵跳到了那个区域。。。但是当我触摸精灵时,我仍然无法拖动它们。在@rahul_send89的帮助下,我们发现了需要设置图层内容大小的问题。这会弄乱触摸[self-setContentSize:[Backubble boundingBox].size];[自身设定点:ccp0,0];然后回答并接受,这样列表就准确了。祝游戏好运:
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

NSSet *allTouch = [event allTouches];
UITouch *touch = [[allTouch allObjects]objectAtIndex:0];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector]convertToGL:location];


DragItems = [[NSMutableArray alloc]initWithObjects:

         Bubble01,
         Bubble02,
         Bubble03,
         Bubble04,
         Bubble05,
         Bubble06,
         nil];

for(int i = 0; i < [DragItems count]; i++)
{
sprite = (Bubble *)[DragItems  objectAtIndex:i];
//if(sprite.tag ==12 && CGRectContainsPoint([sprite boundingBox],location))
if(CGRectContainsPoint([sprite boundingBox], location))
{
    selectedSprite = sprite;
}
}
}


-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
//Move touched sprite
NSSet *allTouch = [event allTouches];
UITouch *touch = [[allTouch allObjects]objectAtIndex:0];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector]convertToGL:location];

selectedSprite.position = ccp(location.x, location.y);
NSLog(@"Position: %f %f",location.x, location.y);
}

-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
NSSet *allTouch = [event allTouches];
UITouch *touch = [[allTouch allObjects]objectAtIndex:0];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector]convertToGL:location];

selectedSprite = nil;

}