自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sozenvN的Blog

不是心痛就该放弃呼吸,不是遗憾就要频频回首,不是受伤就得大喊大叫,不是失败就能否定一切、

  • 博客(47)
  • 收藏
  • 关注

原创 cocos2dx中C++与lua交互

  最近在写热更新的模块,目的是C++调用CRUL multi接口实现多线程下载功能并提供实时的状态查询接口给lua调用,采用的是生产者消费者模型。在使用tolua手动导出lua接口的时候碰到了一些问题,并在此记录。  lua与C++的交互是使用lua的registry表,C/C++代码可以自由使用,但Lua代码不能访问他.为每一个要注册到lua的数据,在registry创建一个元表.以类型名...

2018-10-29 11:57:58 1312

原创 cocos2dx中的onEnter和init

当一个节点被创建HelloWorld *layer = HelloWorld::create();由于宏CREATE_FUNC#define CREATE_FUNC(__TYPE__) \static __TYPE__* create() \{ \ __TYPE__ *pRet = new __TYPE__(); \ if (pRet && pRet->init

2015-03-18 20:05:05 716

原创 翻转字符串

#include "stdafx.h"#include #include using namespace std;//I am a student.void reverseString(char* s, int from, int to);char* reverseWord(char* str, int n);int _tmain(int argc, _TCHAR* argv[])

2014-10-28 12:33:03 592

原创 努力吧

新公司用的国外的闭源3D引擎,不给文档,不给注释,表示很有压力,但也意味着能学到更多吧。各种嵌套宏和模板特化,才知道为什么说C++水太深了。哎~~~

2014-08-04 22:04:23 534

原创 容器中 reserve和resize

vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下:      reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。      r

2014-01-14 15:29:51 745

原创 可变参数宏

// 可变参数宏.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #define va_start_test(ap, v) (ap = (va_list)&(v) + _INTSIZEOF(v))#define va_arg_test(ap,t) ( *(t *)((

2014-01-09 11:35:03 661

原创 CCScrollView使用注意

调试了一下午发现CCScrollView的一些注意小细节#ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__#include "cocos2d.h"#include "cocos-ext.h"USING_NS_CC;USING_NS_CC_EXT;class HelloWorld : public CCLaye

2013-12-26 18:17:11 874

原创 ##__VA_ARGS__作用?

__VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错。

2013-12-24 11:33:06 1301

原创 返回局部变量的引用

int& func(){ int m=9; return m;}void test(){ int a = 19; return ;}int main(){ int& fp=func(); test(); cout<<fp<<endl; return 0;}引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。C++包含一个与指针有关的

2013-12-23 18:01:52 2256

转载 c++模板与泛型编程基础

c++模板与泛型编程基础泛型编程就是以独立于任何特定类型的方式编写代码,而模板是泛型编程的基础。(1)定义函数模板(function template)函数模板是一个独立于类型的函数,可以产生函数的特定类型版本。// implement strcmp-like generic compare functiontemplate int compare(cons

2013-12-23 17:15:24 579

原创 继承问题

// 继承问题.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;// 当一个派生类的对象的地址赋给一个基类的指针后,基类指针只能访问所属的成员函数,不能访问该派生类对象中与// 基类成员函数相同的成员函数。但在实际应用中,需要把一个基类或派生类的对象的地址赋给一个基类的指针后,//

2013-12-20 10:56:10 656

转载 const使用

问题1:const变量&常量例:为什么下面的例子在使用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢?const int n = 5;int a[n];答案与分析:1)这个问题讨论的是“常量”与“只读变量”的区别。常量,例如5, "abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它

2013-12-16 18:01:48 650

转载 设计模式C++实现(15)——观察者模式

转自:http://blog.csdn.net/wuzhekai1985/article/details/6674984软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要

2013-12-16 11:39:58 800

转载 设计模式C++实现(8)——代理模式

