位置: 编程技术 - 正文

适用于javascript开发者的Processing.js入门教程(适用于分析原因的工具有哪些)

编辑:rootadmin

推荐整理分享适用于javascript开发者的Processing.js入门教程(适用于分析原因的工具有哪些),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:适用于英语,适用于Javassm的前端,适用于小企业的财务软件,适用于干眼症的眼药水排名,适用于英语,适用于分析原因的工具有哪些,适用于干眼症的眼药水排名,适用于分析原因的工具有哪些,内容如对您有帮助,希望把文章链接给更多的朋友!

这个入门指导是为javascript开发者写的。读这个文档之前,你最好掌握javascript和web开发编程,并还会非常基本的 Processing 知识。目录:为没有耐心看长篇大论的人准备: 如果你很着急入门,那么你就需要知道以下几点: 1、Processing.js 把 Processing 代码转变成能够在浏览器端运行的javascript代码,实质是通过<canvas>标签来实现绘图的; 2、为了使用它,你的首先下载 Processing.js; 3、创建你的 后缀名为".pde"的 Processing 文件,它和通常你创建的普通文本文件一样,例如: hello-web.pde 4、创建一个 html 页面,然后在页面里外引用 Processing.js文件,再添加一个<canvas>标签,该<canvas>标签上指明有你的 sketch file(顾名思义,草图文件,就是Processing 文件),sketch file 可以有多个文件,多个文件用空格隔开。例如:

加载你的 web 页面,processing.js 将解析、翻译 sketch file,然后你的sketch file就会运行在浏览器里。Processing.js的来源?Processing为何物? Processing 语言原先被MIT创建,被作为多媒体实验室 和美学&计算机组的一部分。借助Processing能打通软件开发者,艺术家,数据可视化工程师们之间的隔阂,并且能够让编程人员和非编程人员非常容易地胜任视觉化工作。Processing 是用java创建的,你可以把它认为是一种被简化了的java,并且带被简化了的用来绘画和绘图的API。Processing 能在web端做点什么? Processing 拥有大型并且和活跃的社区群体,他们擅长创建2D和3D图象,可视化数据套件,音频,视频等等。因为HTML5,web端拥有了 canvas,audio,video,这些原先只能通过flash 和java插件拥有的功能。与此同时,高级的javascript引擎使得javascript 可以完全胜任以前做起来很慢的事情。 通过把Processing语言移植到web端,Processing 和 web社区都会收益。对于Processing来说,这意味这源码不仅可以在桌面上工作,而且可以在跑在浏览器上。对于web社区来说,一个新而成熟并且接近全功能的图象编程语言从而诞生了。 <canvas>元素对于直接用javascript提供的接口来开发的编程人员来说,这些原生接口太低级了,所以更高级的库就是必要的。Processing.js就能够被当作是这样的简化操作2D和3Dcanvas的库。学会processing,需要多少工作要做 Processing语言小而完整,所以非常容易学。本文档不仅仅尝试去教你Processing,还会鼓励你去寻找 Processing的规范教程,书和例子。任何Processing代码或者概念都应该映射到Processing.js里(下边列出的除外)。你可以跳过Processing赞成的java语法的javascript,使用纯javascript来与Processing的画图API一起使用。使用Processing的方式 Processing.js创建的初衷是能够让Processing开发者和Processing代码(通常是指 sketches)不用修改就可以在web端运行。因此,被推荐的方式就是用Processing.js来写processing 代码,然后通过Processing.js转换成javascript后运行它。 随着时间的推移,一些web开发者也开始使用processing.js,他们就要求设计的API从Processing 语脱离出来使用。因此,我们提供一种可以用纯javascript语言来开发的方式,并且可以使用Processing的方法和对象。注意:Processing.js是放在首位的,并且是Processing向web开放的最重要的一部分,具有有利于兼容Processing的设计决定权。它不是被设计成一个通用的HTML 画图库。已经说过,它是可以当作canvas高级画图API来用。 接下来我们讨论下在web页面里使用的各种Processing.js方法。写纯 Processing 代码 这种写法是使用Processing.js的首选方法,并且已经在 Processing.js for Processing Devs quick start guide 做了长篇的介绍。概括总结如下: 1、下载 processing.js 2、创建一个单独的 Processing 文件,或多个文件,名字可以随便叫,只要后缀名是".pde"就行。 3、创建一个web页面,页面包括 Processing.js 和 <canvas>标签,<canvas> 的信息含有 sketch file(s)的路径和用空格隔开的Procesing 文件名列表,并且这些列表名是放在canvas的属性data-processing-sources上。例如:

