processing.js 学习(五)

把更复杂的对象从js传递给草图

这件事是十分重要的,因为很常用。比如我们用AJAX获得了数据,并要在草图上使用。

事实上,我们可以在草图上用js定义对象,并传递给草图做处理。举例来说,我们给出了下面的这个草图,它可以实现用鼠标点击画点,并把画的点连成线。

1206.html

<!DOCTYPE html>
<html>
    <head>
       <title>more</title>
        <meta charset="utf-8">
        <style>
        </style>
    </head>
    <body>

       <script src="processing.js"></script>
       <canvas data-processing-sources="click.pde"></canvas>

    </body>
</html>

click.pde

ArrayList points;

    ArrayList getPoints() { return points; }

    void setup() {
      size(200,200);
      points = new ArrayList();
      noLoop();
      stroke(255,0,0);
     fill(255);
   }

   void draw() {
     background(200,200,255);
     for(int p=0, end=points.size(); p < end; p++) {
       Point pt = (Point) points.get(p);
       if(p < end-1) {
       Point next = (Point) points.get(p+1);
       line(pt.x,pt.y,next.x,next.y); }
       pt.draw(); }
   }

   void mouseClicked() {
     points.add(new Point(mouseX,mouseY));
     redraw();
   }

   class Point {
     int x,y;
     Point(int x, int y) { this.x=x; this.y=y; }
     void draw() { ellipse(x,y,10,10); }
   }

processing.js 省略

效果如下:
这里写图片描述

加入一些预先定义好的点:
把上面的1206.html加一些东西:

<!DOCTYPE html>
<html>
    <head>
       <title>more</title>
        <meta charset="utf-8">
        <style>
        </style>
    </head>
    <body>

       <script src="processing.js"></script>
       <script type="text/javascript">
    function loadPoints(id, button) {
     var pjs = Processing.getInstanceById(id);
     var points = pjs.getPoints();
     points.add(new pjs.Point(10,10));
     points.add(new pjs.Point(10,190));
     points.add(new pjs.Point(190,190));
     points.add(new pjs.Point(190,10));
     pjs.draw();
   }
        </script>
       <canvas id="sss" data-processing-sources="click.pde"></canvas>
       <button type="button" onclick="loadPoints('sss',true)">load</button>
    </body>
</html>

效果如下
这里写图片描述

JSON

另一种常用的通过js获取数据的的方式就是读取JSON脚本。依旧按照上面的例子,我们把点数据从json中获取。

12060.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>My Processing Page</title>
    <script type="text/javascript" src="processing.js"></script>
    <script type="text/javascript">
        function drawPoints(id,button) {
            var pjs = Processing.getInstanceById(id);
            var json = "{'points' : [{'x': 10, 'y': 10}, {'x': 190, 'y': 10}, {'x': 190, 'y': 190}, {'x': 10, 'y': 190}]}";//$.getJSON("ttt.json");

            var data = eval("(" + json + ")");
            console.log(data);
            if (data) {
                for (p = 0, end = data.points.length; p < end; p++) {
                    var point = data.points[p];
                    pjs.addPoint(point.x, point.y);
                }
            }

        }

    </script>
</head>

<body>
    <canvas id="aaa" data-processing-sources="jsont.pde"></canvas>
    <button type="button" id="drawPoints" onclick="drawPoints('aaa',true)">load</button>

</body>

</html>

jsont.pde

void setup() {
      size(200,200);
      points = new ArrayList();
    }

    void draw() {
      background(200,200,255);
     for(int p=0, end=points.size(); p<end; p++) {
       Point pt = (Point) points.get(p);
       if(p<end-1) {
         Point next = (Point) points.get(p+1);
         line(pt.x,pt.y,next.x,next.y); }
       pt.draw(); }
   }

   void mouseClicked() {
     addPoint(mouseX,mouseY);
   }

   Point addPoint(int x, int y) {
     Point pt = new Point(x,y);
     points.add(pt);
     return pt;
   }

   class Point {
     int x,y;
     Point(int x, int y) { this.x=x; this.y=y; }
     void draw() {
       stroke(255,0,0);
       fill(255);
       ellipse(x,y,10,10);
     }
   }

效果:
这里写图片描述

同理XML也OK,这里就不举例了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
processing.py 是一种基于 Python 的创意编程工具,它是 Processing 的 Python 本。Processing 是一种以可视化为主的编程语言,它的目标是让编程变得更加易于学习和使用。 processing.py 主要是用于制作艺术、动画、交互式图形、音频和视频等多媒体作品。它提供了一个强大的绘图 API,可以让用户轻松地创建各种视觉效果。 以下是 processing.py 的简单教程: 1. 安装 processing.py 可以通过 pip 命令安装 processing.py: ``` pip install processing ``` 2. 创建一个简单的画布 在 Python 文件中导入 processing 库,然后使用 `size()` 函数创建一个大小为 400x400 的画布: ```python from processing import * size(400, 400) ``` 3. 绘制形状 使用 `ellipse()` 函数绘制一个圆形: ```python ellipse(200, 200, 100, 100) ``` 这将在画布上绘制一个半径为 50 的圆形。 4. 添加颜色 使用 `fill()` 函数添加颜色: ```python fill(255, 0, 0) ``` 这将设置绘图工具的颜色为红色。可以在绘制形状之前使用此函数来设置颜色。 5. 添加动画 可以使用 `frameCount` 变量来创建动画。例如,可以使用 `translate()` 函数来移动圆形: ```python translate(frameCount % width, 0) ellipse(0, 200, 100, 100) ``` 这将在画布上绘制一个从左到右移动的圆形。 6. 运行程序 最后,可以使用 `run()` 函数来运行程序: ```python run() ``` 这将打开一个窗口并显示绘制的图形。 以上是 processing.py 的简单教程,它只是介绍了 processing.py 的基础知识,你可以通过更多的文档和示例来学习更多高级技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值