感觉源代码SVGEditor.html中有bug

来源:1-4 综合实例:SVG编辑器

中国鹰派

2015-08-11 22:10

老师,你这节课的源代码中,这条语句的正则表达式写得有点问题吧。var match = /translate\((\d+),(\d+)\)\srotate\((\d+)\)\sscale\((\d+)\)/.exec(transString);因为这里属性中的数值有可能是正数、负数、小数啊,但是这个表达式只能匹配都是正整数的情况吧,我觉得应该改成这样:var match = /translate\((-?\d+),(-?\d+)\)\srotate\((-?\d+)\)\sscale\((-?\d+\.\d{0,2})\)/.exec(transString);

写回答 关注

4回答

  • vivian_zhang
    2020-08-19 16:55:52

    另外, createHandle 函数中,设置range值需要放在后面。

    handle.setAttribute('min', 0); 
    handle.setAttribute('max', 800);
    handle.setAttribute('value', value);  // 放在后面

    后面。 不然选中时,#shape-attrs 里的range值没有更新。

  • vivian_zhang
    2020-08-19 16:52:16

    改成这样更合适些吧。scale为1时,是整数。

    var match = /translate\((-?\d+),(-?\d+)\)\srotate\((-?\d+)\)\sscale\((-?\d(\.\d+)?)\)/.exec(transString);


  • 许愿瓶啊
    2018-03-18 21:44:50

    我测试过了,你说的是正确的,不过还有个问题,匹配的时候,属性之间是没有空格隔开的

    正确的写法:var match = /translate\((-?\d+),(-?\d+)\)rotate\((-?\d+)\)scale\((-?\d+\.\d{0,2})\)/.exec(transString);

  • 嗨小二
    2015-12-19 23:10:35

    好像是

走进SVG

SVG是HTML5 中矢量图的标记语言,学习后掌握更多的干货

52643 学习 · 213 问题

查看课程

相似问题