关于Quick与2d-x -3

官方问答:
1:lua  不用操心指针等等, 不会出现野指针神莫得问题(垃圾回收机制), Quick现在有触控维护
2:脚本语言弱点:在做计算密集型任务时。   可以解决    比如说:这一片,把大量计算的用C++写(函数),再导出 给lua使用。
3: JS最大的优势, 可以跑在浏览器上
4: quick适配:本质上2d-x的。  2种:做改进。 比如说你的游戏横屏的, h不变,让w随着设备变化,coco中也有
5: 热更新的方案。 有很多种

 

【视频教程】两小时学会用Cocos2d-lua开发游戏.


  Lua中handler方法的原理详解

------------------------------------------------------------------------------------------------------------
1: ctor  — init 放该类的一些属性, 如颜色 位置。。。

2:  多分辨率适配。 高固定, W变化  
CONFIG_SCREEN_AUTOSCALE = “FIXED_HEIGHT"

3:ctor中一定要自己调用父类构造函数, OR 出错
function BugAnt:ctor()
    BugAnt.super.ctor(self)

4:目录结构: src   res

5:  为   类  添加方法  function Game:ctor(stage)  /Game:getStars()


 1:self.game_:addEventListener(Game.PLAYER_DEAD_EVENT, handler(self, self.onPlayerDead_)) ——  handle 、

 2: local BugBase = class("BugBase”)  ——  就一个参数???

 3: local BugAnt = class("BugAnt", BugBase)  父类           当传入的是一个对象时,会以传入的对象为父类派生下来。

-----------------------------------------------------------------------------------

1:BugBase.BUG_TYPE_ANT = 1 ----(蚂蚁) 看成 静态变量 
2:事件机制:  handle(self, self.aaa)
3:self.type_  属性定义更个下划线, 是个约定, (还是可以从外部访问的) 外部就别在访问了



1:   local BugBase = class("BugBase”)      —  就是个table

BugBase.BUG_TYPE_ANT = 1 ----   (蚂蚁/蜘蛛)看成 静态变量 
2: self.game_:addEventListener(Game.BUG_ENTER_HOLE_EVENT, function(event)  

3:  功能上都定义了一个对象, 效果。。
  self.BugAnt = import(".BugAnt")            —— 类的成员变量 
 local BugAnt = import(".BugAnt”) —C++  中的static变量, 一直存在本文件

不同点: self。当对象销毁时, self.BugAnt内存也释放掉了

-------------------------------------------------------------------------------------

1:源码:

1
2
3
4
5
function handler(obj, method)
     returnfunction(...)
        return  method(obj,...)
     end
end

由此不难发现handler通过接收的两个参数obj, method创建了一个匿名函数并将其返回,并且调用匿名函数时所传入的参数也将传入method方法中,作为obj后面的参数。


好吧我们看看它的用法:

既然通过handler封装返回的是一个匿名函数,所以可以这样调用

1
2
3
4
5
6
localcls = {}
cls._m =  "close"
function cls:onClose()
          print(self._m)
end
handler(cls,cls.onClose)()

结果为:

close

此时我们通过handler将cls作为cls.onClose的第一个参数传入,此时执行返回的匿名函数时则等价于cls.onClose(cls)由于传入的参数就是其本身所以self就是cls也即等价于cls:onClose(),所以此代码段打印出close。

如果第一个参数不是它自己的话由上面的测试代码可以知道那样就不会是我们想要的结果了。

-------- 随机数-------
2. math.random([n [, m]]) 有三种用法: 无参调用, 产生 (0,1) 之间的浮点随机数; 只有参数 n, 产生 1-n 之间的整数; 有两个参数 n, m, 产生 n-m 之间的随机整数
  1. math.randomseed(os.time())  
  2. ----然后不断产生随机数  
  3. for i=1, 5 do  
  4.  print(math.random())  
  5. end  
3:  tab小表从 1 开始, 与其他不一样
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值