恼人的伪bug!

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 13:02 点击:

游戏还没做完,不但没有做完,而且还差相当多的东西!
由于之前没有仔细考虑过关卡文件后期的拓展性,以至于很多预想的游戏元素都无法通过关卡文件添加到游戏里面
此数日主要用来对这些问题进行整改
整改之前也狠狠想了一段时间,根据游戏后面的逻辑,还需要加入哪些元素,
怎么在关卡里面为这些元素预留初始化的数据,等等
可以说,游戏看上去虽然简单,但是一步步的走下来,每一个步伐都不那么轻松
希望能认真做好一件事的态度、丰厚的回报以及游戏慢慢展现出来的效果,这些都给我带来了很大的动力!

今天遇到一个bug,有很奇葩的地方,待我贴两段代码看一下就知道奇葩在什么地方了:
片段1:
-(void) tick: (ccTime) dt {
   if(_single.cutCount <_maxCutCount && !_drawing &&_laserSegment) {//在更早的时候消除可能报出的错误,提高程序性能~
       b2Vec2 p1 =_laserSegment.p1;
       b2Vec2 p2 =_laserSegment.p2;
        float segmentLength = sqrt(pow(p2.y - p1.y,2.0f) +pow(p2.x - p1.x,2.0f));
       if(segmentLength >=2.0f) { // 如果划线的长度超过64个像素(retina里面是128个像素)~
            {
                NSLog(@"1");
                RayCastCallbackPrepare prepareCallback;
                _world->RayCast(&prepareCallback, _laserSegment.p1, _laserSegment.p2);
                _world->RayCast(&prepareCallback, _laserSegment.p2, _laserSegment.p1);
                NSLog(@"2");
            }
            NSLog(@"3");
            BOOL isCutValid = [self checkCutValidOrNot:_laserSegment.p1p2:_laserSegment.p2];

片段2:
#import"RayCastCallbackPrepare.h"

/** 相信我,会有的!! */
int fixtureIndexInVector(vector<b2Fixture*> *v,b2Fixture *fixture);
int bodyIndexInVector(vector<b2Body*> *v,b2Body *body);

/** 构造 */
RayCastCallbackPrepare::RayCastCallbackPrepare() {
   NSLog(@"RayCastCallbackPrepare构造开始~");
   _single = [BYSinglegetInstance];
   _validCallbackTimes =0;
   _affectedBodyByLaser =newvector<b2Body*>();
   _affectedBodyByLaserFinal =newvector<b2Body*>();
   _affectedByLaser =newvector<b2Fixture*>();
   _balloonsBeenCutted =newvector<b2Body*>();
    [_singlesetIsPirateExists:NO];
    [_singlesetIsBalloonBeenCutted:NO];
   NSLog(@"RayCastCallbackPrepare构造结束~");
}

/**
 * 析构
 * 因为回调函数的特殊性,如果不想在每次回调的时候都对单例对象设置一次值的话
 * 唯有在析构方法里面完成最后一次设置(因为回调的次数是难以确定的)
 * 这也就是 GoldMineScene 中raycast方法调用的那几行必须用小括号包起来的原因!!!
 * 因为要即时析构获得计算出来的结果!!!
 */
RayCastCallbackPrepare::~RayCastCallbackPrepare() {
   NSLog(@"RayCastCallbackPrepare析构开始~");
    [_singlesetReverseDirectionCallbackTimes:_validCallbackTimes];
    [_singlesetAffectedBodyByLaserFinal:_affectedBodyByLaserFinal];
   
   // vector的释放需要谨慎处理~
    for(uint i = 0; i < _affectedBodyByLaser->size(); ++ i) {

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Lexical or Preprocessor Issue 'xxx.h
      • ios学习笔记(二)xcode 4.3.2下实现基本交互
      • ios版本的helloworld
      • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
      • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
      • IOS类似iphone通讯录TableView的完整demo【附源码】
      • UITableView一些方法
      • [iPhone中级]iPhone团购信息客户端的开发 (二)
      • iphone(object-c)内存管理(1)
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1