Lite2D UI编辑器1 解析字符串属性

Stella981
• 阅读 598

负责解析字符串属性 然后输出对应的Node* 

数据协议可以用json

也可以用高性能的Google FlatBuffers

Node * FactoryCreater(string type,  string style )
{
    Node * ret = nullptr;

    if (type == "sprite")
    {
        auto ret = Sprite::create("shouzhi_dianji0.png");

        //解析器
        std::unordered_map<string,string> _map_arrt;

        static string NON = "";

        int cursor = 0;
        int las1 = 0, las2 = 0;
        style.append(",");
        for (int i = 0; i < style.size(); i++)
        {
            if (style[i] == ':')
            {
                las1 = i;
            }
            if (style[i] == ',')
            {
                las2 = i;
                string key =  style.substr(cursor, las1 - cursor);
                string value= style.substr(las1 + 1, las2 - las1 - 1);
                _map_arrt.insert(std::make_pair(key, value));
                cursor = las2 + 1;
            }

        }

        //解析完毕,初始化属性
        float x = atof(_map_arrt["x"].c_str());
        float y = atof(_map_arrt["y"].c_str());
        ret->setPosition(x,y);
        float scale = 1.0f;
        if (_map_arrt["scale"] != NON)
        {
            scale = atof(_map_arrt["scale"].c_str());
        }

         
        ret->setScale(scale);

        return ret;
    }


    if (type == "label")
    {

    }

    return nullptr;
}




// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    this->addChild(FactoryCreater("sprite" , "x:100,y:200,scale:0.1"));
    this->addChild(FactoryCreater("sprite", "x:200,y:10"));



    return true;
}
点赞
收藏
评论区
推荐文章
liuzhen007 liuzhen007
3年前
Android如何解析json字符串
前言上一篇文章介绍了服务器用Golang如何解析json字符串,今天我们来看看Android客户端是如何解析json字符串的。正文Golang如何解析post请求中的json字符串(https://www.helloworld.net/p/O917HGeiALU2D)使用java语句如何正确解析json字符串呢?举一个例子,假如我们想从rtc_i
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
kenx kenx
3年前
SpringBoot 默认json解析器详解和字段序列化自定义
前言在我们开发项目API接口的时候,一些没有数据的字段会默认返回NULL,数字类型也会是NULL,这个时候前端希望字符串能够统一返回空字符,数字默认返回0,那我们就需要自定义json序列化处理SpringBoot默认的json解析方案我们知道在springboot中有默认的json解析器,SpringBoot中默认使用的Json解析技术框架是ja
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Redis 数据结构与编码总结(6)
数据结构总结对象对象type属性值type命令输出底层可能的存储结构objectencoding字符串对象OBJ\_STRING"string"OBJ\_ENCODING\_INT\\OBJ\_ENCODING\_EMBSTR\\OBJ\_ENCODING\_RAWint\\embstr\\r
Wesley13 Wesley13
3年前
KK课表抓取教务系统
字符串数据解析太难看login_widget::login_widget(QWidget parent) ://QWidget(parent),ui(new Ui::login_widget){uisetupUi(this);p  (MainWindow)paren
Stella981 Stella981
3年前
PyQuery库使用小结
pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,使用方法:frompyqueryimportPyQueryaspq1.可加载一段HTML字符串,或一个HTML文件,或是一个url地址,例:vpq("<html<titlehello</title</html")
Wesley13 Wesley13
3年前
java解析JavaScript片段
前几天帮某个人抓取某电商网站商品属性的,得到页面后需要解析一个<script内的代码获得其中一个json对象的属性,开始是想字符串截取呢,后来感觉不怎么好,就换成用java解析script了,感觉还行,其中有几个坑,在这里记录下,对于一段js代码,java在解析时,需要补齐其中的空间变量,比如varwindow{}; 还有js中调用的函数
Wesley13 Wesley13
3年前
JSON,异步加载(学习笔记)
JSON是一种传输数据的格式(以对象为样板,本质上就是对象,但用途有区别,对象就是本地用的,json是用来数据传输的,前端与后端的数据通信)JSON是静态类(不需要构造),类似于Math,内部有各种函数   1).JSON.parse();stringjson(解析成对象属性和属性值,可以进行调用)  2).JSON.stringi