1:添加玩家角色到场景中
在MainScenen:ctor()中添加下面代码:
2:概念讲解
3:local Bullet = class("Bullet",function () )
return
end);
------------------------------------------------------------------------------------
self:scheduler — self 不能少this指针
display:newSprite("img/bug1_01.png”) 是。 displaye.newSprite(self,…)
cc.Sprite:create() — cc是table,sprite是建, 值又是个table
1: cc.Sprite:setVisible()
cc表, sprite键, 值又是个table. 对键只能用. 函数才有:
2:看错误就看第一行的 error有用
3: : 忘了 then 有吧不等号输错了
if i >=0 and i < 8 and j>=0 and j < 8 and MatrixStars[i][j] ~= nil then
-------------------------------------------------------------------------------------
1:在触摸的回调函数function(event)中,记得考虑是否需要添加返回值,返回值的作用不用多说,true则后面的moved,ended等状态会接收到,否则接收不到,默认如果不添加则代表false。
2:节点生命周期事件,帧事件等其他事件
cc.NODE_TOUCH_EVENT
a 这里我就简单拿两个来说下,掌握起来都很容易。先看这个cc.NODE_EVENT。
节点事件其实就是节点的几个生命周期:
b cc.NODE_EVENT可以响应一个节点的onenter,onexit,cleanup,exitTransitionStart,enterTransitionFinish这些事件,当然如果不使用添加监听的方式,我们也可以重写相应的函数,
c functionMyScene:onEnter()
end
-----------------------------------------------------------------------------------------------------------------------------------------
1: 成员变量: (应为lua中不用生命定义,直接使用,动态修改),
所以actor中的 self. 相当于C++中的类成员变量
2: lua不会写是, 写C++, 在化为lua
3: local player = Play.new(); — 创建一个对象
像 当于C++中 createBullet(const char* fileName,Point pos) + void initBullet() 都被调用了
4:创建一个对象用 self,game_ local game_
理解: ctor()中定义对象用self.game_ 函数值用局部变量: local game_
5: 二维数组来存放星星:Star* stars[ 8][ 8]; — 对于lua 一个空表stars = {} 就ok
遍历/复制 for { i=1; i< for{ j=1; } } — 从1开始,用impairs,stars[i][j]i不变,对应8个值
6: table 内存空间分 2个位置: 1: 数组空间(key 从1开时并且连续) 2: hash中
例子:tab = {[1]=1,[2]=2,“ok”,[3]= 3,[4=]4 } — 这时:1234都存储在数组中,”ok”放在hash中,
tab = {1,2,[4]=4,[5]=5,} — 只有1,2放在数组空间中, ”剩余的“都放在hash中,因为2之后的key不连续
tab = { [2] =1,[3]=3 } —— ????
table有: 数字key 和 字符串键
— ipairs 仅仅遍历数组, pairs遍历所有的
-------------------------------------------------------------------------------------------------
1:
lua 是基于 C 的。
2: 内存管理:垃圾回收机制
A: 在 C 里,内存管理函数可不仅仅 malloc 和 free 两个。还有一个更重要的 api 是 realloc 。lua 就是用 realloc 来实现可变长度的数组的。( Lua 定义的 realloc 和 C 标准稍有不同,参见
Lua 参考手册中
lua_Alloc 的定义)
realloc 可以保证新分配出来的内存完全复制了旧内存的数据,在分配器合理设计下,甚至不需要移动内存就可以原地扩展出空间来。这样,一个可变长的数组的实现(Lua 里大量用到)就可以做的非常高效。(可能比 C++ 的 std::vector 要高效的多。)
B:
原型:extern void *realloc(void *mem_address,unsigned int newsize);语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。//新的大小一定要大于原来的大小,不然的话会导致数据丢失!说明:先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回,如果空间不够,先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。