
iOS开发重用
文章平均质量分 86
yang3wei
软件专业,2011年起专注手游开发,参与项目:益智类:NutsPhysics、OhMyFish!,战争策略类:全民君王、红警崛起
展开
-
将资源文件转换为头文件嵌入到工程
/** 将 png 图片的数据以字节数组的方式存入头文件,将头文件持久化到磁盘系统中~ */-(void) savePngBytesAsHeaderFile:(NSString*)pngName columns:(int)columns { //唯有这种方式取得的 NSData 对象的 length 属性不再为0,有效!! NSString *filePath原创 2012-01-18 05:43:15 · 741 阅读 · 0 评论 -
iPhone zip压缩与解压
转载自: http://linglong117.blog.163.com/blog/static/2771454720107105820275/http://www.devdiv.net/viewthread-19937(链接)ziparchive是基于开源代码"MiniZip"的zip压缩与解压的Objective-C 的Class,使用起来非常的简单.你只需要把代码加进你的工程,然转载 2011-11-09 16:56:05 · 732 阅读 · 0 评论 -
Box2D切割复杂多边形
从切割简单的多边形到切割复杂的多边形,一路过来,遇到了很多很多的问题总算是大体得到解决了,相当的happy呀,终于可以松口气了要知道,如果这个算法无法完成,我筹划的这个游戏也就没什么想法了,间接等于我20多天的努力付诸东流一开始是切割复杂多变性的功能想了蛮久才搞出来,还不得以用了goto跳转标签记得以前看谭浩强c的时候,就特别不建议使用goto语句,容易让阅读代码的人甚至是自己思维原创 2011-10-09 01:23:56 · 3337 阅读 · 0 评论 -
Xcode and #pragma mark
转载自:http://macdevelopertips.com/xcode/xcode-and-pragma-mark.htmlI’ve started using #pragma mark directives in my code to help with organization as my implementation files grow. #pragma mark is s转载 2012-02-27 21:36:20 · 937 阅读 · 0 评论 -
Objective-C: Get random number 获取随机数
转载自:http://hi.baidu.com/bunsman/blog/item/9c7cf79ba2261cacc9eaf4e4.html参考:http://www.friendlydeveloper.com/2010/02/objective-c-get-random-number/comment-page-1/-(int)getRandomNumber:(int)fro转载 2011-11-01 18:07:39 · 4068 阅读 · 0 评论 -
objective-c判断点是否在多边形内(包括在多边形上)的一个经典算法
/** 检查某点是否包含在多边形的范围内(只用与判断在多边形内部,不包含点在多边形边上的情况)~ */- (BOOL) checkPointWithinPolygon:(PolyVerticesWrapper*)pvw point:(b2Vec2)point { int verticesCount = [pvw verticesCount]; b2Vec2 *ptP原创 2011-10-02 15:28:48 · 1971 阅读 · 1 评论 -
用Java写的一个 Box2D b2PolygonShape描点工具
为满足项目需求,我用java写了一个生成Box2D b2PolygonShape多边形顶点的工具。也是一步一步完成的,首先是为1个不规则的sprite图片生成多边形shape轮廓,后来发现如果用Box2D里面的compound概念的话可以生成比较完美的不规则图片 shape 轮廓,因此,工具升级到1.1,从此支持对不规则的sprite图片进行描点1.1版完成的时候逛了逛子龙山人的博客,原创 2011-08-27 18:38:35 · 2546 阅读 · 2 评论 -
生成sprite动画对象的方法
以下只是一个最原始的方法,从执行效率的角度出发,如果一个场景里面同时包含了100个使用相同动画的sprit,每个 动画sprite都由下面的方法生成的话,有些代码:1.缓冲sprite帧和纹理;2.创建一个精灵节点;3.收集帧列表;这些个只需要执行一次的操作便被重复执行了 100次,浪费cpu,浪费电池电量。。所以说,还是存在相当大的优化空间。。。- (CCSp原创 2012-02-17 20:08:22 · 1086 阅读 · 0 评论 -
解析plist文件示例:由 plist 文件获取 sprite 动画的宽高
// 用于获取sprite的宽度和高度,太他妈蛋疼了~-(CGSize) getAnimSpriteSize:(NSString*)animName {NSString *plistPath = [[NSBundlemainBundle]pathForResource:animNameofType:@"plist"];NSDictionary *dictionary = [NSDi原创 2012-02-17 19:48:05 · 810 阅读 · 0 评论 -
找出多边形的中心点
/** 找出多边形的中心点 */b2Vec2 findCentroid(vectorb2Vec2> vertices) { int verticesCount = vertices.size(); b2Vec2 c; /**终于找到罪魁祸首了,使用结构体的时候注意一定要初始化!!!血的教训!!! c.SetZero()等同于 c.Set(0.0f, 0.原创 2012-02-14 13:32:13 · 6446 阅读 · 0 评论 -
去除由凸多边形构成的复杂多变性的拼接边
/** * 挑出传入的所有点中重复的点~ */- (vectorb2Vec2>*)selectDuplicatedVertices:(vectorvectorb2Vec2>*>*)allVertices { vectorb2Vec2> *target = new vectorb2Vec2>(); for(uint i = 0; i size(原创 2012-02-11 14:47:02 · 705 阅读 · 0 评论 -
GDataXML 使用再一次总结
又将项目重构了一次,花了n久时间发现还是不能一步到位直观的将 GDataXML 集成到项目,上次写过一篇相关的文章,我这次没搞好又回去看了下,虽然最后问题解决了但我还是感觉上次那篇文章简直是一团糟这次来直观点,直接上几张图:1。添加 libxml2.dylib2. Other Linker Flags 设置为 -lxml23。Cocos2dLibrari原创 2012-01-23 09:31:38 · 1183 阅读 · 0 评论 -
Verlet rope
转载自:http://www.cocos2d-iphone.org/archives/1112IntroductionIn this brief article we’ll be taking a look at an efficient way of creating ropes in our cocos2d games that use box2d, starting转载 2012-01-14 12:13:09 · 1129 阅读 · 0 评论 -
cocos2d sprite执行完动作之后调用回调自行销毁
转载自:http://www.devdiv.com/home.php?mod=space&uid=23234&do=blog&id=3317原文标题:函数调用 cccallfunc之前曾遇到一个关于传值的问题,刚好今早遇到,把相关的都贴进来,知易教程上的内容1,函数在动作序列中间或者结束调用某个函数,执行任何需要执行的任务:动作、状态修改等。代码如下:-转载 2011-12-03 23:02:13 · 4379 阅读 · 0 评论 -
判断两条线段是否相交
转载自:http://www.cppblog.com/smiling/archive/2006/10/12/13605.html方法一、bool TwoLineIsIntersect(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3, float &InterX, flo转载 2011-09-27 13:32:32 · 1032 阅读 · 0 评论 -
去除由凸多边形构成的复杂多变性的拼接边(初版)
惭愧,自己看着都头晕,权当对过去走歪路的纪念!/** * 挑出传入的所有点中重复的点~ */-(vectorb2Vec2>*)selectDuplicatedVertices2:(vectorvectorb2Vec2>*>*)allVertices { vectorb2Vec2> *target = new vectorb2Vec2>();原创 2012-02-15 13:56:41 · 618 阅读 · 0 评论 -
一行代码省却十数行代码
想做一个乌鸦飞的效果,却发现一群乌鸦碰在一起老是会出现头上脚下的情况,感觉很是不好于是想到了一个办法:乌鸦的body 包含两个 fixture,一个在上,一个在下,上面的 fixture 密度设置的远远小于下面的fixture的密度,这样的话,脚重头轻,便不会再出现头下脚上的情况了。可事实总是让人无比蛋疼,即使将下面的密度设置为了上面密度的一百倍,问题还是没有得到解决~原创 2012-02-01 06:27:09 · 644 阅读 · 0 评论 -
cocos2d动画用例
// Animation.h#import"Box2D.h"#import"cocos2d.h"#import"BYSingle.h"@interface AnimSpriteFactory :NSObject { BYSingle *_single; BOOL _is4g; BOOL _isIpad;}- (id) ini原创 2012-01-10 22:32:19 · 1168 阅读 · 0 评论 -
解决在场景中销毁无用对象的问题,详见tick方法
比较完美版本的GameScene,借助于userData,可以比较彻底的将超出界限外的BYShape 对象回收掉参见前面写过的一篇文章。。。。//// GameScene.mm// GameFrameWork//// Created by Eric Zhu on 6/12/11.// Copyright 2011 Home. All rights reserved.//原创 2011-08-13 23:03:27 · 1457 阅读 · 0 评论 -
box2d 描点工具生成b2Shape数据(xml通用格式),oc、c++解析模块类文件,b2Shape数据可视化工具
第一个东西上次硬盘被抹已经没了,我得重新去写,第二和第三个是计划内但是还没开始做的。mark一下,等我的游戏做完之后进行统一的整理,抽空贴出来~原创 2012-02-26 09:16:38 · 1247 阅读 · 0 评论 -
objective-c 生成字符串的message digest(md5)
//// MD5.h// MacEncryptTool//// Created by user on 12-1-17.// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#import#import@interface NSString (MyExtensions原创 2012-01-17 02:33:34 · 1058 阅读 · 0 评论 -
CCCallFunc, CCCallFuncN, CCCallFuncND 三者的区别
1.CCCallFunc 只能调用不带参数的回调方法2.CCCallFuncN 可以带一个 参数:(id)sender3.CCCallFuncND 可以带两个参数 (第二个参数的类型可以是任意类型):(id)sender batchNode:(CCSpriteBatchNode*)batchNode直接上用例(sprite动画一次性播放以后将自己从父节点移除并销毁)原创 2012-01-11 00:39:52 · 1621 阅读 · 0 评论 -
[教程]如何把CGPoint放入数组中
转载自:http://bbs.weiphone.com/read-htm-tid-590862.html把CGPoint放入数组的过程是这样的:NSArray *array=[NSArray arrayWithObjects:NSStringFromCGPoint(0.0f,0.0f),NSStringFromCGPoint(0.0f,0.0f),nil];从数组中取值的过转载 2011-12-01 18:11:31 · 1862 阅读 · 0 评论 -
verlet-rope-latest 的扩展—— BYRope
对 verlet-rope-latest 做了一下扩展:1。可以添加绳子端点的sprite2。以 b2RopeJoint 对绳联体做最大距离限制3。可以在body的fixture上面任取一点作为连接点(原版仅仅支持连接到物体的中心点),这个也是推动我做修改的初衷~废话不多说:上效果图:上相关代码://// BYRope.h/原创 2012-02-27 01:32:01 · 2105 阅读 · 3 评论 -
渲染的一些代码
/** * draw will be called fps */-(void) draw {glDisable(GL_TEXTURE_2D);glDisableClientState(GL_TEXTURE_COORD_ARRAY); [_renderdrawOpenGLBackground]; glDisableClientState(GL_COLOR_ARR原创 2012-02-22 10:08:30 · 919 阅读 · 0 评论 -
box2d 遍历世界中body列表的2种方法
第1种方法,在对 body 列表有删除操作的时候,采用 while 的遍历方式比较方便(详见box2d白皮书)~ /** Iterate over the bodies in the physics world */ b2Body *node = _world->GetBodyList(); while(node) {原创 2012-02-21 17:14:42 · 1985 阅读 · 0 评论 -
ios cocos2d cocos3d box2d [21] NSMutableArray 循环删除
转载自:http://lijianyeath.blog.163.com/blog/static/1261149042011525101230120/方法1:NSMutableArray *myArray;NSArray *myArrayCopy = [NSArray arrayWithArray:myArray];for (NSObject *anObject in m转载 2011-11-17 21:14:30 · 1242 阅读 · 0 评论 -
判断点在多边形内的多种写法(C版)
转载自:http://blog.youkuaiyun.com/okvee/article/details/5643407再经典不过的算法了:// 功能:判断点是否在多边形内 // 方法:求解通过该点的水平线与多边形各边的交点 // 结论:单边交点为奇数,成立!//参数: // POINT p 指定的某个点 // LPPOINT ptPolygon 多边形的各个顶点坐转载 2012-04-05 14:55:00 · 1795 阅读 · 0 评论 -
判断点在多边形内部的方法(Java版)
/** * 检查多边形是否包含了某点~ * @param point * @return */ public boolean containsPoint(BYPoint point) { int verticesCount = vertices.size(); int nCross = 0; for (int i = 0; i < verticesC原创 2012-04-05 14:56:22 · 6691 阅读 · 1 评论 -
iOS开发一些零碎积累
1。UISwitch的用法总结http://www.cnblogs.com/KidReborn/archive/2010/10/05/1843087.html1.UISwitch的初始化UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectMake(4.0f, 16.0f, 100.0f, 28.0f)];2.原创 2012-03-20 18:45:54 · 609 阅读 · 0 评论 -
box2d判断物体脱离地图边界
之前:/** 判断 BYShape 对象是否越界,越界即将之销毁(可用来判定游戏失败)~ */+(BOOL) isPositionOutOfBounds:(CGPoint)p { CGSize mapSize = [BYSinglegetInstance].mapSize;BOOL flag = NO; if(p.x width *PTM_RATIO / 2.0原创 2012-03-20 18:25:11 · 1471 阅读 · 0 评论 -
XCode Debug 模式断言擒 bug 记
认识到debug模式和断言带来的方便,我迫不及待地便将项目的schema重新设置回了debug模式以前不懂,认为程序在发布的时候用的是release模式,为了降低发布时出现bug的几率,便很早前就将程序设置为debug模式。现在看来真是愚蠢之极。不知道有多少次,我在调试bug的时候,判断空指针用了如下的代码if(var == nil) {NSLog(@"var==nil,f原创 2012-03-20 18:40:21 · 1386 阅读 · 0 评论 -
b2RopeJoint连接的物体摆动幅度夸张的解决办法——设置线性阻尼
/** * added by Bruce Yang on 2012.03.09.15.41~ * 创建乌鸦~ */-(b2Body*) createCrow:(BYObject*)object { b2Vec2 po = object.position; b2BodyDef bodyDef; bodyDef.type = b2_dynamicBody;原创 2012-03-20 18:43:12 · 2047 阅读 · 1 评论 -
封装自己的控件库:iPhone静态库的应用
转载自:http://blog.youkuaiyun.com/kmyhy/article/details/6197096由于iPhone控件的极度匮乏和自定义组件在重用上的限制,在过去的项目中我们积累了大量的“纯代码”组件——因为IB本身的限制,我们无法把这些组件封装为IB组件库(本来我们想通过分发xib文件的方式重用这些组件,但最终发现这根本不可能,苹果的Plug-in编程不支持iPhone转载 2012-03-21 12:12:49 · 684 阅读 · 0 评论 -
单例,应用程序委托和顶层数据
原文地址:http://blog.youkuaiyun.com/kmyhy/article/details/7026511如果你的某个类需要实现单例模式,那么应该在哪里实现?你应该如何管理和控制它?不同的实现方式有不同的优缺点。全局变量简介它们令人害怕全局变量对于老练的程序员来说是令人不愉快的东西。他们认为,如果程序中充斥着全局变量(本来应该是局部变量)是一种结构上的失败,转载 2012-03-21 12:13:48 · 560 阅读 · 0 评论 -
单例模板一则
参考我上一篇转载的博文,我对单例模板做出了一些修改,用起来的话会变得更加方便一点://// SynthesizeSingleton.h// CocoaWithLove//// Created by Matt Gallagher on 20/10/08.// Copyright 2009 Matt Gallagher. All rights r原创 2012-03-21 12:14:47 · 579 阅读 · 0 评论 -
Linux下的zip命令的使用
参考资料:http://no001.blog.51cto.com/1142339/547862 # zip -P 123456 test.zip test.txt-P 123456 是加密密码(-P必须用大写,否则无效!!)test.zip 是生成的压缩文件test.txt 是被压缩的文件zip [参数] 使用zip格式打包文件 -r 递归,将指定目录下原创 2012-03-21 12:20:12 · 3049 阅读 · 0 评论 -
box2d 粗略的模拟水浮力
准备工作,首先修改 box2d 的 b2Body 类,增加一个public 修饰的 bool 类型标识变量 m_isInWater,用于标识物体当前是否在水中。然后,切到 box2d 的 b2World 类,在 CreateBody 方法的尾部添加一行初始化标识变量的代码:b2Body* b2World::CreateBody(const b2BodyDef* def){ b原创 2012-04-13 15:44:32 · 4769 阅读 · 5 评论 -
代码片段辑录——myDestroyBody,byDestroyBody,resortBodiesOnBoat
清理代码的时候发现,某些方法的名称起地太随意了,交给别人来看肯定是一头雾水,这样不是很好。另外,也发现一些方法里面有大片重复的代码,其实完全可以提出来,作为一个功能单元来使用。想直接删了又害怕出现意外——项目一大了之后,做出的改动都有可能引发一些比较难发现的bug。对于我这个被bug骚扰过无数回的人,多少要采取一些防范措施。虽说用SVN来管理项目版本,但个人觉得还是放在博客原创 2012-04-25 02:44:46 · 869 阅读 · 0 评论 -
box2d 新建复合多边形物体
方法:-(vector*) parsePolyArrStr:(NSString*)polyArrStr { if(polyArrStr == nil || [polyArrStr isEqualToString:@""]) { NSLog(@"shapeArrStr: nil or \"\""); return nil; } vector原创 2012-04-14 14:23:33 · 1452 阅读 · 0 评论