2011-11-02 64 views
0

我寫一個遊戲的iPhone/iPodTouch的(使用cocos2d的)系統,我已經發現了一些奇怪...屏幕座標爲ARMv6,ARMv7的(IPhone開發)

我需要檢測屏幕的部分玩家爲了執行某些動作而觸摸到的東西。

例如:

-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event { 
CGPoint touchLocation = [touch locationInView:[touch view]];  
//DEBUG 
CCLOG(@"Button pressed: X Location: %f",touchLocation.x); 
CCLOG(@"Button pressed: Y Location: %f",touchLocation.y); 

... 當touchLocation.x和touchLocation.y都在一定範圍內,我做了什麼。

它在模擬器上工作得很好。當我爲我的測試設備編譯它時,使用armv7架構(優化),它也可以工作。但是當我使用armv6,armv7體系結構(這是應用商店需要的)進行編譯時,我注意到代碼不再有效。 CCLOG向我展示了當我爲armv6,armv7編譯時使用的X,Y座標系與我僅爲armv7編譯時使用的X,Y座標系不同(優化後)。

我該如何解決這個問題?在設備上測試時,使用armv6,armv7使用的座標系的唯一方法是...(這在模擬器上不起作用)?我無法上傳適用於iPhone的應用程序,並僅針對armv7進行編譯(優化)。 :(

回答

5

對於在cocos2d在屏幕上找到觸動,試試這個代碼。它在我的遊戲應用程序正常工作

- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { 
    UITouch *myTouch = [touches anyObject]; 
    CGPoint location = [myTouch locationInView:[myTouch view]]; 
    location = [[CCDirector sharedDirector] convertToGL:location]; 
} 
+0

謝謝!轉換爲GL解決我的所有問題。 – artemis