Processing编程学习指南导读

简介:
前 言
Learning Processing:A Beginner抯 Guide to Programming Images, Animation, and Interaction, Second Edition
本书讲的是什么
本书讲了一个故事。一个关于解放与自由的故事,一个关于逐步了解计算机基础知识的故事。通过编写代码,可以创造属于你自己的多媒体设计,而不必拘泥于已有的软件工具。这个故事不仅仅是为科学家和工程师准备的,同时也是为你准备的。
本书是为谁准备的
本书是为初学者准备的。如果你到目前从未编写过一行代码,那么本书对你来说再合适不过了。本书的前9章会由浅入深地讲授编程的基础知识。你并不需要任何编程的背景知识,只需要有操作电脑的基础知识——打开电脑、浏览网页、运行程序之类的知识就足够了。
由于本书使用Processing进行学习,因此对于那些在视觉领域学习或工作的人来说,它就更加适用了,例如图形设计、绘画、雕塑、建筑、电影、视频、插图、网页设计等。如果你从属于上述领域(在上述领域使用电脑),你很可能精通某个特定的设计软件(很可能不止一个软件),例如Photoshop、Illustrator、AutoCAD、Maya、After Effects等。而本书的意义在于使你摆脱(至少是部分摆脱)现有软件工具的束缚。如果可以创造自己的工具,而不是使用他人的软件,那你能创造出什么?
如果你已经具有一定的编程经验,并且对Processing非常感兴趣,那么本书同样非常有用。本书的前面几章会为你提供一个速成的编程复习资料(和坚实的基础知识),本书的后面则是关于Processing编程的高级话题。
什么是Processing
假设你正在学习CS 101(Computer Science 101)课程,其中可能讲到了Java编程语言的内容。下面是课程中第一个示例程序的输出结果:

一直以来,教授给程序员的基本命令行输出是:
1.文本输入(TEXT IN)→以文本的形式编写代码。
2.文本输出(TEXT OUT)→在命令行显示文本输出。
3.文本交互(TEXT INTERACTION)→用户可以在命令行输入文本,实现和程序的交互。
这个示例程序中的输出“Hello, World!”是一个经典段子,按照惯例,在各种编程语言教学中,“Hello, World”总是作为第一个程序的文本输出。这个示例程序最早出现在1974贝尔实验室的备忘录中,它是由Brian Kernighan撰写的,题名为《Programming in C: A Tutorial》。
学习Processing的优势在于:它自身强调一种更直观并且基于视觉反馈的编程环境,因而它更有助于艺术家和设计师学习编程。
1.文本输入(TEXT IN)→以文本的形式编写代码。
2.视觉输出(VISUALS OUT)→在窗口显示视觉输出。
3.鼠标交互(MOUSE INTERACTION)→用户通过鼠标和程序进行交互(在本书中你会看到更多例子)。
在Processing中,“Hello,World!”很可能如下图所示:

你好,图形!
虽然看上去是相当友好的设计,但是它并没有引人注目的感觉(在这里暂且忽略掉第3步:交互),“Hello, World!”也是这样。然而,这种方式所聚焦的理念(通过即时的视觉反馈来学习)却是截然不同的。
Processing并不是第一个遵循这种范式的语言。1967年,Daniel G. Bobrow、Wally Feurzeig和Seymour Papert 创造了Logo编程语言。一名程序员使用Logo语言编写了一个指令:在屏幕上用龟标生成图形和设计。尔后John Maeda在1999年设计了名为Design By Numbers的语言,该语言使视觉设计师和艺术家以简单、易用的句法来进行编程。
尽管这些语言具有令人惊叹的简洁性和创新性,但它们的功能非常有限。
Processing作为Logo和Design by Numbers的直系后代,于2001年诞生于麻省理工学院媒体实验室的美学与计算研究小组。它是由Casey Reas和Benjamin Fry设计的开源语言,当时他们是著名的计算机艺术家John Maeda的研究生。
Processing是一门开源编程语言,提供了对图片、动画和声音进行编程的环境。学生、艺术家、设计师、建筑师、研究人员和业余爱好者可以使用Processing进行学习、制作原型以及作为生产工具。你可以通过视觉化界面学习计算机编程的基础知识,或者作为软件速写本以及专业化的生产工具。除了该领域的其他相关专有软件之外,Processing为艺术家和设计师提供了一个新的选择。

