processing初探

来源:互联网 发布:战地2如何加修改数据 编辑:程序博客网 时间:2024/06/07 18:43

From My Blog (http://bloglong123king.sourceforge.net/?p=386

一、概述

有人说Processing(http://www.processing.org/)是一门语言,不过我认为它只是一个建立在Java语言之上的框架而已。Processing本身是基于Java开发的,我们编写的Processing脚本最后也会被改写成Java文件进行解释执行。

二、为什么说Processing语言本质上是Java语言?

我们在Processing自带的编辑器中编辑好一个项目,选择“导出项目”,我们能看到以下的导出目录结构:processing_export_1

processing_export_2

processing_export_3

 

我们看到,多个.pde格式的源码文件被合并成一个.java源码文件,最后生成一个jar文件。

我们再找一个代码行数简单的example来看一下pde文件和java文件对比:

Brightness.pde

  1. /**
  2.  * Brightness 
  3.  * by Rusty Robison. 
  4.  * 
  5.  * Brightness is the relative lightness or darkness of a color.
  6.  * Move the cursor vertically over each bar to alter its brightness. 
  7.  */
  8.  
  9. int barWidth = 20;
  10. int lastBar = -1;
  11.  
  12. void setup() {
  13.   size(640, 360);
  14.   colorMode(HSB, width, 100, width);
  15.   noStroke();
  16.   background(0);
  17. }
  18.  
  19. void draw() {
  20.   int whichBar = mouseX / barWidth;
  21.   if (whichBar != lastBar) {
  22.     int barX = whichBar * barWidth;
  23.     fill(barX, 100, mouseY);
  24.     rect(barX, 0, barWidth, height);
  25.     lastBar = whichBar;
  26.   }
  27. }

Brightness.java

  1. import processing.core.*; 
  2. import processing.data.*; 
  3. import processing.event.*; 
  4. import processing.opengl.*; 
  5.  
  6. import java.util.HashMap; 
  7. import java.util.ArrayList; 
  8. import java.io.File; 
  9. import java.io.BufferedReader; 
  10. import java.io.PrintWriter; 
  11. import java.io.InputStream; 
  12. import java.io.OutputStream; 
  13. import java.io.IOException; 
  14.  
  15. public class Brightness extends PApplet {
  16.  
  17. /**
  18.  * Brightness 
  19.  * by Rusty Robison. 
  20.  * 
  21.  * Brightness is the relative lightness or darkness of a color.
  22.  * Move the cursor vertically over each bar to alter its brightness. 
  23.  */
  24.  
  25. int barWidth = 20;
  26. int lastBar = -1;
  27.  
  28. public void setup() {
  29.   size(640, 360);
  30.   colorMode(HSB, width, 100, width);
  31.   noStroke();
  32.   background(0);
  33. }
  34.  
  35. public void draw() {
  36.   int whichBar = mouseX / barWidth;
  37.   if (whichBar != lastBar) {
  38.     int barX = whichBar * barWidth;
  39.     fill(barX, 100, mouseY);
  40.     rect(barX, 0, barWidth, height);
  41.     lastBar = whichBar;
  42.   }
  43. }
  44.   static public void main(String[] passedArgs) {
  45.     String[] appletArgs = new String[] { "--full-screen", "--bgcolor=#666666", "--stop-color=#cccccc", "Brightness" };
  46.     if (passedArgs != null) {
  47.       PApplet.main(concat(appletArgs, passedArgs));
  48.     } else {
  49.       PApplet.main(appletArgs);
  50.     }
  51.   }
  52. }

我们发现,pde文件被原封不动地嵌入到了一个java文件中去了。

至此,我们有理由相信Processing其实只是Java语言的扩展而已。

三、怎样用eclipse编辑调试Processing程序?

刚开始尝试Processing时,我只能用打log的方式来调试,现在既然知道了Processing就是Java,我们就可以通过eclipse来调试Processing程序了。

我们先在eclipse中新建一个Java项目,创建一个test.java源码文件,照猫画虎地抄一下上面的Java源码:

  1. import processing.core.*; 
  2. import processing.data.*; 
  3. import processing.event.*; 
  4. import processing.opengl.*; 
  5.  
  6. import java.util.HashMap; 
  7. import java.util.ArrayList; 
  8. import java.io.File; 
  9. import java.io.BufferedReader; 
  10. import java.io.PrintWriter; 
  11. import java.io.InputStream; 
  12. import java.io.OutputStream; 
  13. import java.io.IOException; 
  14.  
  15. public class test extends PApplet {
  16.  
  17. public void setup() {
  18.     background(0);
  19. }
  20.  
  21. public void draw() {
  22.     fill(255,255,255);
  23.     rect(0, 0, 400, 400);
  24. }
  25.   static public void main(String[] passedArgs) {
  26.     String[] appletArgs = new String[] { "--full-screen", "--bgcolor=#666666", "--stop-color=#cccccc", "test" };
  27.     if (passedArgs != null) {
  28.       PApplet.main(concat(appletArgs, passedArgs));
  29.     } else {
  30.       PApplet.main(appletArgs);
  31.     }
  32.   }
  33. }

这时eclipse会提示很多错误,那是因为我们没有包含processing的基础类库。

我们在Java项目上选择属性对话框(Preferences)->Java Build Path->Libraries->Add External Jars..,找到Processing解压目录下的core/library目录下的全部jar文件添加进来,问题就解决了。

进一步去除error及warning,得到最后代码:

  1. import processing.core.*; 
  2.  
  3. public class test extends PApplet {
  4.  
  5. /**
  6.      * 
  7.      */
  8. private static final long serialVersionUID = 8825792954966710768L;
  9. public void setup() {
  10.     background(0);
  11. }
  12.  
  13. public void draw() {
  14.     fill(255,255,255);
  15.     rect(0, 0, 400, 400);
  16. }
  17.   static public void main(String[] passedArgs) {
  18.     String[] appletArgs = new String[] { "--full-screen", "--bgcolor=#666666", "--stop-color=#cccccc", "test" };
  19.     if (passedArgs != null) {
  20.       PApplet.main(concat(appletArgs, passedArgs));
  21.     } else {
  22.       PApplet.main(appletArgs);
  23.     }
  24.   }
  25. }

设置一个断点按F11启动调试,或者Ctrl+F11启动运行一下,都OK。

原创粉丝点击