我有幾個使用Cocos2D創建的應用程序。與1.0相比Cocos2D 2.0的不同行爲
我正在將其中一些升級到Cocos2D的新版本2.0。我使用的方法是:
- 我從標準模板創建一個新的空白項目
- 我的所有文件移動到新的項目
我一般保持層HelloWorld作爲我的初始層。我注意到Cocos2D創建了一個introLayer作爲最初的一個,我已經刪除了它,並恢復了像之前一樣加載Helloworld的行爲。說我注意到幾件事情:
- Helloworld的init方法內部的行爲現在是不同的。我已經注意到方向在init方法中現在報告不正確。即使該應用只是風景,它也會始終將其報告爲肖像。我注意到的還有,就像導演還沒有完全初始化。如果我嘗試使用導演的觀點,這一點得到了證實。如果我嘗試在Helloworld的init方法中使用它,這個視圖總是無效的。
爲了解決這個問題,我將所有的代碼都移到了Helloworld的onEnter方法中。現在,Helloworld和導演完全初始化,一切正常。
此方法適用於我爲Cocos2D 1.0升級到2.0的第一批應用程序,但是我現在從Cocos2D 2.0beta轉換爲2.0 final的應用程序出現問題。
我現在的問題是,是的Helloworld觸發沒有任何聯繫,是的,我有這樣的到位:
-(void) registerWithTouchDispatcher
{
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
return YES;
}
什麼可以阻止的Helloworld從檢測觸摸的2.0?我如何使Helloworld的init方法像2.0 beta或1.0中那樣行事?
注意:當加載Helloworld時,ccTouchBegan和registerWithTouchDispatcher永遠不會被調用。
謝謝。
我現在發現,我必須把它放在onEnter上:[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];出於某種原因,在Helloworld中,registerWithTouchDispatcher不會自動調用。另一件事是,現在我必須將CCTargetedTouchDelegate放在界面的Helloworld委託聲明中。這樣做後,ccTouchBegan現在被觸發。現在我必須爲支持觸摸的所有類執行此操作......這是一個錯誤嗎? – SpaceDog 2012-07-31 20:16:45
是的,我正在做一個CClayer類。 Helloworld是由默認模板創建的。我現在已經發現了很多其他問題,並且我可能會使用2.0測試版保持該項目,直到2.0被修復。不管怎樣,謝謝。 – SpaceDog 2012-07-31 20:42:30