• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

COCOS2DX-LUA脚本开发之六利用Lua强转函数解决使用CCNode报错

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Cocos2dx-Lua群中有童鞋出现一个问题,问题是当他在Lua项目中利用Lua创建一个局部变量CCSprite或者CCLayer等CCNode,然后在其他的函数中通过其索引取出之前创建过的CCSprite或CCLayer等,取出后进行设置设置透明、坐标、缩放、runAction等大部分几率都出现无法正常缩放、透明等这些操作。群友尝试了很多方式,都没有解决掉。

其实对于此种问题很多刚接触Lua开发cocos2dx的开发者都很容易遇到,其实就是个强转的问题,例如:

在 cpp中利用getChildByTag 函数获取目标tag的ccnode:

1
2
CCSprite* sp = (CCSprite*)node->getChildByTag(x); 
CCLayer* layer = (CCLayer*)node->getChildByTag(x)


在Lua中代码如下:

  1. local sp = node:getChildByTag(x) 
  2. local layer =node:getChildByTag(x)
复制代码


如上的代码一对比很多童鞋就看出来了,Lua形式的并没有强转类型!是的,就是因为没有强转造成。

还有一些童鞋该疑惑了“为什么cocos2dx引擎示例中就没有使用强转呢?”

原因是由于示例基本都是采用成员变量进行的,局部变量还是有强转的操作的。

那么Lua中强转一个类型函数如下:

tolua.cast(object,”CCSprite”) 

第一个参数是需要强转的对象 , 第二个参数是强转的目标类型

例如我们将x 强转 CCSprite,则: tolua.cast(x,”CCSprite”)

quick-cocos2d-x 与 OpenQuick 

OpenQuick:
OpenQuick 首页及下载地址: https://github.com/marmalade/OpenQuick

quick-cocos2d-x :
quick-cocos2d-x 首页及下载地址 : https://github.com/dualface/quick-cocos2d-x

简单的说: OpenQuick 与 quick-cocos2d-x 都是针对 2D游戏 基于 Lua 的免费开源框架,且都支持c2dx。

OpenQuick :主要是将所有的C2dx的类的基础上进行了再次封装成Q开头文件,开发者需在此基础上进行使用开发。

quick-cocos2d-x : 及时与cocos2dx版本匹配更新,另外它框架比较清晰,便于理解和使用。它所做的不是再次封装,然后尽可能契合cocos2dx,在此基础上做Lua的扩展。

我认为quick-cocos2d-x更适合一些,而且也是当前开发者使用居多的一款, 当然这大家可以更深入的去研究。

原文链接:http://www.himigame.com/iphone-cocos2dx/1289.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
bindings-generator脚本的使用(lua 调 c++)发布时间:2022-07-22
下一篇:
Lua中assert()函数的使用发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap