Heim > Datenbank > MySQL-Tutorial > Cocos2d-x 3.0心得(03)

Cocos2d-x 3.0心得(03)

WBOY
Freigeben: 2016-06-07 15:09:28
Original
876 Leute haben es durchsucht

cocosbuilder 是比较方便的工具,不过功能未免有点落后了,今天就碰到个问题。 cocos2dx 3.0 的 LabelTTF 是可以设置阴影、轮廓效果的,但是 builder 里没有相应的设置。不过还好 builder 扩展性还不错,所以就自己动手加吧。 首先是定义一个新的 loader ,

cocosbuilder是比较方便的工具,不过功能未免有点落后了,今天就碰到个问题。cocos2dx 3.0LabelTTF是可以设置阴影、轮廓效果的,但是builder里没有相应的设置。不过还好builder扩展性还不错,所以就自己动手加吧。

首先是定义一个新的loader,就叫MyLabelTTFLoader吧:

class MyLabelTTFLoader : public LabelTTFLoader
{
public:
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(MyLabelTTFLoader, loader);

protected:
    virtual void onHandlePropTypeString(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * pString, CCBReader * ccbReader);
};
Nach dem Login kopieren

因为是扩展LabelTTF的参数设置,所以从LabelTTFLoader继承。

onHandlePropTypeString可以用来解析builder中自定义的字符串属性。当然,还有解析自定义整型、浮点等等类型的方法,不过这里只用到了字符串类型,所以就是它了。

接下来是实现部分:

void MyLabelTTFLoader::onHandlePropTypeString(Node *pNode, Node *pParent, const char *pPropertyName, const char *pString, CCBReader *ccbReader)
{
    if (strcmp(pPropertyName, "shadow") == 0)
    {
        int r = 0, g = 0, b = 0, a = 255;
        Size offset = Size::ZERO;
        sscanf(pString, "%d,%d,%d,%d;%f,%f", &r, &g, &b, &a, &offset.width, &offset.height);
        ((Label *)pNode)->enableShadow(Color4B(r, g, b, a), offset);
    }
    if (strcmp(pPropertyName, "outline") == 0)
    {
        int r = 0, g = 0, b = 0, a = 255;
        int size = 1;
        sscanf(pString, "%d,%d,%d,%d;%d", &r, &g, &b, &a, &size);
        ((Label *)pNode)->enableOutline(Color4B(r, g, b, a), size);
    }
    else
    {
        LabelTTFLoader::onHandlePropTypeString(pNode, pParent, pPropertyName, pString, ccbReader);
    }
}
Nach dem Login kopieren

只有一个函数,也就是在捕捉到关键字“shadow”“outline”时,解析相应的参数,然后对Label进行设置。嗯,这里的字体类型是Label,因为v3.0里面用Label统一来实现CCLabelTTFCCLabelBMFont

当然,定义好了loader,记得注册。

    NodeLoaderLibrary *nl = NodeLoaderLibrary::getInstance();
    nl->registerNodeLoader("MyLabelTTF", MyLabelTTFLoader::loader());
Nach dem Login kopieren

然后,就是builder的设置部分。

首先,拖一个LabelTTF到界面,在右侧面板,Custom class一栏需要填写“MyLabelTTF”

点击最下角的“Edit Custom Properties”按钮

在弹出的对话框中设置

shadow          String           255, 0, 0, 255; 2, -2

outline          String           0, 0, 255, 255; 2


参数的填写跟解析部分是对应的,这里用了字符串,所以解析的时候需要一个一个解析数字。


嗯,这样就ok了。唯一遗憾是builder里不能即时看到效果,只能游戏里看了。




Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage