【问题标题】:How to parse SVG source file by groups如何按组解析 SVG 源文件
【发布时间】:2013-04-19 15:54:36
【问题描述】:

我正在为我的游戏创建关卡并使用 Inkscape 和 SVG 作为源文件格式。我可以逐个解析对象但不能分组,假设我只想解析组“objects_2”怎么做?

  <g id="objects_1">
    <object y="100" x="65" height="40" width="40" />
    <object width="40" height="40" x="212" y="200" />
    <object y="105" x="355" height="40" width="40" />
  </g>

  <g id="objects_2">
    <object y="150" x="100" height="40" width="40" />
  </g>

【问题讨论】:

  • 全部读入,然后遍历内存中的 xml。取决于您如何加载 xml,即 nsxmldocument 或 tinyxml
  • 谢谢@LearnCocos2D 你能给我链接来展示如何做到这一点.. 这是我迭代每个元素的代码pastie.org/7670654
  • 用 x,y,width,height(或者只是一个 CGRect)创建一个类 SVGObject。为每个组创建一个实例,并将其放入以组 id 为键的字典中。然后您将它们全部保存在内存中,并且可以通过它们的键访问字典中的各个组。 XML 不利于随机访问,因此您需要创建 XML 结构的内存表示。
  • 谢谢@LearnCocos2D 它运行良好

标签: objective-c parsing svg cocos2d-iphone inkscape


【解决方案1】:

要浏览 DOM 结构,有两种快速的方法:

  1. jQuery var svgObject = jQuery('#objects_1')svgObject[0] 返回第一个对象

  2. javascript var svgObject = document.getElementById('objects_1')svgObject.children[0] 是第一个子对象

如果您已经熟悉 jQuery,请坚持使用它,因为在原生 JS 和 jQuery 之间切换可能会令人困惑,尤其是在语法相似的情况下。

【讨论】:

    猜你喜欢
    • 2020-06-12
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 2021-10-02
    • 2018-09-22
    相关资源
    最近更新 更多