p5.js 状态管理

本文简介

带尬猴,我是德育处主任


原生 canvas 提供了 save()restore() 两个方法去管理画布状态。p5.js 作为一个 canvas 库,也理所当然的提供了状态管理的方法。在 p5.js 里这两个方法叫 push()pop()

本文主要讲解 p5.jspush()pop() 的用法。

想了解原生 canvas 状态管理,推荐阅读 《canvas 状态管理》



p5.js 的 push 和 pop

简单来说,状态管理可以理解为游戏中的存档。

p5.js 中,push() 提供了“存档”功能,pop() 提供了“读取存档”的功能。

那么“存档”到底能存什么内容呢?常见的存储内容是样式和变形。

比方说,你一开始设置了正方形的填充色是绿色,边框粗细是10,然后创建了一个正方形。之后你还想创建其他正方形,而且希望使用 p5.js 默认的样式,而不是使用绿色正方形。那么你可以在设置样式之前使用 push() 打一个标记,之后就可以在你希望的地方使用 pop() 读取之前的标记所记录的样式和变形状态。

看代码可能更直观一点:

file

// 创建画布
function setup() {createCanvas(500, 500)background(255)
}function draw() {push() // 打标记(存档)fill(0, 255, 0)strokeWeight(6)square(10, 10, 30)pop() // 读取存档square(60, 10, 30) // 此时的正方形是默认样式
}

上面的例子中,在设置样式之前使用了 push() 进行“存档”,在创建第二个正方形之前使用了 pop() “读取存档”,所以右侧的正方形使用了默认的样式。


除了样式能被“存档”之外,变形(变换操作)同样也可以“存档”。

我用旋转举例。

file

// 创建画布
function setup() {createCanvas(500, 500)background(255)
}function draw() {push() // 打标记(存档)// 旋转 45度let angle = 45 * Math.PI / 180rotate(angle)square(60, 10, 30)pop() // 读取存档square(60, 10, 30) // 此时的正方形是默认样式
}

如果没有使用 push()pop() ,那么这个例子中的两个正方形都会被旋转。


以上就是 p5.js 的状态管理功能。这是原生 canvas 就已经提供的能力,想了解原生方面的知识可以看 《canvas 状态管理》



推荐阅读

👍 《p5.js 光速入门》

👍《p5.js 使用npm安装p5.js后如何使用?》

👍 《canvas 状态管理》 代码仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/170662.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于java的ssm框架农夫果园管理系统设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

python爬虫入门(四)爬取猫眼电影排行(使用requests库和正则表达式)

本例中,利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。 1.目标 提取出猫眼电影 TOP100 的电影名称、时间、评分、图片等信息,提取的站点 URL 为 http://maoyan.com/board/4,提取的结果会以文件形式保存下来。 2.抓取分析…

vscode推送gitee方法

有一套uni-app代码需要修改,版本控制使用vscode的git功能,远程库在gitee上。 1、设置vscode中git.exe路径 由于git使用了绿色便携版(PortableGit-2.42.0.2-64-bit.7z.exe),vscode未识别到git安装路径,需要…

OKLink携手CertiK在港举办Web3生态安全主题论坛

2023年10月23日,OKLink与CertiK共同发起的Web3生态安全主题论坛在香港铜锣湾拉开帷幕。本次论坛由OKLink和CertiK主办,香港投资推广署独家支持,聚焦如何构建安全可靠的Web3生态系统议题,同时深入剖析这一进程中所面临的潜在挑战。…

OkHttp网络框架深入理解-SSL握手与加密

OkHttp简介 由Square公司贡献的一个处理网络请求的开源项目,是目前Android使用最广泛的网络框架。从Android4.4开始HttpURLConnection的底层实现采用的是OkHttp。 特点: 支持HTTP/2并允许对同一主机的所有请求共享一个套接字通过连接池,减少了请求延迟…

每日汇评:黄金争取本周收于2000美元上方

在周五美国个人消费支出通胀之前,金价巩固了周四的双向价格走势; 在市场情绪改善之际,美元与美债收益率一同下跌; 黄金价格在日线图上确认了一个多头标志,相对强弱指数仍然指向更多的上涨; 周五早盘&#x…

万能鼠标设置 SteerMouse v5.6.8

