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