Границы перетаскивания - PullRequest
       3

Границы перетаскивания

0 голосов
/ 17 января 2012

Я пытаюсь заставить мои спрайты оставаться в границах экрана, используя следующий код:

- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
[self selectSpriteForTouch:touchLocation];
return TRUE; }

- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event {       

CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
if (selSprite) {
CGPoint oldLocation = [touch previousLocationInView:touch.view];
oldLocation = [[CCDirector sharedDirector] convertToGL:oldLocation];
oldLocation = [self convertToNodeSpace:oldLocation];

CGPoint translation = ccpSub(touchLocation, oldLocation);    
CGPoint newPos = ccpAdd(selSprite.position, translation);
selSprite.position = newPos;     }   }

Я понимаю, что мне нужно добавить код, чтобы указать границы. Примерно так:

    int width=point.x;
    int height=point.y;
    if (winSize.width-sprite.contentSize.width/2<width) {
        width=winSize.width-sprite.contentSize.width/2;}
    if (winSize.height-sprite.contentSize.height/2<height) {
        height=winSize.height-sprite.contentSize.height/2;}
    if (sprite.contentSize.height/2>height) {
        height=sprite.contentSize.height/2;}                                                    
    if (sprite.contentSize.width/2>width) {
        width=sprite.contentSize.width/2;}

Но я новичок в objective C и до конца не понимаю, как с этим справиться.

1 Ответ

0 голосов
/ 18 января 2012

понял!просто добавьте if (selSprite) {} эту часть кода

    int width=touchLocation.x;
    int height=touchLocation.y;
    if (selSprite.contentSize.width!=width) {
        width=selSprite.contentSize.width/2;}
  if (selSprite.contentSize.height/2<height) {
        height=selSprite.contentSize.height/2;}
    [selSprite setPosition:ccp(width,height)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...