当页面加载完(on page load),processing.js将会自动浏览web页面的document,去查找<canvas>的属性data-processing-sources,然后用XMLHTTPRequest去下载 这些文件,将它们塞进从porcessing到javascript的翻译器,翻译后的javascript将会通过eval 函数来执行。预编译 processing 代码 为 javascript Processing.js 自动下载并将所有Processing 代码转成 javascript。它做这些是使用Processing.compile()方法来完成的,并且 那些相关的processing构建工具 或者实用工具也可以做同样的事情。 为了获得 从Processing 代码编译后的代码(例如,JavaScript适用于processing.js运行),请按如下操作:

例如,转化如下的Processing 代码 会生成 在它之下的 编译的来的javascript代码:

只写 javascritp的 processing.js code 前面的方法把 processing 代吗生成了 javascript 代码,但是你也可以单独写javascript。processing.js的解析器将Processing代码转化成javascript方法,然后运行它。因此,完全有可能跳过Processing代码,只写javascript 方法,将方法传给一个Processing实例。这有个例子如下:

这儿是创建了一个 sketch 方法,这个方法就和解析器生成的代码一样。这个方法需要一个参数,它是一个指向某个由Processing构造器生成的processing对象(例如,Processing运行时对象)的引用,任何 Procesing方法或者对象都一个作为它的属性来访问。一旦这个方法完成,并且通过,随着就有一个引用指向canvas,一个引用指向 Processing构造器(记得用"new")。写一个 Processing 和 javascript结合的文件 人们经常问的第一个问题就是processing.js是否可以读取来自正在运行Processing sketch的文件的值。或者反过来的观点。答案是肯定的。 Processing.js 转化 Processing 代码 成一个含有函数闭包javascript代码。所有你创建的变量和方法没有被绑定到全局变量上(即:window)。然而,你仍然可以访问他们。1)、从Processing里访问 javascript对象 从Processing代码转化成javascript并且和其他函数一样运行起来,所有Processing代码都可以访问全局对象。这意味着你可以在全局脚本模块里创建一个变量或者方法,它们就可以自动被Processing来访问。考虑这样一个例子:首先是 Processing 文件,mixed.pde:

接下来是web页面:

适用于javascript开发者的Processing.js入门教程(适用于分析原因的工具有哪些)

这里 Processing.js允许使用的变量和方法声明在 Processing代码的外边。 2)、javascript 和 Processing代码的混合 前面的例子使得javascript和processing代码各自放在单独的文件里,当它们之间的界限不是分的很近时。因为Processing.js在转化代码时,也可能直接将他们直接混在一起。Processing.js解析器保留包含在Processing代码里的 javascript不变,这样就允许开发者能写processing和javascript的混合代码(注意:这也就是为什么 processing.js里没有使用纯processing解析器的原因)。这是一个之前也是用这个方法写的例子:

有些javascript语法很难用这种方式混在一起写(例如:正则语法)。如果是那样的情况的话,你可以简单地将纯javasript代码移到一个<script>代码块里,然后像上边“Accessing JavaScript Objects from Processing”描述的那样来访问它。 3)、从javascript里访问 processing 得出个结论是从Processing 代码里访问javascript比反过来要容易的多,因为被Processing解析器创建javascript没有直接暴露在全局对象里,因此你只能通过Processing.instances 的属性来访问。 Processing 的构造器一直都在监视实例的创建,并且使得他们可以使用getInstanceById()方法。默认,当<canvas>有属性 data-processing-source时,它的id将会作为Processing 实例的唯一识别负。如果没有id属性,你可以用Proessing.instance[0]来访问。 当你有一个能够访问Processing实例的引用时,你就可以调用它像这样:

