панорамирование и масштабирование вида - PullRequest
0 голосов
/ 15 февраля 2011

Я перечитал много тем, но я очень запутался.я не знаю, если использовать камеру, параллакс узел, перемещать слои ....?я пытаюсь сделать простую программу для тестирования: 2-мерная сцена, которую я хотел бы отобразить: 1) фоновое изображение 2) некоторые выбираемые точки на фоне 3) некоторые другие спрайты 4) при касании перетаскиванием я буду панорамироватьвсе объекты, при втором событии панорамирования я буду панорамировать объект из нового местоположения (не из начального местоположения) 5) масштабирование двумя пальцами с центром масштабирования - это центр фактически отображаемого изображения, какой реализации следует следовать?спасибо

1 Ответ

0 голосов
/ 21 февраля 2011

я написал это сейчас. bg - это спрайт в фоновом режиме, layer2 - это слой с методом рисования, который рисует прямоугольники (для отладки) над областями CGRectMake, чтобы сделать некоторые области выбираемыми. Я не реализовал опорную точку, чтобы масштабировать ее от центра, отображаемого на экране, нужна помощь здесь ... и когда я масштабирую и панорамирую, область, выбираемая с помощью cgrectmake, не отображается там, где отображается методом рисования. метод рисования масштабируется и панорамируется ... но выделенная область остается там, где она была раньше ...

-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
oldLoc =[self convertTouchToNodeSpace: touch];
oldPosition=bg.position;
//NSLog(@"Start point: %f %f",firstPoint.x,firstPoint.y);
return YES;
}

-(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event{
CGPoint location =[self convertTouchToNodeSpace: touch];

bg.scale+=0.1;//self.anchorPoint=ccp(0,0.54); 
layer2.scale+=0.1;

newLoc.x=location.x-oldLoc.x;
newLoc.y=location.y-oldLoc.y;

bg.position=CGPointMake(oldPosition.x+newLoc.x,oldPosition.y+newLoc.y);
layer2.position=bg.position;
}

-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event{
//bg.anchorPoint=newLoc;
CGPoint pp=[self convertTouchToNodeSpace: touch];

if ( CGPointEqualToPoint(oldLoc,pp) ) {
    NSLog(@"clik ");
    test *cc=(test*)[self getChildByTag:888];

    //NSLog(@"%@",(CGRectContainsPoint([cc getcaselle:0],pp) ? @"si":@"no"));

    for (int i=0; i<[cc getnumrect]; i++) {
        //NSLog(@"casella: %d", [cc getcaselle:i]);
        //if(CGRectContainsPoint([[self getChildByTag:888] getcaselle:i ],pp)) NSLog(@"botton %d",i);       
        }//contiene
    }//for
    return;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...