在iPhone5和iphone4s运行会报错,iphone5s及以上都没问题,iphone5s和iphone5以下的差别就是64位处理器和32位处理器吧?
求各位大神指导下,实在是不知道哪里的问题耶,觉得应该是跟处理器有关~
class MainScene: CCNode, CCPhysicsCollisionDelegate {
var hero = CCSprite();
var gamePhysicsNode = CCPhysicsNode();
var ground1 = CCNode();
var ground2 = CCNode();
var grounds:Array<CCNode> = ];
var points:NSInteger = 0;
var scoreLabel = CCLabelTTF();
var sinceTouch:NSTimeInterval = 0.0;
var obstacles = NSMutableArray();
var startButton = CCButton();
var restartButton = CCButton();
var isGameStart:Bool = false;
var isGameOver:Bool = false;
//无关代码都不粘上来了
func didLoadFromCCB(){
scrollSpeed = 80;
grounds = ;
startButton.visible = true;
//只要注释掉这里的代理或者代理函数,iphone5-就会没问题了,
gamePhysicsNode.collisionDelegate = self;
hero.physicsBody.collisionType = "hero";
hero.physicsBody.affectedByGravity = false;
hero.zOrder = NS_ENUM.DrawingOrderHero.rawValue;
}
//两个代理函数
func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, hero nodeA: CCNode!, level nodeB: CCNode!) -> Bool {
/*CODE*/
return true;
}
func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, hero nodeA: CCNode!, goal nodeB: CCNode!) -> Bool {
/*CODE*/
return true;}
}
报错信息:
2014-12-05 13:59:43.922 FlappyFly
*** Assertion failure in -, /Users/yuezi/Documents/OC study/FlappyFly.spritebuilder/Source/libs/cocos2d-iphone/cocos2d/CCPhysicsNode.m:369
2014-12-05 13:59:43.925 FlappyFly
*** Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: 'CCPhysicsCollisionBegin delegate methods must return a BOOL.
调试代码发现,问题在这里:
if(){
NSAssert(strcmp(returnType, @encode(BOOL)) == 0, @"CCPhysicsCollisionBegin delegate methods must return a BOOL.");
.begin = methods*;
}
iphone5s以上 @encode(BOOL)值为B
iphone5s以下 @encode(BOOL)值为c
怎么破?
解决了!
最后还是修改了cocos2d的CCPhysicsNode.m源码
(红色部分为自己新加上去的)
if(){
NSAssert((strcmp(returnType, @encode(BOOL)) == 0 || strcmp(returnType, "B") == 0), @"CCPhysicsCollisionBegin delegate methods must return a BOOL.");
.begin = methods*;
}