摘要:
原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:Cocos2D研究院之精灵与动画(六)通过对导演、场景、层和节点的剖析,现在我们已经可以写出一个完整的游戏体系了,在实际应用中,场景一般都是作为游戏的关卡,层作为场景的组成元素(比如UI层,背景层), 导演根据游戏的胜负来激活不同的场景,作为关卡的切换。(以上是常规游戏的流程,仅作参考)但是,单凭这些还不能作出一款高质量的游戏,优秀的游戏不仅要能玩,最关键的还要好玩,好玩的游戏自然少不了绚丽多彩的视觉效果。和其它主流2D引擎一样,cocos2d的图形显示也是靠精灵实现的,就是说,游戏中不论是UI还是人物、背景,只要是我们能看到的 阅读全文
2012年9月9日
摘要:
让我们首先创建一个工程骨架--使用cocos2d工程模板创建一个新的项目并取名为AnimBear. 接下来,下载一些由我的老婆制作的熊行走的图片。(老婆会美工多好啊!) 当你解压之后,看看那些图片---它们仅仅是一张张单个的熊在行走的动画帧。但是,当你把它们连续地放映,就会看到一只熊在移动。现在,把这些图片加到工程里面,然后基于这些单个的图片来创建动画。然后,在cocos2d里面,还有另一种更加高效的方式来创建动画--那就是使用spritesheet。(也叫精灵表单)精灵表单和熊 如果你从来没有使用过spritesheet,你可以把它看作是一张巨大的图片,你可以把许许多多的sprite放... 阅读全文
2012年9月6日
摘要:
关键字@看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如@interface XXX。@interface声明类@implementation实现类@protocol声明协议@optional与@protocol配合使用,说明协议中的某个或者某几个方法可以不实现@required与@protocol配合使用,说明协议中的某个方法或者某几个方法必须实现@end与@interface ,@implementation,@protocol配合使用,代表声明或者实现结束@encode@encode为编译器宏,它可以将类型转换为相应的字符串。idid是指向Objective-C类 阅读全文
2012年8月10日
摘要:
这两天事情不多,简单看了下boost.asio的源码,因为asio采用proactor模式,而windows下的IOCP本身就是这个模式的体现,所以将精力集中在了asio在linux下的实现(asio在windows下采用了IOCP,linux下用epoll,还有其它的一些实现如kqueue,select等).在高性能服务器并发模型设计中,Reactor和Proactor是两个经常用到的设计模式,前者用于同步IO,后者用于异步IO,前者在IO操作就绪的情况下通知用户,用户再采取实际的IO操作,后者是在IO操作完成后通知用户,举个简单的例子,比如说你有一封信到了邮局,Reactor模式就是邮局的 阅读全文
摘要:
前几天写了篇日志<<关于boost.asio的一点备忘>>,主要是基于其在linux平台下的实现写的,今天还是一篇备忘,根据boost.asio在win与非win下的实现来谈谈它的跨平台设计与实现.boost.asio根据系统平台提供的事件多路分发机制来实现proactor模式,实现的差异化主要体现在支持IOCP机制与支持其它分发机制,下面就基于boost.asio在win系统(支持IOCP)与linux系统(支持epoll)下的实现来谈谈它的跨平台设计,非win系统的差异化主要表现在对reactor(系统提供的IO事件多路分发机制,如epoll,kqueue等)的封装 阅读全文
2012年8月9日
摘要:
boost::condition_variable 用法:当线程间的共享数据发生变化的时候,可以通过condition_variable来通知其他的线程。消费者wait 直到生产者通知其状态发生改变,Condition_variable是使用方法如下:·当持有锁之后,线程调用wait·wait解开持有的互斥锁(mutex),阻塞本线程,并将自己加入到唤醒队列中·当收到通知(notification),该线程从阻塞中恢复,并加入互斥锁队列(mutex queue)线程被唤醒之后继续持有锁运行。以下一个例子转自:http://www.justsoftwaresolut 阅读全文
2012年7月19日
摘要:
GCDAsyncSocket 地址:https://github.com/robbiehanson/CocoaAsyncSocket/使用方法:创建:asyncsocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];这里我们让所有的回调执行都发生在主线程的queue里,当然我们可以传一个专用的queue.连接 :NSError *err = nil;if (![asyncsocket connectToHost:@"deusty.com" 阅读全文
2012年7月17日
摘要:
在UIWebView 发起一个基于网络的请求后,如果由于某种原因必须释放web视图,则必须在释放之前取消待处理的请求(否则请求返回时,发现对象已释放,可能会出错),为此,您可以调用web视图的stopLoading方法。通常情况下,您可以在web视图的视图控制器的viewWillDisappear:方法中执行这些代码。如果需要确定一个请求是否处于等待状态,可以通过web视图的loading属性来判断。 阅读全文
摘要:
public struct PicSize { public int Width; public int Height; } public static PicSize AdjustSize(int spcWidth, int spcHeight, int orgWidth, int orgHeight) { PicSize size = new PicSize(); // 原始宽高在指定宽高范围内,不作任何处理 if (orgWidth <= spcWidth && orgHeight <= spcHeight) { ... 阅读全文
2012年7月9日