根据自己对变量的命名规则,将只有意义的变量名过滤出来

来源:互联网 发布:mysql启动失败 1067 编辑:程序博客网 时间:2024/05/21 07:13
cocos2d::Map<std::string, Node*>  Cocos2dUtils::seekBindingNodeList( Node* root ){    cocos2d::Map<std::string, Node*> nodeList;        seekAllNodesByPre(root, nodeList);        return nodeList;}


/** btn_ => Button lbl_ => BitmapFontLabel lbl_ => Text img_ => Image spr_ => Sprite node_ => Node pnl_ => Panel var_ => 其他类型  chk_ => CheckBox pag_ => PageView lod_ => LoadingBar sld_ => Slider inp_ => TextField par_ => Particle til_ => Map adi_ => Audio scr_ => ScrollView **/static std::string s_PreArray[16] = {"btn", "lbl", "img", "spr", "node", "pnl", "var",                                    "chk", "pag", "lod", "sld", "inp", "par", "til", "adi", "scr"};void Cocos2dUtils::seekAllNodesByPre(cocos2d::Node *root, cocos2d::Map<std::string, Node*>& node_list ){        if (!root)    {        return ;    }        std::string nodeName = root->getName();        bool meaningful = false;        std::string sub3 = nodeName.substr(0, 3);    std::string sub4 = nodeName.substr(0, 4);        int  count = sizeof(s_PreArray)/sizeof(std::string);        for (int i = 0; i<count; i++) {        if (s_PreArray[i].compare(sub3) == 0 || s_PreArray[i].compare(sub4) == 0) {            meaningful = true;            break;        }    }        if (meaningful)    {        CCLOG("Get Node Name: %s", root->getName().c_str());        node_list.insert(nodeName, root);    }        const auto& arrayRootChildren = root->getChildren();    for (auto& subWidget : arrayRootChildren)    {        Node* child = dynamic_cast<Node*>(subWidget);        if (child)        {            seekAllNodesByPre( child, node_list );        }    }}

可见,不符合命名规则的节点,也会检查及其子节点,但是只是不会加到node_list中,所以通过seekBindingNodeList来查找节点时,是找不到这个节点的。




0 0
原创粉丝点击