2011-02-15 105 views
0

我已經收穫了很多話題,但我很困惑。 我不知道是否使用相機,視差節點,移動層....? 我試圖做一個簡單的程序測試: 2D場景我想顯示的是: 1)背景圖像 2)背景 3一些可選擇的點)上觸摸拖動一些其他子畫面 4)並放下我將平移所有對象,在第二次平移事件中,我將從新位置平移對象(不是開始位置) 5)用縮放中心的兩個手指縮放是實際顯示的圖像的中心 我應該遵循哪個實現? 謝謝潘和縮放視圖

+0

你有什麼工作到目前爲止,如果是的話是什麼?這可能有助於縮小答案:)。祝你好運! – VoronoiPotato 2011-02-15 16:27:35

回答

0

我已經寫了這個現在。 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; 
} 
} 
+0

我不知道這是不是一個好的解決方案...但是: 我已經添加了一個名爲onlyScaleLayer的CCNode,並添加到位置爲ccp(屏幕中心)的場景中 所有圖像都添加到此圖層。 在回調規模我縮放onlyScaleLayer,在平移我改變圖像的位置 任何評論都讚賞 – sefiroths 2011-02-28 13:07:03