将父类对象分配给SpriteKit中的继承类对象
Posted
技术标签:
【中文标题】将父类对象分配给SpriteKit中的继承类对象【英文标题】:Assign parent class object to inherited class object in SpriteKit 【发布时间】:2016-03-20 01:57:16 【问题描述】:当我在我的场景中检测到两个 SKSpriteNode-s 之间的碰撞时,我可以捕捉到physicsBody.node。但是,我确信碰撞的对象是我自己的一些对象,它们实际上继承了 SKSpriteNode。例如,其中一个发生碰撞的对象是 StaticLevelElement。现在,我希望通过某种转换或其他方式将该 SKNode 分配给我的 StaticLevelElement * sle。
StaticLevelElement * staticLevelElement = notTheHero.node;
注意这里 notTheHero.node 是我的 StaticLevelElement。这实际上有效,但给出了我的警告: “使用 'SKNode' 类型的表达式初始化 'StaticLevelElement' 的不兼容指针类型......” 我不想要这个警告并且想要正确地做到这一点,所以它不会出现。
【问题讨论】:
【参考方案1】:你可以这样做:
StaticLevelElement * staticLevelElement = (StaticLevelElement*)notTheHero.node;
这称为类型转换。请注意,这不会更改底层实例。该实例只是以不同的方式处理。
例如,如果底层实例是 SKNode 或其子类,但不具体是 StaticLevelElement
,如果您尝试将其用作 StaticLevelElement
,应用程序可能会崩溃。
因此,如果您完全确定投射不会失败,那么这样做是安全的。
【讨论】:
以上是关于将父类对象分配给SpriteKit中的继承类对象的主要内容,如果未能解决你的问题,请参考以下文章