- 博客(31)
- 资源 (1)
- 收藏
- 关注
原创 cocos2d中init中必须调用父类init
bool CCLayer::init(){ bool bRet = false; do { CCDirector * pDirector; CC_BREAK_IF(!(pDirector = CCDirector::sharedDirector())); this->setContentSize(pDirec
2013-10-31 18:50:36 714
原创 cocos2d 属性
int tag; int getTag() { return tag; } void setTag(int aTag) { tag = aTag; } 利用Cocos2d-x提供的宏,上面的Tag属性定义就可以用下面一条语句代替了:CC_SYNTHESIZE(int, tag, Tag)
2013-10-31 16:18:30 704
原创 宏 CREATE_FUNC
宏的单行定义#define maxi(a,b) (a>;b?a:b)宏的多行定义宏可以替代多行的代码 关键是要在每一个换行的时候加上一个 "\ "宏定义写出swap(x,y)交换函数#define swap(x, y)\x = x + y;\y = x - y;\x = x - y;—————————————————————————————————
2013-10-31 14:54:21 659
原创 函数的重载
C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。在C++中,没有跨域重载——继承类和基类虽然关系很亲密,但也不能坏了这条规矩。#include using namespace std;class B{ public: int f(int i) { cout re
2013-10-30 15:42:04 619
原创 boundingBox getContentSize
boundingBox() ——如果你在一个Sprite(比如A)中加入一个子Sprite(比如B),则B通过boundingBox()获取到的边框,相对于父Layer来说,位置是不准的,这会导致明明按中了B,却得不到该有的响应。(少用boundingbox 可用contentSize代替引擎而已不需要全深入 好用就行)getContentSize返回的是原sprite的大小CCRectM
2013-10-30 11:46:49 921
原创 摄像机实现翻转
2、关于节点的摄像机 cam->setEyeXYZ(0,0,500);//以“Eye”为起点 eye是一个位置点 cam->setCenterXYZ(0,0,-1);//朝“Center”看 center是一个向量cam->setUpXYZ(0,1,0);//沿着“Up”方向 站着看地上一个图片 转动身体后看到的图片会也会转3、关于摄像机旋转动作C
2013-10-30 11:45:38 881
原创 裁剪区域的实现
void visit()//此方法为绘制时调用,系统每帧调用{ glEnable(GL_SCISSOR_TEST); glScissor(0, 0, 1024, 768);//x, y, w, h 左下0 0点 cocos2d::CCLayer::visit();//调用自己的类方法 glDisable(GL_SCISSOR_TEST);} 也可以使用scrol
2013-10-30 11:43:29 1209
原创 长按按钮
#pragma once#include "cocos2d.h"class LongTouch : public cocos2d::CCNode, public cocos2d::CCTouchDelegate{public: LongTouch(void); ~LongTouch(void); virtual bool ccTouchBegan(cocos2d::
2013-10-30 11:40:21 836
原创 cocos2d部分函数
CCAction的基类virtual void stop (void)动作完成后自动调用,不能手动的用一个动作调用stop()virtual void step (ccTime dt)每帧都会调用 一般不用重写virtual void update (ccTime time)在动作过程中调用一次,需要的时候重新实现 参数是0到1 0这个方法在动作刚开始的时候调用 0.5方法
2013-10-29 11:38:52 728
原创 cocos2d权威指南部分摘录
cocos2d简介————————————————————————————————————————————首先Cocos2D 降低了技术的复杂性。它虽然基于OpenGL(Open Graphics Library,开放图形库)和OpenGL ES(OpenGL for Embedded Systems,嵌入式系统开放图形库),但是使用Cocos2D 系列的引擎无须掌握OpenGL 的相关知识。
2013-10-29 11:04:52 1172
原创 Decorator
//动态添加需求//Decorator模式,又叫装饰模式,就是给一个对象额外地添加一些职责,以适应更多的变化。//你或许写一个Door //的子类AlarmDoor ,在里面添加一个子类独有的方法alarm() 。而当你的系统仅仅在一两个地方使用了警报门,这明 //显是不合理的——虽然可以使用缺省适配器来弥补一下。 这时候,你可以考虑采用装饰模式来给门动态的添加些额外的功能。/
2013-10-29 11:00:36 554
原创 State
//状态机 详细的在23种设计模式 4.2//1) 使用环境(Context)角色:客户程序是通过它来满足自己的需求。它定义了客户程序需要的接口;并且维护一个具体状态角色的实例,这个实例来决定当前的状态。//2) 状态(State)角色:定义一个接口以封装与使用环境角色的一个特定状态相关的行为。//3) 具体状态(Concrete State)角色:实现状态角色定义的接口。//G
2013-10-29 11:00:12 597
原创 Observer
// 观察者(Observer )模式又名发布-订阅(Publish/Subscribe)模式。GOF 给观察者模 //式如下定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依 //赖于它的对象都得到通知并被自动更新。 //观察者模式的起源我觉得 应该是在 GUI 和业务数据的处理上//观察者模式的组成部分。 //1) 抽象目标角色(Subject
2013-10-29 11:00:06 672
原创 Visitor
//详细的在23种设计模式 4.3//1) 访问者角色(Visitor):为该对象结构中具体元素角色声明一个访问操作接口。该操作//接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色。这样访问者就可//以通过该元素角色的特定接口直接访问它。//2) 具体访问者角色(Concrete Visitor):实现每个由访问者角色(Visitor)声明的操作。//3) 元素角色
2013-10-29 11:00:04 563
原创 Factory
//工厂模式//工厂模式主要为创建对象提供过渡接口 以便将创建对象的过程屏蔽起来//何时使用//1、当客户程序不需要知道要使用对象的创建过程//2、客户程序使用的对象存在变动的可能,或者根本不知道使用哪一个具体的对象//工厂负责创造对象(new对象)#include #include class Car{public: //默认私有 结构体默认公
2013-10-29 10:59:38 543
原创 Mediator
//Mediator 模式提供将对象间 的交互和通讯封装在一个类中,各个对象间的通信不必显势去声明和引用,大大降低了系统 的复杂性能 ////例如 图中 ConcreteColleagueA 和 ConcreteColleagueB 之间的交互就可以通过 ConcreteMediator 提供的 //DoActionFromAtoB 来处理,ConcreteColleagueA 和
2013-10-28 17:30:58 625
原创 行为模式-Iterator
//迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的//内部细节。//在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的://一是集合内部的数据存储结构,二是遍历集合内部的数据。面
2013-10-28 17:30:31 574
原创 Adapter
//Adapter模式又叫适配器模式,顾名思义,这个模式就是把一个不能用的东西“适配”成可以用的东西。//那么是如何“适配”的呢?比如,东西A想使用东西B,但是A没有能力(没法)使用B,怎么办?A就让东西C帮忙,A通过C就可以用B了。C如何帮忙呢?//C一边可以通过一个“手柄”让A握住,A一用力,C就在另一边握住B的“手柄”,使用B。这样A就可以间接的使用到B了。//A通过C使用B
2013-10-28 17:29:45 787
原创 Bridge
//动态添加需求//Decorator模式,又叫装饰模式,就是给一个对象额外地添加一些职责,以适应更多的变化。//你或许写一个Door //的子类AlarmDoor ,在里面添加一个子类独有的方法alarm() 。而当你的系统仅仅在一两个地方使用了警报门,这明 //显是不合理的——虽然可以使用缺省适配器来弥补一下。 这时候,你可以考虑采用装饰模式来给门动态的添加些额外的功能。/
2013-10-28 17:28:49 607
原创 Decorator
//动态添加需求//Decorator模式,又叫装饰模式,就是给一个对象额外地添加一些职责,以适应更多的变化。//你或许写一个Door //的子类AlarmDoor ,在里面添加一个子类独有的方法alarm() 。而当你的系统仅仅在一两个地方使用了警报门,这明 //显是不合理的——虽然可以使用缺省适配器来弥补一下。 这时候,你可以考虑采用装饰模式来给门动态的添加些额外的功能。/
2013-10-28 17:28:10 522
原创 结构型模式-Façade
//子系统发生的变化,很可 能要影响到客户类的调用。而且子系统在不断优化、可重用化的重构路上,会产生更多更小 //的类。这对使用子系统的客户类来说要完成一个工作流程,似乎要记住的接口太多了。 // 门面模式就是为了解决这种问题而产生的//使用环境和优点 // 《设计模式》给出了门面模式的使用环境: //1) 当你要为一个复杂子系统提供一个简单接口时。在上面已经描
2013-10-28 17:26:21 658
原创 Builder
//建造者模式//定义//将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。//实用范围//1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。//2 当构造过程必须允许被构造的对象有不同表示时。//角色//在这样的设计模式中,有以下几个角色://1 builder:为创建一个产品对象的各个部
2013-10-28 17:24:15 764
原创 创建型模式-Singleton
//单例(件)模式//定义:保证一个类仅有一个实例,并提供一个访问他的全局访问点//1、一个类的产生是由类构造函数完成的 使其私有化 外部就不能直接实例类对象//2、提供一个访问单例的静态方法//常用:工厂(因为系统我们就只有一个工厂来创建对象就可以了)..打印机的实例..//系统方法库..//不变单例对象(构造私有化不可被继承 保护可被继承产生多态)#includ
2013-10-28 17:22:18 611
原创 宏
定义为某个值 以便后面修改这个值时不用修改其它地方代码 只要修改这个宏的定义就可以了 如一个软件的多语言版本等 #define 标识符 字符串其中的标识符就是所谓的符号常量,也称为“宏名”掌握"宏"概念的关键是“换”无参数宏定义————其中# define之后的标识符称为宏定义名(简称宏名)# define TRUE 1凡定义之后出现的单词TRUE将用1替代之
2013-10-28 17:18:43 613
原创 虚函数
简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virtual 函数名=0 我们把这样的函数(方法)称为
2013-10-28 17:17:29 712
原创 gets getche getch
函数:gets(字符指针) 功能:从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer 指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。 注意:本函数可以无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。 如果溢出,多出来的字符将被写入到堆栈
2013-10-28 17:16:18 874
原创 文件读写
文本文件——FILE* file = fopen("xx.txt","xx")//fopen返回值是一个FILE指针 为0则打开失败fputc('w',file);//把字符w写入file 写入成功返回一个int型值 写入字符包含在低字节 高字节为0fgetc(file);//成功返回一个int型值 写入字符包含在低字节 高字节为0//从文件读取一个字符 若无变量保存
2013-10-28 17:14:30 587
原创 .h和.cpp
在ANSI C 的标准文献中,将你所指的“CPP 中的类代码”称为statement(声明 声明的意思是说明,解释);将你所指的“H 中的类代码”称为definition(定义),两者的定义是完全不同的主要指:statement将被C 编译器直接转换为二进制代码,而definition 只被C 编译器用于一些文本处理工作中(类似于宏) 把声明实现都写在头文件,如果不是写成内联函数
2013-10-28 17:13:23 603
原创 零碎
[30、41、61]—— 0 A a数据在内存中是一个字节一个字节存储的。 整型数据: 0x154a2541() 小端存储顺序 低位存在低地址 41254a15 大端反的0x25 0010 0101+ - * /重载后优先级不变化内聚:一个模块内各个元素彼此结合的紧密程度耦合:一个软件
2013-10-28 16:47:05 537
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人