软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍代理模式的实现。        [D

2013-12-16 11:38:09 644

转载 设计模式C++实现(4)——单例模式

软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍单例模式的实现。      单例的一

2013-12-16 11:35:55 655

转载 设计模式C++实现(1)——工厂模式

软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。       工厂模式属于创

2013-12-16 11:31:42 640

转载 Cocosd-x设计模式之九 :委托和委托设计模式

前言:前一篇文章讨论了cocos2d-x里面的中介者模式,但是,由于概念把握上面的偏差,我把GoF的中介者模式搞混淆了。幸好有读者给我提出了这个问题,我在上一篇文章中也补充说明了。虽然我谈到的应用场景跟中介者模式有点类似,但是,经典的模式就是模式,我不能随便篡改,更不能张冠李戴。所以,这篇文章我将谈到的是委托模式(delegation pattern),而不是GoF里面的代理模式(Prox

2013-12-15 16:58:26 719

转载 Cocosd-x设计模式之八 :中介者模式

前言:上上周写了关于cocos2d-x里面的观察者模式,文章最后提到一个应用场景:“你的GameScene里面有两个layer,一个gameLayer,它包含了游戏中的对象,比如玩家、敌人等。另一个层是HudLayer,它包含了游戏中显示分数、生命值等信息。如何让这两个层相互通信。”关于这两个层之间如何通信的问题,读者Llllong和我畅快淋漓地讨论了一番,详细的内容可以参考那篇文

2013-12-15 16:57:31 642

转载 Cocosd-x设计模式之七 :组合模式

在开始挖掘cocos2d-x里面的组合模式之前,我武断地下个结论:“几乎所有与GUI相关的框架设计都应用了组合设计模式”。(PS:大家注意我的用词,是“几乎所有”,给自己留条后路,哈哈)1、应用场景Cocoa编程框架APPKit和UIKit都应用了组合模式,各种各样的View及其派生类组成了一棵树状结构的层级视图,而这里面就应用了组合模式。当然,Cocos2D-x里面的No

2013-12-15 16:56:24 563

转载 Cocosd-x设计模式之六:观察者模式

1、应用场景前面在介绍单例模式的时候,提到了一个类CCNotificationCenter,它除了应用单例模式以外,还应用了观察者模式。CCNotificationCenter类是观察者模式中的目标对象,而CCNotificationObserver则是观察者。一个目标对象可以注册多个观察者,当目标对象的状态改变的时候,可以通知观察者对象作出相应的响应。这是标准的观察者模式

2013-12-15 16:54:43 677

转载 Cocosd-x设计模式之五 :防御式编程模式

声明:防御式编程是提高程序代码质量的一种手段,它不能算是真正意义上的模式。但是,这里,我还是要给它冠之以“模式”二字。原因有2:1.cocos2d-x的框架源代码大量采用了防御式编程技术,用来确保框架的代码质量和稳定性。2.标题党,引起大家对于防御式编程的重视。特别是当大家给cocos2d-x贡献源代码的时候,更应该要注意保证代码质量。因为,王哲大大在review很多人给c

2013-12-15 16:53:36 645

转载 Cocosd-x设计模式之四 :外观模式

1.应用场景Cocos2d-x里面有一个非常明显的地方使用了外观模式,它就是SimpleAudioEngine。因为它为CocosDenshion这个子系统的一组接口提供了一个一致的界面,同时定义了一个高层接口,方便客户使用该子系统。对于大多数用户来讲,游戏中操作声音,无非就是播放背景音乐和音效。CocosDenshion这个子系统封装了OpenAL,屏蔽了OpenAL操作声音的低

2013-12-15 16:51:05 677

转载 Cocosd-x设计模式之三:管理者模式

想必读者一看这个题目又要纳闷了,神马又是“管理者模式”啊?管理者(Manager)就是专门负责管理其它类的实例的类,比如Cocoa里面的NSFontManager、NSInputManager、NSFileManager和NSLayoutManager类。此模式和“二段构建模式”一样,也没有出现在GoF的23个设计模式中,但是《Cocoa设计模式》一书中有提及,感兴趣的读者可以去查阅一下。

2013-12-15 16:49:46 679

转载 Cocos2d-x设计模式发掘之二:二段构建模式

乍一看标题,大家可能会觉得很奇怪,神马是“二段构建模式”呢?所谓二段构建,就是指创建对象时不是直接通过构建函数来分配内存并完成初始化操作。取而代之的是,构造函数只负责分配内存,而初始化的工作则由一些名为initXXX的成员方法来完成。然后再定义一些静态类方法把这两个阶段组合起来,完成最终对象的构建。因为在《Cocoa设计模式》一书中,把此惯用法称之为“Two Stage Creation”

2013-12-15 16:48:15 1381

转载 Cocos2d-x设计模式发掘之一:单例模式

本系列文章我将和大家一起来发掘cocos2d-x中所使用到的设计模式,同样的,这些模式在cocos2d-iphone中也可以找到其身影。声明:这里发掘模式只是我的个人爱好,通过这个过程,我希望能加深自己对于设计模式运用的理解。关于模式的学习,市面上已经有许多非常好的书籍了。比如《Head First设计模式》、GoF的设计模式,还有《研磨设计模式》等。如果读者对于设计模式完全不了解的话,建

2013-12-15 16:46:00 644

转载 const用法

1简单介绍(一)简单介绍,把握全局1.》》const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。(小注:可以多次声明,但只能定义一次)2.》》con

2013-12-15 16:12:57 512

转载 关于operator const char *() const的问题

如果是重载*的话,那应该写成:const char operator * () const而不是楼主所写的那样,而且即使是这样写那也不正确的,因为运算符重载中有几个运算符的返回值是有格式的(约定),如operator * 在重载时通常返回值是classType&或者const classType& 。operator const char*() const是类型转换函数的定义,即该类型可以自动转

2013-12-15 15:51:30 1407

转载 c++中的explicit

C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好X

2013-12-15 15:43:56 576

转载 内联函数与宏

内联函数内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。定义内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。

2013-12-15 15:04:19 636

转载 面向接口编程详解(三)——模式研究

通过前面两篇,我想各位朋友对“面向接口编程”的思想有了一定认识,并通过第二篇的例子,获得了一定的直观印象。但是,第二篇中的例子旨在展示面向接口编程的实现方法,比较简单,不能体现出面向接口编程的优势和这种思想的内涵。那么,这一篇作为本系列的终结篇,将通过分析几个比较有深度的模式或架构,解析隐藏其背后的面向接口思想。这篇我将要分析的分别是MVC模式和.NET平台的分层架构。      这篇的内容可

2013-12-09 10:56:47 599

转载 面向接口编程详解(二)——编程实例

通过上一篇文章的讨论,我想各位朋友对“面接接口编程”有了一个大致的了解。那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印象。为充分考虑到初学者,所以这个例子非常简单,望各位高手见谅。  问题的提出  定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。  上下文(环境):已知要实现U盘、MP3播放器

2013-12-09 10:54:12 698

转载 面向接口编程详解(一)——思想基础

我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。1.面向接口编程和面向对象编程是什么关系       首先,面向接口编程和面向

2013-12-09 10:39:25 578

转载 [C++]实现委托模型

作者:Zplutor 出处:http://www.cnblogs.com/zplutor/ 我对.Net的委托模型印象很深刻,使用委托,可以快速实现观察者模式,免去写很多繁杂重复的代码。遗憾的是,C++并没有提供这样的模型,为了达到相似的目的,需要继承一个类并重写virtual方法,这种做法需要写很多代码,效率比较低下(使用过MFC的应该都能体会到)。然而,在强大的C++面前,没有什么

2013-12-07 11:42:01 601

转载 指针和引用的区别

从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数

2013-12-06 14:49:30 778

转载 构造函数私有化

通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?没错,我也知道这将会使构造函数成为私有的,这意味着什么?    我们知道,当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的,由于在class外部不允许访问私有成员,所以这将导致编译出

2013-12-06 14:44:20 817

原创 反转链表

感觉跟插入排序法的思想有些类似,假定前面都是排序好的。pNode就是当前拿在手中的准备插入的结点,除了注意改变当前结点连接之前要保存pNode后面一个结点的位置,不然找不到下一个结点的位置了。struct ListNode{ int m_nKey; ListNode* m_pNext;};ListNode* ReverseIteratively(ListNo

2013-11-26 16:45:37 601

原创 观察者模式

观察者模式工具类——CCNotificationCenter.函数:1.addObserver(订阅消息)addObserver(CCObject* target,  //要订阅消息的主体SEL_CallFuncO selector,         //消息回调函数const char* name,                      //消息名称CCObject*

2013-11-22 15:03:57 776

原创 使用Tiled地图及利用地图设置坐标

使用Tiled软件将地图信息保存为XXX.tmx格式。/*加载Tiled地图,添加到场景中*/ CCTMXTiledMap* map = CCTMXTiledMap::create("level01.tmx"); CCTMXLayer* groundLayer = map->layerNamed("ground"); this->addChild(m

2013-11-19 17:27:29 3277

原创 创建图片动画

创建动画的步骤一般有3步:(1)创建一组CCSpriteFrame对象,每张动画图片为一个CCSpriteFrame对象。(2)用这组CCSpriteFrame对象创建一个CCAnimation对象,该对象包含了动画所需的一些配置信息。(3)顾名思义,CCAnimation是名词,因此只有它是不能实现动画的,我们还要利用CCAnimation对象创建一个CCAnimate对象,CCAn

2013-11-19 15:26:59 974

原创 精灵帧图

用精灵帧图片创建一个精灵,可以包含一个矩形结构。CCSprite* sp1 = CCSprite::createWithSpriteFrame(CCSpriteFrame::create("sprite.png",CCRectMake(0, 0, 60, 50)));用精灵帧图片的名字创建一个精.CCSpriteFrameCache是缓存池,存放所有CCSpriteFrame对象的地方,用ad

2013-11-18 16:51:27 806

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除