在DOM结构中有2个按钮,他们被用来让用户选择开始或暂停正在运行的Processing sketch.他们直接在javascript中控制Processing实例(在页面里你可能有多个,或者藏在div中),通过调用Processing的方法:loop()和noLoop()。这些Processing 的方法可以在其他的文件中找到。作为一个使用Processing.js的开发者必须知道的事情: 当 Processing.js试图去完全兼容 Processing时,就有些不同的事情或者需要解决办法。我们也增加了一些web规范的功能来使Processing更容易被使用。 这里有一些技巧和提示在你开始使用Processing.js做复杂的sketch时可能有帮助。Processing.js提供通过“externals”属性来访问各种 DOM/javascript对象 每个Processing 实例(即:Processing.instances)包含有一个"external"属性,它是一个对象,包含各种指向非常有用的非Processing 的DOM/javascritp 对象,例如:

如果一个除法表达式期望产生一个整型值,那么这可能需要显式转换 当将Processing代码转化成javascript,涉及整型 vs 浮点型的除法的时候,有一个有bug的class会出现这个问题。在Processing代码中出现某个东西直接除以整数的代码块,当被转化成Processing时,可能有时出现问题,因为,整型编程双精度型,被引入了一个小数部分。修补这个bug的方法是 显式转换任何除法,正如展示的做法:

Processing.js有个欺骗在模拟 Processing的异步输入输出 Processing 使用一个同步输入输出的模型,这就意味着 像loadImage()方法这样,需要相对长时间去执行,然而当他们执行期间,又没有任何事发生,程序等到它loadImage()执行完才去执行下一行语句。这就意味这可以依靠像loadImage()这样的方法返回的值用在接下来的代码中。 但是web浏览器却不是这样的,它使用的是异步输入输出模型,这意味着加载外部资源的方法不能使得程序等到他们加载完再执行。为了实现Processing的load方法,你不得不使用一个特殊的Processing的指令。 Processing.js指令提示浏览器,指令是写在注释里而不是Processing自身代码。这是一个典型的 Processing sketch,它需要同步加载一个图片然后画出它:

这些代码在含有Processing.js的浏览器里将不会执行,因为图片文件 picture.jpg被加载完之前就被调用了。修补这个bug的办法是让在sketch 开始执行前就把图片加载好,并且缓存起来,就是所说的预加载技术。这是修改后的代码:

注意:放在代码顶部的额外的注释行。"@jps"指令是给Processjing.js用的,不是给开发者用的。可以把它认为成额外的代码行,它们将在程序执行前就被执行了。 如果你有多个图片被加载,可以使用如下列表:

Processing.js需要更多的注意在变量的命名上比Processing javascript其中一个最强大的特性就是它的动态,弱类型的性质。因为java是强类型的语言,所以Processing也是,他们能重复命名而不用还怕产生歧义(例如:方法的重载),Processing.js就不行。不能进入javascript的内部工作,所以对Processing.js的开发者来说,最好的建议就是不要用 function/class/etc/,也不要用来自Processing的名字来命名变量。例如,一个叫 line的变量可能看起来合理,但是它会导致问题,因为它和Processing与Procesing.js内置的函数名line()一样。当要覆盖重载的父类方法时,Processing需要你的帮助如果你的代码使用子类覆盖一个或多个父类里重载的方法,你需要“假”覆盖,因为,每个方法签名,你通常就没改动过:

尽管在Processing里 你不需要实现拥有(float,float)签名的空方法doSomething,但是这样做几乎是必须的,这是为了确保Processing.js在调用方法时不被搞晕。直接将Processing 代码放在web页面里也是可以的 在canvas上,用一个 data-processing-source属性包含Processing.js加载的外部文件的做法是首选,但是推荐的方式在web页面里外引用脚本。但是写成行内引用也是可以的。 把上边例子的代码作为行内引用的方式,有必要的改动一点:

