极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15160|回复: 0

Processing之旅-----【8课,XML数据类型的使用】

[复制链接]
发表于 2013-5-10 16:25:38 | 显示全部楼层 |阅读模式
好了同学们我们上课,今天接着实践一个新的数据结构,那就是XML。
  1. /**
  2. * 读取 XML 数据
  3. * by Daniel Shiffman.  
  4. *
  5. * 这个例子示范了如何使用loadXML()去取回属于在XML文件中
  6. * 然后生成一个对象从那数据
  7. *
  8. *可扩展标记语言 (Extensible Markup Language, XML) ,
  9. *用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、
  10. *定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
  11. * XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。
  12. *XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
  13. * 本例中XML 是这样的:
  14. *
  15. * <bubbles>
  16.      <bubble>
  17.        <diameter>40</diameter>
  18.        <color red="75" green="255" blue="0"/>
  19.      </bubble>
  20.    </bubbles>
  21. */

  22. // 声明了一个buubble的对象数组
  23. Bubble[] bubbles;

  24. void setup() {
  25.   size(640, 360);
  26.   
  27.   // 给以Xml对象的实力读取XML文件内容,即给xml做初始化赋值操作。【拗口的表达】
  28.   XML xml = loadXML("bubbles.xml");

  29.   // 得到所有子元素并把这些子元素复制给一个XML对象的数组中
  30.   XML[] children = xml.getChildren("bubble");

  31.   // 生成一个新的数组对象还是children的大小
  32.   bubbles = new Bubble[children.length];

  33.   for (int i = 0; i < children.length; i++ ) {
  34.    
  35.     // 保存diameter内容的子元素名为 "Diamater"
  36.     XML diameterElement = children[i].getChild("diameter");
  37.     int diameter = int(diameterElement.getContent());

  38.     // 颜色元素有三个属性
  39.     XML colorElement = children[i].getChild("color");
  40.     // 每一个都是一个int类型从r到b
  41.     int r = colorElement.getInt("red");
  42.     int g = colorElement.getInt("green");
  43.     int b = colorElement.getInt("blue");

  44.     // 生成一个新的Bubble对象并且从XML文件中进行初始化赋值
  45.     bubbles[i] = new Bubble(r, g, b, diameter);
  46.   }
  47. }


  48. void draw() {
  49.   background(255);

  50.   //显示并移动气泡
  51.   for (int i = 0; i < bubbles.length; i++ ) {
  52.     bubbles[i].display();
  53.     bubbles[i].drift();
  54.   }
  55. }
  56. //一个起泡类
  57. class Bubble {
  58.   
  59.   float x,y;//float类型的x,y 气泡的位置
  60.   float diameter;//气泡的直径
  61.   color c; //气泡的颜色
  62.   
  63.   Bubble(float r,float g, float b, float d) {
  64.     x = width/2;
  65.     y = height/2;
  66.     c = color(r, g, b, 204);
  67.     diameter = d;
  68.   }

  69.   // 显示气泡
  70.   void display() {
  71.     noStroke();
  72.     fill(c);
  73.     ellipse(x, y, diameter, diameter);
  74.   }
  75.   
  76.   // 气泡向上飘
  77.   void drift() {
  78.     x += random(-1, 1);
  79.     y += random(-1, 1);
  80.     x = constrain(x, 0, width);
  81.     y = constrain(y, 0, height);
  82.   }
  83. }
复制代码

本例中使用了一个XML文件内容如下:
[pre lang="XMl" line="1"]<?xml version="1.0"?>
<bubbles>
  <bubble>
    <diameter>40</diameter>
    <color red="75" green="255" blue="0"/>
  </bubble>
  <bubble>
    <diameter>20</diameter>
    <color red="255" green="75" blue="25"/>
  </bubble>
  <bubble>
    <diameter>80</diameter>
    <color red="100" green="150" blue="200"/>
  </bubble>
</bubbles>[/code]


好了同学们,这节课就上到这里。下课!{:soso__13766225770624999893_7:}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 00:40 , Processed in 0.045021 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表