2014-05-14 24 views
1

我試圖做教程這樣的:如何使用CCSprite的自定義類?

https://www.makegameswith.us/gamernews/384/build-your-own-2048-with-spritebuilder-and-cocos2d

我想補充CCSprite對於上面的教程。我在Spritebuilder中放置了CCSprite,並首先關閉了其能見度。當出現相應的圖塊時,只有CCSprite會顯示。例如,當平鋪A首次出現時,將出現CCSprite A.當平鋪A與另一平鋪A合併時,平鋪B將出現,並且CCSprite B等也會出現。

的問題是,開關殼體用於確定並列值位於Grid.m但CCSprite加入Spritebuilder是MainScene類的CCNode下。如果我不把CCSprite的自定義類,XCode無法找到成員變量。如果我把自定義類「網格」爲CCSprite時,Xcode將返回錯誤「這個類不是鍵值爲重點spriteFrame順應編碼-」。我應該在這裏做什麼?

回答

3

在建行假設根節點是CCNode(A)和你添加一個子CCSprite(B)到它,然後:

  • 如果指定自定義類節點A的必須是子類CCNode
  • 如果指定的,自定義類節點B的必須是CCSprite的一個子類

關於變量賦值:

  • 如果需要,節點B的變量應該設置爲「doc根」,並給定一個合法的ObjC變量名稱(即_nodeB),節點A的變量應該爲空(最好它會創建一個對自身的引用)

現在,當您設置節點B的自定義變量,並將其設置爲「文檔根」,你必須一個相應名稱的屬性或伊娃添加到節點A的自定義類這意味着節點A 必須有「文檔根目錄」變量工作的自定義類。讓我們將其命名爲CustomClassA

@interface CustomClassA : CCNode 
{ 
    CCSprite* _nodeB; 
} 
@end 

假設你做B節點使用自定義類(從CCSprite繼承),你也可以指定自定義類:

@class Grid; 

@interface CustomClassA : CCNode 
{ 
    Grid* _grid; 
} 
@end 

並添加#import CCSpriteCustomClassB.hCustomClassA實現文件。

請注意,變量賦值不會在輸入變量名的節點中使用自定義類,但根節點必須使用自定義類才能使變量賦值工作。

PS:我不完全清楚「所有者」變量設置。通常主人會是零,當你使用CCBReader的load:owner:方法在代碼中指定它是唯一的非空。這有助於某種目的,但我目前還沒有發現,也無法想到它的用例。

相關問題