我已经涉及很多主题,但我很困惑。 我不知道是否使用相机,视差节点,移动图层......? 我正在尝试制作一个简单的测试程序: 我想要显示的2D场景是: 1)背景图像 2)背景上的一些可选点 3)其他一些精灵 4)触摸拖放我将平移所有对象,在第二次平移事件我将从新位置(不是开始位置)平移对象 5)用两个手指进行缩放,缩放中心是实际显示的图像的中心 我应该遵循哪种实施方案? 谢谢
答案 0 :(得分:0)
我现在写了这个。 bg是背景中的精灵,layer2是一个带有绘制方法的图层,它通过CGRectMake区域绘制矩形(用于调试)以使某些区域可选。 我没有实现锚点从屏幕中心显示的中心缩放,需要帮助... 当我缩放和平移时,用cgrectmake选择的区域不是draw方法显示的地方。绘制方法是缩放和平移的......但是可选区域仍然保持原样...
-(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;
}
}