Cocos2dx+lua에서 Color 매개 변수의 구덩이
6768 단어 cocos2dx
--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(2,-2), int blurRadius = 0);
Label의 enableShadow 함수를 사용하여 정의된 색상 요구 사항은 Color4B입니다. 실수로 Color3B를 사용하면 전혀 효과가 없습니다.
나는 루아표에서 C++에서 Color4B로 전환된 코드를 보았는데 결과는 비어 있을 때 0을 부여했기 때문에 Color3B를 사용하여 들어왔다. 알파 값은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, 0, &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,-1) ? 0 : lua_tonumber(L,-1);
lua_pop(L,1);
lua_pushstring(L, "g");
lua_gettable(L,lo);
outValue->g = lua_isnil(L,-1) ? 0 : lua_tonumber(L,-1);
lua_pop(L,1);
lua_pushstring(L, "b");
lua_gettable(L,lo);
outValue->b = lua_isnil(L,-1) ? 0 : lua_tonumber(L,-1);
lua_pop(L,1);
lua_pushstring(L, "a");
lua_gettable(L,lo);
outValue->a = lua_isnil(L,-1) ? 0 : lua_tonumber(L,-1);
lua_pop(L,1);
}
return ok;
}
그리고 만약에 Color4F에 들어갈 곳이 있으면 Color3B나 Color4B가 들어와도 정상이 아니에요.
왜냐하면 Color4F는 rgba 범위가 0 ~ 1이 돼야 돼요.
void drawDot(const Vec2 &pos, float radius, const Color4F &color);
루아는 원래 약한 타입이에요. 이렇게 하면 실수하기 쉬워요. 경고도 없어요!!!
스스로 더욱 주의할 수밖에 없다. 색깔을 사용하려면 반드시 어떤 색깔 구조를 사용하는지 똑똑히 보아야 한다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
xcode를 통해cocos2dx 응용 프로그램 가져오기version Xcode cocos2dx osx xcode와cocos2dx 설치 완료를 전제로 코코스 명령으로 응용 프로그램의 모형을 만들다. 나는 Jet이라는 이름의 앱을 사용했다. 동작을 확인하다. 만들어서 He...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.