2014-11-13 23 views
4

我是比較新的SpriteKit和升級以來,Xcode的6的Xcode 6雪碧套件 - 如何實現「initwithsize」

最初當我創建的項目遇到了一些問題,我進入任何方法爲「initWithSize」 。

-(id)initWithSize:(CGSize)size {  
if (self = [super initWithSize:size]) { 


} 
return self; 
} 

當開始在Xcode 6的一個項目,這似乎不再是默認的,而是替換爲:

-(void)didMoveToView:(SKView *)view {} 

當試圖initwithsize應用,它只是不工作,或不會加載我放入其中的精靈節點。即使在試圖創建新文件時,我也不會再提供.m和.h文件。我有其他選項,其中沒有一個是.h/.m。

因此 1)如何繼續編碼我以前用initwithsize做過的事情? 2)創建新文件有什麼用處,我不能再創建.m/.h類嗎?

任何有關這些信息將大規模讚賞。

回答

3

這是因爲場景的創建方式與以前的Xcode版本不同。現在,不是使用initWithSize:在視圖控制器中手動創建場景,而是使用模板(可能是GameViewController.m)中的方法unarchiveFromFile解除場景的存檔。因此,initWithSize:不會被調用。您需要使用initWithCoder:來代替。

- (instancetype)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 

    if (self) { 
     // stuff 
    } 

    return self; 
} 

而至於你問題的第二部分所說,這只是它是如何在Xcode 6.您仍然可以創建新的文件,也只是不適合搞什麼類別的/ etc模板選項了。

+0

嗨,隊友,謝謝你這麼快速的迴應。這已經讓我失望了很多。我剛開始使用spritekit,並開始熟悉這些東西。然後發生這種情況......所以initwithsize已經完全放棄了。如果我有一個CGSize方法,它將如何被調用?再次感謝,非常感謝 – MegaTron

+0

@MegaTron它還沒有被放棄,它仍然存在。在你的情況下,它不再被默認調用,因爲模板的配置方式不同。如果您查看新模板中的視圖控制器文件,並且在其中一個較舊的項目中,您可以看到一些差異。在這種情況下,重要的一點是,場景過去被初始化爲像這樣的'GameScene * scene = [[GameScene alloc] initWithSize:skView.bounds.size];'現在,我在我的回答中提到的方法將場景從你的.sks文件中創建並以此方式創建。 –

+0

再次感謝,我注意到了。它似乎是從sks文件解壓縮它。每當我嘗試添加cgsize方法時,它都不會識別「大小」。我該如何解決這個問題?其次,對於我爲新場景創建的每個新課程,是否需要關聯的.sks文件才能使用它?再次感謝您,真正感謝您的時間 – MegaTron