—www.processing.org
总之,Processing是非常令人惊叹的。首先,它是免费的,你不用花一分钱。其次,由于Processing基于Java编程语言(本书后面的章节将会对此做进一步探讨),因此它是一门十分实用的功能性语言,没有Logo或者Design by Numbers语言的限制,使用Processing几乎可以实现各种功能。最后,Processing是开源的。虽然在大多数情况下这并不会是本书内容的关键细节,可是,随着深入学习Processing,你就会意识到这种开源的理念是非常宝贵的。正是源于此,大量的开发者、教师和艺术家才会聚集到一起分享作品,贡献想法,进而大大拓展了Processing。
快速浏览一下processing.org网站,你就会发现这是一个充满勃勃生机、具有创造力的社区。在这里,初学者和专家通过公开交流创意和作品共享代码。尽管网站上有完整的参考文档,以及数量庞大的示例帮助你快速上手,但是并没有给真正的初学者提供一个系统的详尽教程。本书通过详尽地介绍编程基础知识和探索高级编程话题,可以帮助你参与到Processing这个社区网站,并做出你的贡献。
2012年,Processing基金会(Processing Foundation)成立,它旨在规范Processing软件的目标和理念:“在编程知识越来越重要的今天,努力让来自各行各业的人都能轻松学习编程。”为了实现这个目标,基金会大力支持几种不同语言的软件环境,其中包括Processing(Java)、p5.js(JavaScript)和Processing.py(Python)。虽然本书主要讨论Java框架的知识,但是我也极力向你推荐其他几个编程语言框架(如果你对构建网站感兴趣的话,尤其推荐p5.js)。我同样保留了本书所有示例的p5.js版本,你可以在http://learningprocessing.com上找到。
虽然没有Processing就不可能编写本书,但是你要知道,本书实质上并不仅仅是一本关于Processing的书。编写本书的初衷是教会你编程。我只是选择了使用Processing作为编程的学习环境,但本书所关注的是核心计算编程概念,这些概念将会在你以后学习其他编程语言和环境时,继续带领你前行。
难道我不应该学习    
在空白处填上你想学习的编程语言。你可能曾经听说某门编程语言“Flibideeflobidee”将会是未来前景最广阔的语言。你肯定听出来这是瞎编的,但是我敢肯定你的某个朋友曾经不断跟你讲某门语言是多么功能强大。它是如何使得编程变得如此容易。使用这门语言,5分钟之内你就能实现以前需要花费一天时间才能完成的程序。而且,它在Mac上、个人电脑上,甚至烤面包机上都能运行!你还可以用它编写一个陪你聊天的宠物!而且是用日语聊天!
事情是这样的。那个可以解决你所有问题的神奇编程语言根本不会存在。没有一门语言是完美的,Processing也有与生俱来的缺陷和不足。可是Processing是一个学习编程的很棒的起点。本书传授计算机编程的基本原理,不论是使用Processing、Java、JavaScript、C、Python还是其他语言,它们都会使你受益终身。
当然,对于某些项目来说,其他语言和环境可能更加适合。但Processing对于大部分的项目来说都是相当不错的选择,尤其是媒体相关和基于屏幕的任务。对Processing一个普遍的误解是它只适合于小打小闹,其实并不是这样的:许多人(包括我在内)都在项目自始至终使用Processing。Processing可以用来制作网络应用、博物馆和美术馆的艺术装置、公共空间的展览互动装置。比如,我曾经使用Processing在纽约市军队总部的大厅里制作一个实时的图像视频墙,它展示在120英尺×12英尺(没有错,是英尺!)大的屏幕上。
Processing不仅适合于项目制作,它还非常容易上手,它真的很棒。它是免费的、完全开源的软件;它的界面简洁;它是基于视觉的工具;它还非常有趣;它是面向对象的语言(后面会讲解)。此外,它能够在Mac端、PC端以及Linux机器上运行。
但是Processing的一个短板是对于网页的兼容性不足。2001年,在Processing刚诞生的时候,Java applet是将实时图形项目发布到网页的主要方法。可是到了2015年,Java applet已经不复存在。由Lauren McCarthy倡导的Processing基金会的p5.js项目(http://p5js.org)现在成为一个新的选择。关于这点,本书第21章将会具体探讨。
说了这么多,我就是想告诉你不要再去纠结应该选择哪门编程语言了,应该把精力集中到学习Processing编程的基本原理上。这方面的知识将有助于你超越本书的有限内容,帮助你学习其他任何编程语言。
把想法直接写在这本书上
假如你是一名小说家或者剧本作家,你的写作时间仅仅是坐在计算机前打字的时间吗?大多数情况下并不是这样。或许是晚上躺在床上的时候,脑海中突然出现了一些想法;或许是坐在公园的长椅上惬意地喂着鸽子时,脑海中上演着一幕幕的对话;又或许是有一天晚上在酒吧,你在纸巾上快速勾勒出一个精彩的故事情节。
好吧,其实编写软件、程序、代码并没有什么不同。只是由于编程工作本质上和计算机紧紧捆绑在一起,因此你常常会忘记这一点。但有机会的话,你一定要让你的头脑发散、畅想。在远离办公桌、电脑的时候去头脑风暴一些奇思妙想。就我个人而言,我常常在慢跑的时候完成了编程工作最棒的构思。
当然,使用电脑实际输入代码的部分也是非常重要的。我的意思是,虽然不可能仅仅通过舒舒服服地躺在游泳池里就能完成一个复杂的任务,但如果只是每天伏案工作,面对着刺眼的显示器,这是远远不够的。
所以,随时在书上做笔记就是一个好的方法,这样能锻炼你离开键盘后思考代码的能力。我已在本书中包含了许多填空形式的练习题。(这些练习题的所有答案都可以在本书配套网站http://learningprocessing.com上找到,方便你检查自己的答案。)充分利用本书的空白处吧!每当你有灵感和想法的时候,就迅速把它们写到书上。把本书当成一个练习册或者速写本。(当然,你也可以使用自己的速写本。)
最后我建议,你要花一半的时间在不用电脑的时候阅读本书,另一半时间则是坐在计算机旁,实践本书中的示例。
我应该如何阅读本书
最好是按照章节顺序阅读。第9章之后,你就可以轻松地随便翻看本书了,但是前面几章,建议你按照顺序来读。
本书按照先后顺序教你编程。更高级的阅读方式则是:根据自己的需要跳读,将本书作为一个参考文档来使用。本书的前一半内容都是首先讲解一个示例,然后一步一步分解这个示例中所涵盖的知识点。除此以外,计算机编程的基本原理是按照一个特定的顺序来逐步呈现的,这个顺序是多年来在纽约大学帝势艺术学院的互动电信项目中许多同学反复摸索之后的结果(http://itp.nyu.edu)。
我将本书所有23章内容分为十节课。前面9章介绍了计算机图形学,涵盖了计算机编程的基本原理。第10~12章则暂停讲授新知识,转向讨论如何用增量方法(incremental approach)构建更加大型的项目。第13~23章继续拓展基础知识,并且展示一系列更加高级的话题,涉及3D、直播视频和数据可视化等。
这些内容分为容易理解的几个部分。每节课的末尾,我都准备了一个项目,建议你从单纯阅读本书的过程中转换下思维,尝试将该节课中的全部内容整合为一个完整的项目。我也为这个项目提供了一些建议,但它们真的仅仅是建议而已。
这是一本教科书吗
本书既可用作编程课程导论的教科书,也可以用来自学。
这里,我要再次提及:本书的基本结构直接来自于ITP的“计算媒体导论”课程。如果没有同事和这门课数百名学生的帮助(我多么希望我可以把他们所有人的名字都写在这里),本书是不可能完成的。
坦白讲,本书的内容要比针对初学者的一学期课程要多一些。本书共计23章,我曾经在课堂上详细讲过其中18章内容。可是,不论你是否将本书作为课程教材或是自学读物,你完全可以在几个月里消化本书的知识。当然,你也可以读得更快,但是如果你要在Processing中测试本书的代码,并且完成课后项目,确实是需要一段时间的。那些所谓“10天上10节课就能学会编程”的书看似非常吸引人,但实际并不现实。
下面是一个用14周时间学完本书内容的参考计划。
第1周 第一节课:第1~3章
第2周 第二节课:第4~6章
第3周 第三节课:第7~8章
第4周 第四节课:第9章
第5周 第五节课:第10~11章
第6周 期中!(继续第五节课:第12章)
第7周 第六节课:第13~14章
第8周 第七节课:第15~16章
第9周 第八节课:第17~19章
第10周 第九节课:第20~21章
第11周 第十节课:第22~23章
第12周 最终项目研讨会
第13周 最终项目研讨会
第14周 最终项目展示

本书有测验题目吗
师傅领进门,修行在个人。真正的窍门在于练习,练习,练习。假设你现在是10岁的孩子,在学习小提琴课程,老师肯定会跟你讲每天都要练习。同理,要完成本书提供的练习,如果可能的话每天都要练习。
作为初学者,在学习的过程中,一开始可能并不会提出自己的想法,而这也就是那些练习存在的目的。不过,如果你有自己开发项目的想法,那就跳过练习,尝试去实现它。
大多数练习都是小的演练,几分钟就能完成。有一些则会稍难,可能需要一小时才能完成。在整个学习过程中,有时候可能要暂停学习新知识,花上几小时、一天甚至一周时间来完成一个项目,这也会让你收益颇丰。正如我之前提到的,这就是我这样安排课程结构的用意。我建议你在每节课结束后,暂停阅读,自己用Processing做一些小项目、小练习。本书每节课后面都提供给你项目的建议。
本书所有练习的答案都可以在其配套网站上找到。
本书有配套网站吗
本书的网址是:http://learningprocessing.com。
网站上提供了以下内容:
本书所有练习的答案
本书所有代码的可下载版本
本书所有内容的配套教学视频
书中示例的在线版本(通过p5.js运行)
本书额外的提示和教程
问题以及评论
本书中的许多示例原本是彩色的,并且具有动态特效,因此书中的黑白和静态屏幕截图无法描绘示例的全部效果。当你阅读时,你可以通过浏览器(使用p5.js)查看在线示例,或者下载到你的电脑上在本地运行。
本书中示例的源代码同样可以在Learning Processing github库(https://github.com/shiffman/LearningProcessing/)上找到。我还使用了github issues(https://github.com/shiffman/Learning-Processing/issues)作为系统工具来发现本书中错误,所以如果你发现本书中有任何错误,请在那里给予反馈。你有可能会在本书示例和在线示例之间发现些许差别,但是它们的核心概念是相同的。(例如,为了适合本书的排版布局,书中的示例是以200×200的像素大小呈现的,而在线示例的尺寸可能会相对大一些。)
本书的配套网站并不能取代Processing官方网站http://processing.org。官方网站提供了Processing参考文档和更多的示例,此外,还有一个活跃的论坛。
一步一个脚印
增量开发的理念
在你开始学习编程之前,还有一个方法需要和你讨论一下。它是我学习编程的一个重要驱动力,并且也对本书的编写风格产生了巨大影响。这个方法是由我之前的一个教授提出来的,叫做“增量开发的理念”(philosophy of incremental development)。更通俗地讲,就是“一步一个脚印的方法”(one-step-at-a-time approach)。
无论你是一个新手还是具有几年编程经验的程序员,当你面对任何一个编程项目时,千万不要落入毕其功于一役的陷阱中去。比如,你的目标可能是创建一个这样的Processing程序:使用Perlin噪声按照顺序为3D顶点图形生成贴图。这个图形可以通过神经网络中的人工智能技术实现自行演化。然后通过基于Web的数据挖掘抓取每天的新闻和故事,而这些故事内容的字体颜色用户可以语音控制。
拥有一个宏大的愿景并没有错,但是对你来说很重要的一点是:学会如何将这个愿景分解为几个小的部分然后各个击破。前面的例子有一点荒谬,如果你尝试一次性将那个愿景实现出来,我敢保证你最终不得不用冷敷法治疗你的头痛。
为了进行演示,让我们简化一下,假设你希望编写游戏《Space Invaders》(详见http://en.wikipedia.org/wiki/Space_Invaders)。注意,尽管本书并不是一本游戏编程书,但本书可以传授给你游戏编程的基本方法。遵循前面介绍的理念,你应该已经知道每一次只编写一部分内容,这就要把编写《Space Invaders》分解为几个部分。下面是我的快速尝试:
1.编写宇宙飞船的程序。
2.编写入侵者的程序。
3.编写记分系统的程序。
这里我将程序分为3步!我并没有尝试一次性地解决这个问题。关键就在于将问题分解为尽可能小的部分,有必要的话,甚至可以到极端的地步。毕竟,如果要编写一个诸如《Space Invaders》这样复杂的游戏程序,将其分解为几个相对容易上手的部分,就不会觉得那么不知所措。
请牢记以上内容,接下来我开始着手稍微复杂一点的工作,将第1步分解为更小的部分。在这里我打算编写6个子程序,第一个也是最简单的:显示一个三角形。后面每一步我都会进行小小的改进:移动三角形。随着程序变得愈加复杂,最终我就能够完成整个程序的编写。
1.编写宇宙飞船的程序。
a.在屏幕上绘制一个三角形。这个三角形将会成为宇宙飞船。
b.将三角形置于屏幕的底端。
c.将三角形置于它之前位置的偏右一侧。
d.将三角形变为动态图形,使得它从左侧移动到右侧。
e.仅当按向右的方向键时,三角形才会从左侧移动到右侧。
f.当点击向左的方向键时,三角形从右侧移动到左侧。
当然,这些仅仅是整个《Space Invaders》游戏需要的所有步骤当中的一小部分,但是这阐述了一种重要的思维方式。这种思维方式不但使编程更加容易,而且使得调试(debugging)更加方便。
排除故障指的是发现电脑程序中的故障问题并且修复它们,使得程序正常运转的过程。我想你之前曾经听说过故障(bug)这个名词,比如Windows操作系统在代码深处偶尔会出现微小而奇怪的错误。对于我们来说,故障是一个更加简单的概念:错误。当你尝试编写某个东西时,很有可能程序并不完全如我们所愿地执行,甚至完全不会。所以说,如果你一开始就把所有内容一次性编写完毕,就很难找到这些故障所在。一步一个脚印的方法则允许你每次处理一个故障。
除此以外,增量开发(incremental development)也非常适合面向对象编程(object-oriented programming)方法,这是本书的核心原则。对象(object)这一概念将会在本书第8章进行介绍,它将有助于你以模块化的方式开发项目,同时也为构建和分享代码提供了一个很好的方法。可复用性(reusability)也非常关键。例如,如果你已经为《Space Invaders》游戏编写了一个宇宙飞船的程序,现在想让该程序在行星游戏上运行,你可以抓取你需要的部分(也就是宇宙飞船部分的代码),在新的程序中围绕该部分继续进行开发。
算法
归根结底,计算机编程实际是编写算法。算法(algorithm)是用于解决一个特定问题的一系列有序指令。增量开发(对于你来说,本质上是一种算法)的理念就使得编写一个用于实现你想法的算法更加容易。
开始学习第1章之前,作为一个练习,尝试去写一个关于你每天都会做的事情的算法,比如刷牙。尽量使这些指令看上去非常直白、简单。(比如:将牙刷往左边移动1厘米。)
设想下你需要为一个完全不熟悉牙刷、牙膏以及牙齿的人提供一个完整的指令帮助他完成刷牙任务。这其实就是编写程序了。计算机只不过是一个善于遵循精确指令的智能机器,它并不能理解这个世界。接下来,你就要以一个程序员的身份开始你的旅程、你的故事和你的新生活。你将学习如何与你的计算机朋友交谈。
练习I-1入门练习:编写刷牙指令。
一些建议:
你是否会基于不同的条件做不同的事情?在你的指令中是否会使用词语“如果”(if)和“否则”(otherwise)?(例如:如果水非常凉,那么加入温水;否则,加入凉水。)
在你的指令中使用单词“重复”。例如:上下移动牙刷。重复五次。
同样,注意我是从第0步开始的。在编程过程中,通常是从0开始算起的,因此最好从现在就养成习惯!
如何刷牙
第0步:
第1步:
第2步:
第3步:
第4步:
第5步:
第6步:
第7步:
第8步:
第9步:


目 录

第一节课 开始
第1章 像素
第2章 Processing
第3章 交互
第4章 变量36
4.1 什么是变量36
4.2 变量的声明和初始化37
4.3 使用变量39
4.4 多种变量42
4.5 系统变量43
4.6 随机:多样化为生活增加趣味性44
4.7 使用变量来创建Zoog46
4.8 坐标平移48
第5章 条件语句50
5.1 布尔表达式50
5.2 条件语句:if、else、else if51
5.3 草图中的条件语句54
5.4 逻辑运算符56
5.5 多个鼠标翻转效果的实现58
5.6 布尔变量59
5.7 弹力球62
5.8 物理学基础66
第6章 循环69
6.1 什么是迭代69
6.2 while循环:你唯一真正需要的循环71
6.3 “退出”条件73
6.4 for循环75
6.5 局域变量与全局变量77
6.6 draw()循环内部的循环80
6.7 长出胳膊的Zoog82
第二节课的项目84
第三节课 结构化
第7章 函数86
7.1 将代码分解86
7.2 用户自定义函数87
7.3 定义函数88
7.4 简单的模块化89
7.5 实参91
7.6 传递副本95
7.7 返回类型97
7.8 重新整理Zoog100
第8章 对象103
8.1 掌握面向对象编程103
8.2 使用对象104
8.3 编写饼干模具的程序105
8.4 使用一个对象的具体步骤107
8.5 使用标签进行组合109
8.6 构造函数参数112
8.7 对象也是数据类型115
8.8 面向对象的Zoog116
第三节课的项目119
第四节课 重复性
第9章 数组122
9.1 数组的作用122
9.2 数组是什么124
9.3 声明和创建数组125
9.4 初始化数组126
9.5 数组运算127
9.6 简单的数组示例:蛇129
9.7 对象数组131
9.8 交互式对象133
9.9 Processing的数组函数136
9.10 1001个Zoog137
第四节课的项目139
第五节课 融会贯通
第10章 算法142
10.1 我们现在在哪里?我们将要去哪里142
10.2 算法:跟着你自己的节奏跳舞143
10.3 从概念到部分144
10.4 第1部分:雨水采集器145
10.5 第2部分:相交147
10.6 第3部分:计时器152
10.7 第4部分:雨滴154
10.8 整合157
10.9 为下一步做好准备164
第五节课的项目165
第11章 调试166
11.1 建议1:休息一下166
11.2 建议2:让另外一个人参与进来166
11.3 建议3:简化167
11.4 建议4:println()是你的朋友168
第12章 库171
12.1 库概述171
12.2 内置库172
12.3 第三方库172
12.4 手动安装库173
第六节课 你周围的世界
第13章 数学176
13.1 数学和编程176
13.2 模数177
13.3 随机数178
13.4 概率回顾179
13.5 代码中的事件概率179
13.6 Perlin噪声181
13.7 map()函数184
13.8 角度185
13.9 三角学186
13.10 振荡188
13.11 递归190
13.12 二维数组193
第14章 三维平移和旋转198
14.1 z坐标轴198
14.2 P3D究竟是什么202
14.3 顶点形状203
14.4 自定义三维图形205
14.5 简单的旋转207
14.6 围绕不同的轴旋转209
14.7 scale()函数211
14.8 pushMatrix()和popMatrix()函数212
14.9 用Processing模拟太阳系218
14.10 PShape类220
第六节课的项目222
第七节课 显微镜下的像素
第15章 图像224
15.1 图像入门224
15.2 图像的动画效果226
15.3 我的第一个图像处理滤镜228
15.4 图像数组229
15.5 像素,像素,更多的像素231
15.6 图像处理简介235
15.7 另外一个图像处理滤镜:制作属于你自己的tint()函数236
15.8 写入另外一个PImage对象的像素237
15.9 第二阶段:像素组处理239
15.10 具有创意的可视化242
第16章 视频244
16.1 视频直播244
16.2 已录制的视频249
16.3 软件镜像251
16.4 视频作为传感器和计算机视觉256
16.5 背景消除260
16.6 运动检测263
16.7 计算机视觉库266
第七节课的项目267
第八节课 外面的世界
第17章 文本270
17.1 字符串从哪来270
17.2 什么是字符串271
17.3 显示文字273
17.4 文字的动态效果275
17.5 文字马赛克278
17.6 旋转文字280
17.7 按字符逐一显示文字281
第18章 数据输入286
18.1 字符串的操作286
18.2 拆分和组合288
18.3 处理数据290
18.4 处理文本文件291
18.5 表格数据293
18.6 非标准化格式的数据297
18.7 文本分析302
18.8 XML305
18.9 使用Processing的XML类307
18.10 JSON312
18.11 JSONObject和JSONArray315
18.12 线程318
18.13 API320
第19章 数据流323
19.1 网络通信323
19.2 创建服务器324
19.3 创建客户端327
19.4 广播329
19.5 多用户通信,第1部分:服务器331
19.6 多用户通信,第2部分:客户端333
19.7 多用户通信,第3部分:组合335
19.8 串行通信336
19.9 使用信号交换的串行通信338
19.10 使用字符串的串行通信339
第八节课的项目342
第九节课 制造噪音
第20章 声音344
20.1 基础的声音播放344
20.2 关于声音播放的更多内容348
20.3 声音合成350
20.4 声音分析353
20.5 声音阈值355
20.6 频谱分析358
第21章 导出361
21.1 导出至Web361
21.2 独立的应用程序362
21.3 高分辨PDF文件363
21.4 图像和saveFrame()367
21.5 录制视频367
第九节课的项目370
第十节课 超越Processing
第22章 高级的面向对象编程372
22.1 封装372
22.2 继承374
22.3 一个继承的示例:图形378
22.4 多态性381
22.5 重载384
第23章 Java386
23.1 揭开Processing魔法386
23.2 如果不使用Processing,代码看上去会是什么样子387
23.3 探索Java API389
23.4 其他有用的Java类:ArrayList390
23.5 其他有用的Java类:Rectangle396
23.6 异常(错误)处理398
23.7 Processing之外的Java400
附录A 常见错误402

相关文章
|
2月前
|
Java 开发者 UED
Processing快乐编程
Processing快乐编程
26 0

热门文章

最新文章