Cocos2dx+lua中Color参数的坑
cocos2x的lua中有如下几种颜色定义
--Color3B
function cc.c3b( _r,_g,_b )
return { r = _r, g = _g, b = _b }
end --Color4B
function cc.c4b( _r,_g,_b,_a )
return { r = _r, g = _g, b = _b, a = _a }
end --Color4F
function cc.c4f( _r,_g,_b,_a )
return { r = _r, g = _g, b = _b, a = _a }
end
今天使用Cocos2dx的Label碰到一个问题,我感觉挺容易被忽略的
virtual void enableShadow(const Color4B& shadowColor = Color4B::BLACK,const Size &offset = Size(,-), int blurRadius = );
使用Label的enableShadow函数定义的颜色要求是Color4B,如果不小心使用了Color3B就根本没有效果
我看了下从lua表转化到C++中Color4B的代码,结果是为空时就赋值为0,所以使用Color3B传进来,alpha值为nil,它直接赋值为0了
全透明了当然也就看不到了。。。
bool luaval_to_color4b(lua_State* L,int lo,Color4B* outValue)
{
if (NULL == L || NULL == outValue)
return false; bool ok = true; tolua_Error tolua_err;
if (!tolua_istable(L, lo, , &tolua_err) )
{
#if COCOS2D_DEBUG >=1
luaval_to_native_err(L,"#ferror:",&tolua_err);
#endif
ok = false;
} if(ok)
{
lua_pushstring(L, "r");
lua_gettable(L,lo);
outValue->r = lua_isnil(L,-) ? : lua_tonumber(L,-);
lua_pop(L,); lua_pushstring(L, "g");
lua_gettable(L,lo);
outValue->g = lua_isnil(L,-) ? : lua_tonumber(L,-);
lua_pop(L,); lua_pushstring(L, "b");
lua_gettable(L,lo);
outValue->b = lua_isnil(L,-) ? : lua_tonumber(L,-);
lua_pop(L,); lua_pushstring(L, "a");
lua_gettable(L,lo);
outValue->a = lua_isnil(L,-) ? : lua_tonumber(L,-);
lua_pop(L,);
} return ok;
}
还有如果需要传入Color4F的地方如果传入了Color3B或者Color4B也会不正常
因为Color4F要求rgba范围都是0~1
void drawDot(const Vec2 &pos, float radius, const Color4F &color);
lua本来就是弱类型的这样很容易出错!!
只能自己多加注意了
Cocos2dx+lua中Color参数的坑的更多相关文章
- Cocos2d-x Lua中使用标签
游戏场景中的文字包括了静态文字和动态文字.静态文字如下图所示游戏场景中①号文字“COCOS2DX”,动态文字如图4-1所示游戏场景中的②号文字“Hello World”.静态文字一般是由美工使用Pho ...
- Cocos2d-x Lua中帧动画
帧动画就是按一定时间间隔.一定的顺序.一帧一帧地显示帧图片.我们的美工要为精灵的运动绘制每一帧图片,因此帧动画会由很多帧组成,按照一定的顺序切换这些图片就可以了. 在Cocos2d-x Lua中播放帧 ...
- cocos2d-x lua 中使用protobuf并对http进行处理
cocos2d-x lua 中使用protobuf并对http进行处理 本文介绍 cocos2d-x lua 中使用http 和 基于cocos2d-x 对lua http的封装(部分ok) 本博客链 ...
- cocos2d-x lua中实现异步加载纹理
原文地址: http://www.cnblogs.com/linchaolong/p/4033118.html 前言 问题:最近项目中需要做一个loading个界面,界面中间有一个角色人物走动的 ...
- cocos2dx lua中继承与覆盖C++方法
cocos2dx的extern.lua中的class方法为lua扩展了面向对象的功能,这使我们在开发中可以方便的继承原生类 但是用function返回对象的方法来继承C++类是没有super字段的,这 ...
- cocos2dx lua中异步加载网络图片,可用于显示微信头像
最近在做一个棋牌项目,脚本语言用的lua,登录需要使用微信登录,用户头像用微信账户的头像,微信接口返回的头像是一个url,那么遇到的一个问题就是如何在lua中异步加载这个头像,先在引擎源码里找了下可能 ...
- Cocos2d-x Lua中实例:特效演示
下面我们通过一个实例介绍几个特效的使用,这个实例如下图所示,上图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的特性动作,点击Back按钮可以返回到菜 ...
- Cocos2d-x Lua中Sprite精灵类
精灵类是Sprite,它的类图如下图所示. Sprite类图 Sprite类直接继承了Node类,具有Node基本特征.此外,我们还可以看到Sprite类的子类有:PhysicsSprite和Skin ...
- Cocos2d-x Lua中实例:帧动画使用
下面我们通过一个实例介绍一下帧动画的使用,这个实例如下图所示,点击Go按钮开始播放动画,这时候播放按钮标题变为Stop,点击Stop按钮可以停止播放动画. 帧动画实例 下面我们再看看具体的程序代码,首 ...
随机推荐
- JAVA开发CHECK STYLE
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE module PUBLIC "-/ ...
- Linq中Select查询参数提取公共方法
class Program { static void Main(string[] args) { var listTest1 = new List<Test1> { "}, & ...
- 发送Http Get和Post请求
发送Get请求 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "GET"; r ...
- 使用IntersectionObserver更高效的监视某个页面元素是否进入了可见窗口
比如说,你想跟踪 DOM 树里的一个元素,当它进入可见窗口时得到通知. 也许想实现即时延迟加载图片功能,或者你需要知道用户是否真的在看一个广告 banner. 你可以通过绑定 scroll 事件或者用 ...
- BZOJ2457 BeiJing2011 双端队列
[问题描述] Sherry现在碰到了一个棘手的问题,有N个整数需要排序. Sherry手头能用的工具就是若干个双端队列. 她需要依次处理这N个数,对于每个数,Sherry能做以下两件事 ...
- java 验证电话号码(手机和固话)
- Hdu 1010 Tempter of the Bone 分类: Translation Mode 2014-08-04 16:11 82人阅读 评论(0) 收藏
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Mrt render
mutil render target Pixel shder输出一个结构体 Out.f4Color Out.f4Normal 这步在渲染物体的shader里 在application setcolo ...
- PE文件结构详解
(注:最左边是文件头的偏移量.) IMAGE_DOS_HEADER STRUCT { +0h WORD e_magic // Magic DOS signature MZ(4Dh 5Ah) DOS可执 ...
- 从maya导入物体 Importing Objects From Maya
原地址:http://game.ceeger.com/Manual/HOWTO-ImportObjectMaya.html Unity natively imports Maya files. To ...