2016-03-20 237 views
0

當我檢測到場景中兩個SKSpriteNode-s之間的碰撞時,我可以捕捉到physicsBody.node。但是,我確定碰撞的對象是我自己的一些實際繼承SKSpriteNode的對象。例如,其中一個碰撞的是StaticLevelElement。現在,我想通過某種轉換或其他方式將SKNode分配給我的StaticLevelElement * sle。將父類對象分配給SpriteKit中的繼承類對象

StaticLevelElement * staticLevelElement = notTheHero.node; 

請注意,這裏不是TheHero.node是我的StaticLevelElement。這實際上工作,但給我的警告: 「不兼容的指針類型初始化'StaticLevelElement'與'SKNode'類型的表達式.......」 我不希望這個警告,並希望做到這一點,所以它doesn不會出現。

回答

0

你可以做這樣的事情:

StaticLevelElement * staticLevelElement = (StaticLevelElement*)notTheHero.node; 

這就是所謂的類型轉換。請注意,這不會更改基礎實例。實例只是以不同的方式處理。

例如,如果底層實例是SKNode或其子類,但不是StaticLevelElement,則應用程序可能會崩潰,如果您嘗試將其用作StaticLevelElement

所以,如果你完全確定鑄造不會失敗,那麼這是安全的。