1: 问题由来: 不知道是否加个 * 号; 哎 * 一般C++中用new创建 返回的跟定是 const char*
std::string Star::setColor(int color)
{
switch (color)
{
case GREEN: return"green.png";
case BLUE: return"blue.png";
case YELLOW:return"orange.png";
case RED: return"red.png";
case PURPLE:return"purple.png";
default:
CC_ASSERT(0); // false
}
} // non-void function 可能会出现返回值 空 的情况
.五 总结
1) 指针也是变量,它存储其他变量的地址。例如int *p = new int(10); p是指针变量,p实际是存储了一个int变量的地址。
2)引用其实是一个别名,跟原对象是同一个东东。例如 std::string str = "hello"; std::string & strR = str;此时strR跟str其实是同一个东东,strR可以看成是str的一个小名。
4)函数的传参方式可以显示的指定按引用来传递,按引用传递时,函数内即对实参的操作,没有拷贝操作,所以函数内对实参的修改,当然后调用结束后反映到实参上。例如void Increase(int & x) { x++;} 调用 int i = 10; Increase(i);此时Increase内部的++即是对i的操作,所以函数调用结束后i的值被修改。
5)函数中如果有return返回变量时,其实所返回的也是一个拷贝。所以当使用return返回对象时一定要考虑所返回对象的拷贝构造函数是否能够满足要求。
六 使用注意
1) malloc/free一起使用。
2)new/delete一起使用。
3)对于new中有[]时,相应的必须使用delete[]来释放。
4)用free或delete释放了内存之后,立即将指针设置为NULL,防止产生“野指针”。 *********
5)对指针的使用前,应该检查是否为空,空指针可能导致程序崩溃。 ********** 陈耀光UI
6)非内置类型的参数传递,使用const引用代替一般变量。 ******** 引用用途:参数传递
void StarMatrix::onTouch(constPoint& p)
2: 附件: typedef函数指针用法
- typedef char (*PTRFUN)(int); ---- 循环队列
- PTRFUN pFun;
- char glFun(int a){ return;}
- void main()
- {
- pFun = glFun;
- (*pFun)(2);
- }
- int add(int a, int b)
- {
- return a + b;
- }
- //定义一个函数,参数为op,返回一个指针,该指针类型为拥有两个int参数、
- //返回类型为int的函数指针。它的作用是根据操作符返回相应函数的地址
- FP_CALC calc_func(char op)
- {
- switch( op )
- {
- case '+':
- return add;
- case '-':
- return sub;
- case '*':
- return mul;
- case '/':
- return div;
- default:
- return NULL; // 如果不写return 提出警告
- }
- return NULL; // 如果不写下面的 提出警告
- }
3: 整个游戏实质: 对二维数组操作 例如: 剩余的星星 清楚剩余星星 合并 搜索同颜色的
操作/引用二维数组 ----- 用下表索引
4:在定义private函数时: 为啥出来红线 不让用 有不是CCMoveBy 被废弃了
class StarArry : public Sprite // ?? scene()
{
public:
static StarArry* createMatrix();
bool init();
public:
void initMatrix();
static const int ROW_NUM = 8;
static const int COL_NUM = 8;
private:
********************* //public的全局可见,private类内可见 private函数一般是用来给public函数调中 A.f1();
void getSelectedList(Star *s); // 获取相同颜色的星星
void deleteSelectedList(); // 删除数组中同颜色的星星
void adjustMatrix(); // 消除后,调整二维数组中的内容 即: 调整位置
void produceStars(); // 消除后产生新的星星
bool isEnd(); //判断是否死局
void clearStarOneByOne(); // 一个接一个的删除星星
private:
Star* stars[ROW_NUM][COL_NUM]; // 二维数组 来存放星星
std::deque<Star *> selectedList; // 用于记录相同颜色的星星 ******* 随机的插入、删除元素,在速度上占有明显的优势
};
5: 不会 低级问题
A :求助:关于setSwallowTouches()的用法
- /如果不加入此句消息依旧会向下传递
- myListener->setSwallowTouches(true); 如果 fasle 只有sp1会接受触摸
- dispatcher->addEventListenerWithSceneGraphPriority(myListener,mySprite1); 默认2个优先级是一样的,队列中 1 之后是2接受
- dispatcher->addEventListenerWithSceneGraphPriority(myListener,mySprite2);
B: onTouchBegan .返回true,则ccTouchMoved(),ccTouchEnded()可以接收到消息 , 但是本层之下的其它层会接收到消息
C: listener1->setSwallowTouches(true);//设置是否想下传递触摸
- auto listener1 = EventListenerTouchOneByOne::create();//创建一个触摸监听 监听和sp要一一对应
数学:1:印度棋盘故事 2……64 翻番即*2 --- 对应折半 常用于查找中
2: 递归关键: 1 , if终结条件 2,前一次于后一次又紧密联系, 前一次为后一次做基础 if(n==1) return 1; else return n*f(n-1) 求 N !
3: 函数调用/递归 主调函数返回地址 参数 被调函数 参数 ---- = 用栈实现,
4:程序 = 算法+数据结构, 算法 = 控制 + 逻辑判断(if判断) ****************************写逻辑判断 我不牛 最好穷举/一一列出 如:小八字形星星
5:调用自己即递归
6: 使用CCNotificationCenter 在两个 scene 之间传递参数的过程中遇到一个很容易出错的细节,下面简单记录一下。
我们知道,使用 CCNotificationCenter 在两个 scene 之间传递参数,接受方scene 要添加监听,也就是 addObserver ;而发送方scene是要发送消息,也就是 postNotification。 // 一定要先注册监听,然后发送消息,这样才可以实现数据的传递。
【Cocos2dx游戏开发】CCNotificationCenter传递消息和数据
// int _infor = ((MenuItemImage *)obj)->getTag();
// __NotificationCenter::getInstance()->postNotification("storeShop", obj); 参数类型int不对
8: glview->setDesignResolutionSize(640,1136,ResolutionPolicy::EXACT_FIT); 适配有2种方法, 这种只需一套图片, 影响体验
9: 牛叉 不同对象/层之间要通信: A: __Notification B:setStarMartix() 旧获得另一个对象实例 ref object
10: Cocos2d-x教程(23)-CCTableView使用详解
1: setposition()位置是相对于可视区域设置, 不是整个大的(几百关)来设置的;-- 一直不会 ignore...
2: 对于单个的tableCell 自己封装; 实现里面内容,再去修改内容-- 关键要使用 index值, 最后再去修改值 -- 一天没搞懂
3: index 从大到小,变化 ; iOS中从小到大
11: 内支付-SKProductsRequest http://blog.csdn.net/xiaominghimi/article/details/6937097/
7:Bug:
A: 出现bug觉得逻辑上出现了错误; 弄了1天多; 就是调整后产生的新的星星; 偶尔会出现空的
老大: 因为2个动作; 叠加造成; 所以先停止 100 200 走80 省20走了2个
B: 调试方法: 老大最常用 打断点; 看是否执行 / 看崩溃时的结果值 例子:像我的 消除八字形星星 逻辑错了出边界 弄好就看不出来
C: reference from 出现: 说明问题出在JsonRead.cpp中s_level 因为 没有初始化 --- me
D: 出现直接闪退; 一运行就退出; 很简单 一步一步调试 原因:
exit(0); 直接终止程序运行;CC_ASSERT(0);会在该地方崩溃, 所以好
E: 打到真机后出现bug: 有时会出现消不掉的现象; -- me 因为:2消改为了三肖
if(selectedList.size() <= 2) // 如果没有搜到
{
selectedList.at(0)->setSelect(false);
if(selectedList.size() == 2) // 如果2个颜色相同
{
selectedList.at(1)->setSelect(false);
}
return ;
}
//static成员函数可以直接访问所属类的static成员,但是不能直接使用非static成员函数
admin.dajiao99.com/index.php?r=util/excel excel化为JSon |
// 有类名字 成语函数的指针
2: 提出警告
3: 内购中使用的类找不到:
出现referenced fromm 说明没有实现; 2种 1: 自己的。cpp中实现; 2:os的导入库(能看到.h文件)
查找缺少的库:copy类(明显不是的去掉)到代码中搜索 -》点进去-》看上面出现的库-》导入
4:
1: 创建的字为空的; 因为用系统自带的字体,要用函数 Label::createWithSystemFont而createWithTTF不对的
2: 制作特效字体:(注: 不是张图片, 是字体库) 在Launched中
AppStore ID: 1335317519@qq.com 1335317519qqCOM