몇 줄의 코드를 작성했는데 스프라이트를 선택할 수 있지만 드래그 할 수는 있지만 마우스를 드래그하면 곧바로 마우스 커서에서 몇 픽셀 떨어진 곳으로 이동 한 다음 제어 할 수 있습니다. 하지만 일부 픽셀 거리 내 마우스 cursos에서의 .. 내 CGPoint
변환에 문제처럼 보인다, 또는 내가 모르는, 내 코드마우스와 Cocos2d로 스프라이트 끌기
- (void)selectSpriteForTouch:(CGPoint)touchLocation {
CCSprite * newSprite = nil;
for (CCSprite *sprite in movableSprites) {
if (CGRectContainsPoint(sprite.boundingBox, touchLocation)) {
newSprite = sprite;
NSLog(@"palieciau");
break;
}
}
if (newSprite != selSprite) {
[selSprite stopAllActions];
[selSprite runAction:[CCRotateTo actionWithDuration:0.1 angle:0]];
CCRotateTo * rotLeft = [CCRotateBy actionWithDuration:0.1 angle:-4.0];
CCRotateTo * rotCenter = [CCRotateBy actionWithDuration:0.1 angle:0.0];
CCRotateTo * rotRight = [CCRotateBy actionWithDuration:0.1 angle:4.0];
CCSequence * rotSeq = [CCSequence actions:rotLeft, rotCenter, rotRight, rotCenter, nil];
[newSprite runAction:[CCRepeatForever actionWithAction:rotSeq]];
selSprite = newSprite;
}
}
- (BOOL)ccMouseDown:(NSEvent*)event {
CCSprite * newSprite = nil;
CGPoint clickLocation = [[CCDirector sharedDirector] convertEventToGL:event];
for (CCSprite *sprite in movableSprites) {
if (CGRectContainsPoint(sprite.boundingBox, clickLocation)) {
newSprite = sprite;
break;
}
}
if (newSprite != selSprite) {
[selSprite stopAllActions];
[selSprite runAction:[CCRotateTo actionWithDuration:0.1 angle:0]];
CCRotateTo * rotLeft = [CCRotateBy actionWithDuration:0.1 angle:-4.0];
CCRotateTo * rotCenter = [CCRotateBy actionWithDuration:0.1 angle:0.0];
CCRotateTo * rotRight = [CCRotateBy actionWithDuration:0.1 angle:4.0];
CCSequence * rotSeq = [CCSequence actions:rotLeft, rotCenter, rotRight, rotCenter, nil];
[newSprite runAction:[CCRepeatForever actionWithAction:rotSeq]];
selSprite = newSprite;
}
}
- (void)panForTranslation:(CGPoint)translation {
if (selSprite) {
CGPoint newPos = ccpAdd(selSprite.position, translation);
selSprite.position = newPos;
} else {
}
}
-(BOOL)ccMouseDragged:(NSEvent *)event {
CGPoint point = [[CCDirector sharedDirector] convertEventToGL:event];
CGPoint mouseLocation = [self convertToNodeSpace:point];
CGPoint translation = ccpSub(point, oldMouseLocation_);
[self panForTranslation:translation];
oldMouseLocation_ = point;
}
'ccMouseDragged :'가'ccMouseDown :'다음에 처음으로 호출 될 때'oldMouseLocation_'의 값은 무엇입니까? – Kreiri