中国鹰派
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);
另外, createHandle 函数中,设置range值需要放在后面。
handle.setAttribute('min', 0); handle.setAttribute('max', 800); handle.setAttribute('value', value); // 放在后面
后面。 不然选中时,#shape-attrs 里的range值没有更新。
改成这样更合适些吧。scale为1时,是整数。
var match = /translate\((-?\d+),(-?\d+)\)\srotate\((-?\d+)\)\sscale\((-?\d(\.\d+)?)\)/.exec(transString);
我测试过了,你说的是正确的,不过还有个问题,匹配的时候,属性之间是没有空格隔开的
正确的写法:var match = /translate\((-?\d+),(-?\d+)\)rotate\((-?\d+)\)scale\((-?\d+\.\d{0,2})\)/.exec(transString);
好像是
走进SVG
52643 学习 · 213 问题
相似问题