鼠标可谓是用户们在使用电脑时候的必备外接设备呢!适合你自己的鼠标设置也绝对能够优化你的Mac使用体验!想要更好的Mac体验就试试用Steermouse Mac版吧。它通过软件来自由设置你的鼠标操作!在这款万能鼠标设置工具中,用户可以在偏…

Hadoop3.0大数据处理学习4(案例:数据清洗、数据指标统计、任务脚本封装、Sqoop导出Mysql)

案例需求分析 直播公司每日都会产生海量的直播数据,为了更好地服务主播与用户,提高直播质量与用户粘性,往往会对大量的数据进行分析与统计,从中挖掘商业价值,我们将通过一个实战案例,来使用Hadoop技术来实…

【STM32】HAL库ADC多通道精准测量(采用VREFINT内部参考电压)

【STM32】HAL库ADC多通道精准测量(采用VREFINT内部参考电压) 文章目录 多通道测量VREFINTADC采样周期多通道配置 附录:Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作…

【蓝桥杯选拔赛真题03】C++输出字母Y 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++输出字母Y 一、题目要求 1、编程实现 2、输入输出 二、算法分析

GMT中标注特殊字符:平方,%,±号,希腊字母

在gmt中文社区的官网,我们可以得到以下的特殊字符表,通过在cmd命令窗口输入以下命令 gmt get PS_CHAR_ENCODING 查到你所安装的GMT的默认字符编码方式。如下图所示,本人是默认的ISOLation1 编码。 下面是一些具体的特殊字符的代码与标注效果…

Postgresql在jdbc处理bit字段的解决方案

问题: bit如果长度为1,则会默认为布尔型(1-true 0-false); bit如果长度大于1,则会默认为bit类型,但是代码中以前常用的两种set方式,会报错 第一种方式: ps.setObject(i1,…

Facebook账号被封?那是因为没做对这些事

Facebook是全球最大的社交媒体平台之一,拥有数十亿的全球用户。它的主要产品包括Facebook(面向个人用户的社交媒体平台)、Instagram、WhatsApp和Messenger。同时他也是美国数字广告市场的主要参与者之一,其广告平台吸引了数百万广…

超越YOLOv8?基于Gold YOLO的自定义数据集训练

Gold-YOLO的出色性能是对Noahs Ark Lab团队的奉献和专业知识的证明。它不仅超越了其前身YOLOv8,还为实时目标检测设定了新标准。凭借其闪电般快速的处理能力和出色的准确性,Gold-YOLO承诺革命化一系列应用,从自动驾驶车辆到监视系统等等。 我…

下载视频号安装,下载视频号安装到手机上?

在数字化时代,随着社交媒体的蓬勃发展,视频内容正成为品牌传播和用户吸引的重要方式。而作为当下最热门的短视频平台之一,视频号为用户提供了创作、分享和推广优质内容的机会。如果您还不了解视频号视频或想进一步了解如何下载视频号视频&…

随笔:使用Python爬取知乎上相关问题的所有回答

项目中数据分析的需要自己从知乎某个专门的问题上爬数据,但众所周知,知乎的问题的显示方式有点胃疼(指滑动后下翻加载更多回答,还经常卡住),翻了翻网上的教程发现有的要么就是很老了要么就是付费的&#xf…

【Linux】Centos yum源替换

YUM是基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 CentOS 8操作系统版本结束了生命周期(EOL)&#xff0…

四、安装vmtools

1.介绍 1.vmtools安装后,可以让我们在windows下更好的管理vm虚拟机 2.可以设置windows和centos的共享文件 2.安装步骤 1.进入centos 2.点击vm菜单->install vmware tools 3.centos会出现一个vm安装包,xx.tar.gz 4.拷贝到/opt 5.使用解压命令tar&…

elementUI 特定分辨率(如1920*1080)下el-row未超出一行却换行

在1920*1080分辨率下, el-col 内容未超出 el-col 宽度,el-col 不足以占据一行,el-row 却自动换行了(其他分辨率没有这个问题)。 截图: 排查: el-col 内容没有溢出;没有多余的 pad…

【Overload游戏引擎细节分析】PBR材质Shader

PBR基于物理的渲染可以实现更加真实的效果,其Shader值得分析一下。但PBR需要较多的基础知识,不适合不会OpenGL的朋友。 一、PBR理论 PBR指基于物理的渲染,其理论较多,需要的基础知识也较多,我在这就不再写一遍了&#…