я написал это сейчас. 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;
}
}