摘要: struct MyStruct{double dda1;char dda;int type};对结构MyStruct采用sizeof会出现什么结果呢?sizeof(MyStruct)为多少呢?也许你会这样求:sizeof(MyStruct)=sizeof(double)+sizeof(char)+sizeof(int)=13但是当在VC中测试上面结构的大小时,你会发现sizeof(MyStruct)为16。你知道为什么在VC中会得出这样一个结果吗?其实,这是VC对变量存储的一个特殊处理。为了提高CPU的存储速度,VC对一些变量的起始地址做了“对齐”处理。在默认情况下,VC规定各成员变量存放的起 阅读全文
posted @ 2013-05-31 22:49 丁昌兴 阅读(3297) 评论(0) 推荐(1) 编辑
摘要: void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void的作用①对函数返回的限定。②对函数参数的限定。当函数不需要返回值时,必须使用void限定。例如:void func(int, int);当函数不允许接受参数时,必须使用void限定。例如:int func(void)。int f(){ return 0;}int main(int argc, char *argv[]){ f(10); //如果函数为int f(void),则报错 int *pi; void *pv; pi=pv;//注意在C++编译器中必须转换 pi=(int*)pv; pv=p 阅读全文
posted @ 2013-05-30 20:44 丁昌兴 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 宏定义:#define G 9.8。。。。。。。。。。。#undef G宏定义的作用域注意不同:#define AB(X) x*x-2*x+10AB(1+2)=1+2*1+2-2*1+2+10=15AB(3)=3*3-2*3+10=13AB(3)*10=3*3-2*3+10*10=103#define AB(x) ((x)*(x)-2*(X)+10)AB(1+2)=(1+2)*(1+2)+10=13AB(3)*10=(3*3-2*3+10)*10=130宏只是进行简单的字符替换。宏展开是编译前进行的,在展开时不分配内存单元。宏不存在类型问题,宏名没有类型。它的参数也没有类型。只是一个符号代表。 阅读全文
posted @ 2013-05-28 21:18 丁昌兴 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 2年前面试的时候遇到过这样的题。今天想起来怀念一下。32位的寻址空间是2^32,即32bit,也就是4个字节32位:char 1个字节short 2个int 4个float 4个字节unsigned int 4个char *(即指针类型) 4个unsigned long 4个long 4个long long 8个double 8个64位:char 1字节short 2个字节int 4个字节float 4个字节char * 8个字节long long 8个long 8个double 8个unsigned long 8个unsigned int 4个 阅读全文
posted @ 2013-05-28 20:29 丁昌兴 阅读(487) 评论(0) 推荐(0) 编辑
摘要: switch(item.tag) { case 0: { } break; case 1: { } break; default: break; }在case中添加{}就ok。以前一直遇到,每次都会忘记原因。因为是用eclipse做java出身,所以这一年来用xcode做开发总会遇到这个问题,每次都忘记,今天mark一下。提醒自己一下。 阅读全文
posted @ 2013-01-20 00:30 丁昌兴 阅读(2289) 评论(0) 推荐(0) 编辑
摘要: 上一篇我们介绍了如何给你自定义的CCSprite添加Touch监听,但是你会发现无论你点击屏幕的哪里,我们的精灵都会收到Touch事件,为什么会这样呢,主要是CCTouchDispatcher只是实现触摸事件分发,所以每一个添加到CCTouchDispatcher上的CCTouchDelegate,都是一层,屏幕大小,这也是为什么有时候我们点击到层的外面也能接受到Touch监听的原因。不管怎么说,这是我们不想看到的。其实这里cocos2dx的源代码中已经给出了解决办法,那就是CCMenu,看看它的源代码你会发现它是做了判断Touch区域的操作。我们这里也这么做。代码如下 bool Tes... 阅读全文
posted @ 2013-01-19 16:32 丁昌兴 阅读(5353) 评论(0) 推荐(0) 编辑
摘要: 上一篇cocos2dx的教程,我们说到要用CCTableView创建背包,但是我们会看到我们的背包物品是不可以操作的。但在实际的游戏当中,背包里面的物品(装备、药材、任务物品之类)都是能够响应各种事件(单机、双击、长按)的。但是我们都知道我们的CCSprite不能响应我们的各种事件的。那么着呢们办呢,很简单,自定义CCSprite了,给它加上Touch响应就ok了。 那么我们要做的第一步就是要创建我们需要的类TestSprite 继承CCSprite吧。创建我们的创建精灵的方法:staticTestSprite * TestSprite::testSpriteWithFile(const... 阅读全文
posted @ 2013-01-18 00:01 丁昌兴 阅读(3232) 评论(0) 推荐(0) 编辑
摘要: 上次大体总结了一下CCScrollView,一直想再总结一下CCTableView,但是一直懒得的动弹,今晚要和同事调试代码,趁同事改bug的时间,把它简单的总结一下吧。 CCTableView在游戏中一般用在背包这样场景或层中,当然也不止这些,在ios开发中UITableView的应用是相当的广泛,当然它们的用途是一样的。(其实你会发现CCtableView其实就是参照UITableView来写的,所以做过ios开发的同学happy了)。 既然说到了用到背包的地方,那么我们就做一个简单的背包信息的例子来学习它吧。 先上代码再说 .h文件//// CCTableViewLayer.... 阅读全文
posted @ 2013-01-16 10:31 丁昌兴 阅读(6740) 评论(8) 推荐(1) 编辑
摘要: 在ios应用及游戏开发过程中,我们很多时候需要在用户切换到后台工作的时候做一些操作,例如清除内存或者保存用户数据之类的。这些操作一般都在AppDelagate的applicationDidEnterBackground:(UIApplication *)application中进行(当然我们也可以通过接收应用程序发送的通知UIApplicationDidEnterBackgroundNotification来触发处理)。但是这些工作系统只给我们分配了5秒的时间去处理,否则系统将会将应用强制退出。所以在很多时候我们需要申请更多的时间来处理相关后台操作。 现在我们就来看一下如何申请更多的后台... 阅读全文
posted @ 2013-01-06 14:25 丁昌兴 阅读(1107) 评论(0) 推荐(0) 编辑
摘要: 最近元旦放假,想想无聊,把cocos2d-x 2.0版本之后提供的一些控件总结一下吧。那么就从CCScrollView开始吧。 ScrollView一般用在游戏的关卡选择这种类似的场景还有帮助这种场景之中,当然,也可以用其他一些选择菜单的场景。用途还是比较广泛的嘛。 首先CCScrollView 在 Cocosd-x 的扩展库里面,要是使用的话,需要引入扩展包,然后添加命名空间 #include "cocos-ext.h" USING_NS_CC_EXT;//cocos2dx定义的宏 然后实现CCScrollViewDelegate,这个其实是和UISCrollView和相 阅读全文
posted @ 2012-12-31 11:15 丁昌兴 阅读(9447) 评论(0) 推荐(0) 编辑