遇到数个bug,记录一下
来源:互联网 发布:中国房地产大数据年会 编辑:程序博客网 时间:2024/04/30 21:30
遇到了两个不是很难但却有点儿类似于“找茬”的bug
1个是添加到 batch 中的 sprite 调用 removeFromParentAndCleanUp 方法之后,竟然没有被顺利移除出去的bug
蛋疼了好一阵,真的可以说是百思不得其解,还以为有时 cocos2d 冒出了什么新的 bug,
但我总是被事实打击到,不过我也习惯了,貌似每次都是我自己的问题,哈哈~
贴张图先:
右下角的那只小鱼没有如我所愿的被移除出去,小鱼所依附的 fixture,body已经被正常销毁掉了~
解决方案:
仔细查看代码,看是否是因为将某个 sprite 加入 batchNode 的时候添加了两次
值得注意的是,并非所有被加入过两次的 sprite 再被移除的时候都能留下点儿什么~
另外一个bug是因为我对代码做肆意的位置调整所导致的,如下:
/** Iterate over the bodies in the physics world */
for (b2Body* b =_world->GetBodyList(); b; b = b->GetNext()) {
if(b->GetUserData() != NULL) {
//Synchronize the AtlasSprites position and rotation with the corresponding(相应的) body
CCSprite *actor = (CCSprite*)b->GetUserData();
CGPoint po = CGPointMake(b->GetPosition().x*PTM_RATIO, b->GetPosition().y*PTM_RATIO);
if(![MGameScene isPositionOutOfBounds:po]) { //如果没有越界的话,实时更新~
actor.position = po;
actor.rotation = -1 *CC_RADIANS_TO_DEGREES(b->GetAngle());
if(actor.tag == TAG_STATE_PIRATE_DEAD) {
[actorremoveFromParentAndCleanup:YES];
[auaddAnimSpriteAtPosi:@"pirateArr"start:0end:8 delay:0.05foneOff:YESposi:actor.rotation];
b->SetUserData(NULL);
b->SetTransform(b2Vec2(7.5f,20.0f),0.0f);
b->SetType(b2_staticBody);
[[AudioManagergetInstance]musicBalloonExplode];
}
} else {
[actorremoveFromParentAndCleanup:YES];
b->SetUserData(NULL);
b->SetTransform(b2Vec2(7.5f,20.0f),0.0f); // 设置一个合理的位置储存这些用处已经不大的body们~
b->SetType(b2_staticBody);
}
}
}
之前我是这么写的,上面只是简单的将两句代码调换了一下位置~/** Iterate over the bodies in the physics world */
for (b2Body* b =_world->GetBodyList(); b; b = b->GetNext()) {
if(b->GetUserData() != NULL) {
//Synchronize the AtlasSprites position and rotation with the corresponding(相应的) body
CCSprite *actor = (CCSprite*)b->GetUserData();
CGPoint po = CGPointMake(b->GetPosition().x*PTM_RATIO, b->GetPosition().y*PTM_RATIO);
if(![MGameScene isPositionOutOfBounds:po]) { //如果没有越界的话,实时更新~
actor.position = po;
actor.rotation = -1 *CC_RADIANS_TO_DEGREES(b->GetAngle());
if(actor.tag == TAG_STATE_PIRATE_DEAD) {
[auaddAnimSpriteAtPosi:@"pirateArr"start:0end:8 delay:0.05foneOff:YESposi:actor.position];
[actorremoveFromParentAndCleanup:YES];
b->SetUserData(NULL);
b->SetTransform(b2Vec2(7.5f,20.0f),0.0f);
b->SetType(b2_staticBody);
[[AudioManagergetInstance]musicBalloonExplode];
}
} else {
[actorremoveFromParentAndCleanup:YES];
b->SetUserData(NULL);
b->SetTransform(b2Vec2(7.5f,20.0f),0.0f); // 设置一个合理的位置储存这些用处已经不大的body们~
b->SetType(b2_staticBody);
}
}
}
显而易见,第一段代码里面,我在取 actor.position 的时候,actor 已经被销毁掉了~因此便报出一大段很难让人确定到具体出错位置的控制台输出~
现在有点儿不再状态了,遇到了bug感觉脑袋里面就是轰的一声,像爆了一颗手榴弹
想去年刚开始弄得时候,被 EXC_BAD_ACCESS 是各种虐啊,那时候倒是越挫越勇~
一句话,心态很重要! 还是慢慢来吧,归根节点还是因为我自己有点儿过于心急了~
- 遇到数个bug,记录一下
- 作DNN CrossArticle模块BUG修改时,遇到2个小问题,在此记录一下。
- 今天在此记录一下自身遇到的一些bug
- 记录一下今天遇到的两只bug
- 记录一下arc修复的2个bug
- 昨天遇到个dexopt失败的奇怪问题,记录一下
- 记录一下儿自己遇到的第一个gcc的bug。
- STM32--今天下午遇到了两个BUG。记录一下(栈溢出和串口调试)
- 记录一下开发过程中遇到的一些让人纠结的bug
- 《娃娃遇到兵》bug记录
- 2015-6-3遇到BUG(BUG记录)
- 2015-6-4遇到BUG(BUG记录)
- 开个博客记录一下
- 记录一下今天遇到的奇怪DSI
- 记录一下遇到的高效代码
- MySQL遇到一死锁现象,记录一下
- 遇到一个android错误,记录一下
- 记录一下seekbar遇到的问题
- 数据库自动生成MD5
- Android开发之:Adapter的继承结构
- Android openfire smack 源码
- XMLHttpRequest实例创建
- Android中如何使用OrmLite持久化
- 遇到数个bug,记录一下
- mysql高级渗透经验
- 黑马程序员:File对象的基本功能
- Android多线程:Looper和HandlerThread
- Android界面设计之:使用水平视图切换
- prcn-2048的解决方法
- 迷茫
- Android 实用工具Hierarchy Viewer实战
- Android平台云计算应用的开发详解