2014-10-20 2 views
0

다른 프로젝트에서 이전에 작동했던 코드를 사용하고 있는데 유일한 차이점은 이번에는 선택 취소하지 않는 것처럼 보이는 맞춤 스프레드 클래스를 사용하고 있습니다. 자체 필자는 우리가 문제를 해결 문제 rahul_send89의 친절 도움으로드래그 이벤트에서 내 CCSprite의 선택을 취소하는 데 문제가 발생했습니다. selectedSprite = nil not working

https://www.youtube.com/watch?v=VHaTpiVPP_w&feature=youtu.be

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

} 
+0

'touchCancelled'이벤트가 발생하는지 확인해보십시오. 그렇다면 상태도 관리해야합니다. – YvesLeBorg

+0

Yves ..... 감사합니다. 거기에 운이 없다. 여전히 "마지막 스프라이트를 유지하는 것"으로 보인다. 화면에 손가락을 드래그하면 문제가 해결된다. 스프라이트를 만질 때 여전히 드래그 할 수 없습니다. – StackBuddy

+0

@ rahul_send89 덕분에 문제가 발견되었습니다 (레이어 내용 크기를 설정해야 함). 이것은 손대었습니다. [self setContentSize : [BackBubble boundingBox] .size]; [self setAnchorPoint : ccp (0,0)]; – StackBuddy

답변

0

drag on CCLayer sometimes working

의 여기에 비디오를 만들어 먼저 cclayer가 고유 한 접촉을 허용하도록 사용자 정의 클래스를 변경 한 다음 초기화에서 [self setContentSize : [BackBubble boundingBox] .size]; 레이어 의 크기를 지정하는 데 사용되었습니다. (다른 터치로 인해 화재가 발생합니다.)

위 링크는 모든 코드를 포함합니다. 도와 주셔서 다시 한 번 감사드립니다!