Cocos2dx+lua에서 Color 매개 변수의 구덩이

6768 단어 cocos2dx
cocos2x의 루아에는 다음과 같은 몇 가지 색깔 정의가 있습니다.
--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);

루아는 원래 약한 타입이에요. 이렇게 하면 실수하기 쉬워요. 경고도 없어요!!!
스스로 더욱 주의할 수밖에 없다. 색깔을 사용하려면 반드시 어떤 색깔 구조를 사용하는지 똑똑히 보아야 한다

좋은 웹페이지 즐겨찾기