読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

nw.jsでデスクトップアプリを作る(16) - SVG pathをgeometryに変換する(6)

nw.js svg JavaScript

昨日のSVGアニメーションだが、FirefoxとIEでは動作しなかった。原因はSVGのお作法にしたがってなかったから。読み取りのみのプロパティに値をセットしようとしていたから。なぜかChromeは代入できたんだよねぇ。

規格を読むとpathSegListは読み取り専用なのでChromeの動きがおかしいことになるのかな。

interface SVGAnimatedPathData {
  readonly attribute SVGPathSegList pathSegList;
  readonly attribute SVGPathSegList normalizedPathSegList;
  readonly attribute SVGPathSegList animatedPathSegList;
  readonly attribute SVGPathSegList animatedNormalizedPathSegList;
};
    

実際には「m」に相当するSVGPathSegMovetoRelを作るためのファクトリメソッドcreateSVGPathSegMovetoRel()があるので、それで作ったものに変更した値をセットし、pathSegListreplaceItem()でおきかえなければいけないようだ。

これでOKかなと思ったのだがIE11では駄目であった。まあこのアプリはnw.js用なのでクロスブラウザにする必要は全くないのだが、ちょっと気になったので。