这些代码是更复杂了,因为它没有指出那个canvas配那个脚本文件(即:你可以在一个页面引用多个Processing sketch,同样也可以有多个canvas)。也没有说明脚本的"type"属性,这个属性是用来区别javascript和Processing代码的(浏览器将忽略 Processing 脚本)。最后,注意:"id"和"target"属性的用法,它俩是用来连接Processing脚本和相关的canvas的。

标签: 适用于分析原因的工具有哪些

本文链接地址:https://www.jiuchutong.com/biancheng/380343.html 转载请保留说明!

上一篇:JavaScript设计模式经典之命令模式(js设计模式有什么用)

下一篇:javascript的正则匹配方法学习(js正则 \w)

  • 简易计税方法能开专用发票吗
  • 房产税的计税依据包含增值税吗
  • 农机合作社项目复核报告
  • 为什么要进行建筑工程预算
  • 付款给对方的会计分录
  • 退回资本金要交税吗
  • 金税盘显示已到锁死期,未到汇总期是什么原因
  • 应收账款核销的会计处理
  • 其他应付款年终怎么结转
  • 增值税专用发票抵扣联
  • 不同组织的区别主要体现在哪些方面
  • 业务招待费所得税前扣除标准
  • 不在境内劳务是否付企业所得税
  • 承兑汇票的贴现费用怎么计算
  • 计提贷款损失准备金遵循以下原则
  • 未使用房子需要交物业费嘛
  • 纳税义务未发生是什么意思
  • 收到电费发票做账摘要怎么写
  • 付给其他公司的利息怎么做账
  • 以公司名义办宽带怎么办
  • 问10个问题
  • 工程款发票备注栏必须填写吗
  • 苹果怎么充电更好
  • com2us密码找回
  • 公司向法人借款会计分录
  • 企业老板机票怎么报销记账
  • 认缴制下实收资本可以一直为零吗
  • php入门基础教程
  • linux 文件夹压缩
  • 分公司吸收新股怎么办
  • 携税宝费用可以抵扣增值税吗
  • 会计凭证应该怎么写
  • 年终奖一般发什么奖品
  • 财政发票可以报销吗
  • php代码规范七大原则
  • 税收优惠方式有几种
  • 固定资产折旧计算方法公式大全
  • 对于异步电动机国家标准规定3kw
  • sed指令可以打印文件的奇数或偶数行
  • 帝国cms适合建什么站
  • 权益法转换为成本法
  • 外购货物用于在建工程分录
  • python中map和filter有啥区别
  • 会计科目设置怎么操作
  • dedecms标签怎么用
  • 未使用固定资产有哪些
  • 经营性应付项目的增加为什么调减
  • 产品成本包括哪些
  • 库存商品毁损的会计分录
  • 合并报表中的抵消分录是什么意思?
  • 加班餐费和误餐费的区别
  • 税前扣除原则和扣除金额
  • 2013年11号公告企业政策性搬迁
  • 销售货物并提供安装服务是混合销售吗
  • 出库单上面的价格是什么价格
  • 会计学主要是学什么
  • 仓库记录
  • mysql字符集的作用
  • sqlserver2000数据库文件在哪个文件夹
  • win7系统宽带连接651
  • u盘安装ubuntu找不到硬盘
  • 1.cpp执行的是什么文件
  • win7如何访问xp
  • qctray.exe - qctray进程 是什么文件 作用是什么
  • messengerd
  • win7安装office2016报错
  • Win10预览版更新弹窗如何关闭
  • win7系统开机后桌面黑屏
  • cocos2dx4.0教程
  • es6展开符
  • linux shell脚本命令
  • 学习英语
  • js模拟touch
  • jquery显示图片
  • [置顶]游戏名 TentacleLocker
  • 四川灵活就业医保每月返多少钱
  • 江苏印花税申报操作流程
  • 年度纳税申报基础信息表怎么填
  • 深圳市税务网上注销流程图
  • 财政法和经济法的关系
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设