【COCOS2DX-LUA 脚本开发之六】Lua强转函数解决报错及介绍两款框架

简介:

Him 的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
2
local sp = node:getChildByTag(x)
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的扩展。

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









本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/1174063,如需转载请自行联系原作者
目录
相关文章
|
10天前
|
监控 安全
公司用什么软件监控电脑:Lua 脚本在监控软件扩展功能的应用
在企业环境中,电脑监控软件对保障信息安全、提升效率至关重要。Lua 脚本在此类软件中用于扩展功能,如收集系统信息、监控软件使用时长及文件操作,向指定服务器发送数据,支持企业管理和运营。
28 6
|
2月前
lua面向对象(类)和lua协同线程与协同函数、Lua文件I/O
Lua的面向对象编程、协同线程与协同函数的概念和使用,以及Lua文件I/O操作的基本方法。
37 4
lua面向对象(类)和lua协同线程与协同函数、Lua文件I/O
|
2月前
|
缓存 分布式计算 NoSQL
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
37 2
|
2月前
|
数据可视化 开发者 索引
详解Wireshark LUA插件函数:function p_myproto.dissector(buffer, pinfo, tree)
在 Wireshark 中,LUA 插件通过 `function p_myproto.dissector(buffer, pinfo, tree)` 扩展协议解析能力,解析自定义应用层协议。参数 `buffer` 是 `PacketBuffer` 类型,表示原始数据包内容;`pinfo` 是 `ProtoInfo` 类型,包含数据包元信息(如 IP 地址、协议类型等);`tree` 是
89 1
|
3月前
|
存储 JSON Ubuntu
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
|
7月前
|
存储 NoSQL Redis
Redis的Lua脚本有什么作用?
Redis Lua脚本用于减少网络开销、实现原子操作及扩展指令集。它能合并操作降低网络延迟,保证原子性,替代不支持回滚的事务。通过脚本,代码复用率提高,且可自定义指令,如实现分布式锁,增强Redis功能和灵活性。
265 1
|
6月前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
246 0
|
4月前
|
存储 NoSQL Redis
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
|
6月前
|
JSON 监控 数据格式
使用Lua代码扩展上网行为管理软件的脚本功能
本文介绍了如何使用Lua脚本增强上网行为管理,包括过滤URL、记录用户访问日志、控制带宽和自动提交监控数据到网站。Lua是一种轻量级语言,适合编写扩展脚本。文中提供多个示例代码,如URL过滤器、用户活动日志记录器和带宽控制器,帮助用户根据需求定制网络管理功能。通过这些示例,用户可以快速掌握Lua在上网行为管理中的应用。
185 4
|
6月前
|
NoSQL API Redis
使用Redis Lua脚本实现高级限流策略
使用Redis Lua脚本实现高级限流策略
212 0
下一篇
DataWorks