Cocos2d iPHone SDK ccPhysicsCollisionPreSolve 在访问对象属性时崩溃
Cocos2d iPHone SDK ccPhysicsCollisionPreSolve crashing while accessing object properties
我正在开发 Cocos2d iphone SDK,但遇到了一个问题。在这里查看我的代码。
Obstacle Class
@objc class Obstacle: CCNode {
weak var __pipe: CCSprite!
var ignoreCollision:Bool = false
override init!() {
super.init()
//NSLog("init plain")
userInteractionEnabled = true
ignoreCollision = false
}
func didLoadFromCCB() {
...
}
}
我放置碰撞委托方法的主要场景。一旦玩家对象与障碍物对象发生碰撞,就会调用该方法。
func ccPhysicsCollisionPreSolve(pair: CCPhysicsCollisionPair!, hero: Player!, platform: Obstacle!) -> ObjCBool {
if !isGameOn {
NSLog("PLATFORM: Game finished")
return false
}
if platform.ignoreCollision {
platform.ignoreCollision = !platform.ignoreCollision
// For score updates
hudLayer.updatePlatform(++scorePlatforms)
}
return true
}
现在,我只是尝试使用 platform
对象中的简单 Bool
属性,但我得到的是崩溃。我的应用程序在我使用 属性 的 if...
条件语句上崩溃。我无法得到这个是什么,因为我只是使用对象中的 属性。
我检查了对象,发现 platform
显示我的类型是 Some
而不是 ob Obstacle
。我试过使用
var p: Obstacle = platform as Obstacle
并将所有 platform
替换为 p
但我仍然面临崩溃。我认为该类型现在向我显示了一些随机的十六进制数,这可能是问题所在。
任何人都可以在这里帮助我,因为我无法找出我应该如何从 ccPhysicsCollisionPreSolve
方法中的这个 platform
对象访问 属性?
抱歉给大家带来了麻烦,但这是我的错误。我理解错了。
Obstacle
class 表示 platform
及其背景层具有设备屏幕的三倍高度。但是我的球只与 Obstacle
class 中的 __pipe
精灵碰撞,我指的是整个 Obstacle
class 这是错误的。
我用了platform.parent!.ignoreCollision
,问题解决了。 :)
这个小小姐让我花了3-4天的研发和额外的工作。
我正在开发 Cocos2d iphone SDK,但遇到了一个问题。在这里查看我的代码。
Obstacle Class
@objc class Obstacle: CCNode {
weak var __pipe: CCSprite!
var ignoreCollision:Bool = false
override init!() {
super.init()
//NSLog("init plain")
userInteractionEnabled = true
ignoreCollision = false
}
func didLoadFromCCB() {
...
}
}
我放置碰撞委托方法的主要场景。一旦玩家对象与障碍物对象发生碰撞,就会调用该方法。
func ccPhysicsCollisionPreSolve(pair: CCPhysicsCollisionPair!, hero: Player!, platform: Obstacle!) -> ObjCBool {
if !isGameOn {
NSLog("PLATFORM: Game finished")
return false
}
if platform.ignoreCollision {
platform.ignoreCollision = !platform.ignoreCollision
// For score updates
hudLayer.updatePlatform(++scorePlatforms)
}
return true
}
现在,我只是尝试使用 platform
对象中的简单 Bool
属性,但我得到的是崩溃。我的应用程序在我使用 属性 的 if...
条件语句上崩溃。我无法得到这个是什么,因为我只是使用对象中的 属性。
我检查了对象,发现 platform
显示我的类型是 Some
而不是 ob Obstacle
。我试过使用
var p: Obstacle = platform as Obstacle
并将所有 platform
替换为 p
但我仍然面临崩溃。我认为该类型现在向我显示了一些随机的十六进制数,这可能是问题所在。
任何人都可以在这里帮助我,因为我无法找出我应该如何从 ccPhysicsCollisionPreSolve
方法中的这个 platform
对象访问 属性?
抱歉给大家带来了麻烦,但这是我的错误。我理解错了。
Obstacle
class 表示 platform
及其背景层具有设备屏幕的三倍高度。但是我的球只与 Obstacle
class 中的 __pipe
精灵碰撞,我指的是整个 Obstacle
class 这是错误的。
我用了platform.parent!.ignoreCollision
,问题解决了。 :)
这个小小姐让我花了3-4天的研发和额外的工作。