Pixi.js学习 (五)动画效果与变量逻辑控制

目录

前言

一、动画效果

1.1 帧频

1.2 帧频函数

二、变量逻辑控制

2.1 定义变量的语法

2.2 使用变量控制逻辑

2.3 使用变量控制追加效果

三、实战

例题一:完成天天酷跑

例题一代码:

总结


前言

为了提高作者的代码编辑水品,作者在使用博客的时候使用的集成工具为 HBuilderX。

下文所有截图使用此集成工具,读者随意。

此系列文章需要:HTML ,JavaScript 基础知识

操作系统:

版本    Windows 11 家庭中文版
版本    23H2
安装日期    ‎2024/‎5/‎28
操作系统版本    22631.3593
体验    Windows Feature Experience Pack 1000.22700.1003.0


一、动画效果

动画效果的实现原理:动画是由多张连续的图片以超快的速度(人类肉眼无法察觉)切换看到的视觉效果

1.1 帧频

就是影像动画中最小单位的单幅影像画面,相当于电影胶卷的每一格镜头

一帧就是一副静止的画面,练习的帧就形成了动画,如电视图像。

帧频:每秒钟放映或者显示的图片的数量。

FPS:每秒传输的帧数,FPS值越高,画面越流畅

刷新率:单位Hz,60Hz表示每秒可以扫描刷新60次,最高播放60帧。

运行效果:如果能够做到手动快速点击,移动效果就是动画。 可将手动点击改为自动控制。就可以实现真正的动画效果了。

1.2 帧频函数

帧频函数:被程序自动反复调用,每秒钟被调用60次。

			//当函数每执行一次,飞机上升十个单位
			function move(){
				plane.y -= 10;
                //如果飞机超过边界返回原点
				if(plane.y<-100){
				    plane.y=600;
				 }
				
			}
            //添加函数
			app.ticker.add(move);

运行效果:


二、变量逻辑控制

变量:可以保存数据,变量中存储的数据可以变化 常量:程序中出现的固定的数值,例如某个元素的x坐标为200,某个元素每次移动1px的距离 使用变量替换常量,达到通过改变变量的值控制元素的变化。

2.1 定义变量的语法

//在javascript中的变量可以存储任意类型的数据【弱类型】

var 变量名;

var 变量名;//定义变量
变量名 = 值;//为变量赋值 3
//定义变量同时赋值
var 变量名 = 值 ;


var a = 10;// a表示整数10
var b =  new PIXI.Text();//b表示文本元素

使用变量时的注意事项

1、先定义再使用

2、javascript中的var变量为全局变量,作用范围在整个应用中   

3、变量可以重复定义但新的变量会替换旧变量(旧变量将无法使用)

2.2 使用变量控制逻辑

使用变量替换常量,通过改变变量的值让元素产生变化

根据变量所存储的值不同,执行不同的逻辑代码

下面的代码就是使用变量控制常量,改变飞机速度。



			//设置飞机速度
			var planespeed=2;
			function planemove(){
				plane.y += planespeed;
				if (plane.y > 500 ) {
					plane.y = 0;
				}else if (plane.y < 0) {
					plane.y = 500;
				}
				    
			}
		
			var speed=new PIXI.Text("速度:"+0);
			speed.x=280;
			speed.y=410;
			app.stage.addChild(speed);
			
			//点击上键增加速度			
			shang.on("click",speedup);
			function speedup(){
			    planespeed += 1
			    speed.text="速度:"+planespeed;
			}
			//点击下键减少速度			
			xia.on("click",speeddown);
			function speeddown(){

				if(planespeed>0){
				    planespeed -= 1			    
			}
			speed.text="速度:"+planespeed;
		}
			


			

在这串代码中,我们先定义了速度这个变量

//设置飞机速度

var planespeed=2;

又在后面函数中通过对变量的增减分别实现了速度的增加和减少。

没有使用具体的数值,而是使用变量作为中转,这种思想就是使用变量控制逻辑。

2.3 使用变量控制追加效果

接下来我们先实现以下代码:

  • 1.创建应用,穿800,高500
  • 2,创建并添加相对应元素
  • 3.小鸟一直向右运动,超出屏幕右边界,重新回到屏幕左边界,继续向右运动
  • 4.背景图片中按下鼠标,小鸟向上飞,松开鼠标,小鸟向下飞
  • 5.当小鸟超出窗口边界时,游戏结束

使用代码如下:

		<script type="text/javascript">
			
			var app=new PIXI.Application(800,500);
			
			document.body.appendChild(app.view);																							

			function add(img,x,y){
				//创建图片元素
				var a=new PIXI.Sprite.fromImage(img);
				//将元素添加到页面中
				app.stage.addChild(a);
				//调整位置
				a.x=x
				a.y=y 
				
				//对当前元素直接开启监听
				a.interactive=true;
				
				return a;
			}


			var bg = add("img/bj_01.png",0,0);
			bg.width=800;
			
			var bird=add("img/bird.png",100,200);
			var gameover=add("img/gameover.png",150,0);
			gameover.visible=false;
			
			//小鸟移动方向 上下方向不移动
			//不移动 0向上 1 向下
			var direction=2 

			function animate(){				
			// 	//小鸟移动
				bird.x +=2
				if(direction==1){
					bird.y-=5				    
				}else if(direction==0){
				    bird.y+=5
				}
				
				//判断小鸟是否超出边界
				if(bird.x>800){
					bird.x=0;
				}

				if(bird.y < 0 || bird.y > 480){
					gameover.visible=true;
					//移除动画效果
					app.ticker.remove(animate)
				}
			}

			app.ticker.add(animate)

			bg.on('mousedown',moveup)
			function moveup(){				
				direction=1;
			}

			bg.on('mouseup',movedown)
			function movedown(){
				direction=0;
			}				
					
					
		</script>

实现效果:


三、实战

例题一:完成天天酷跑

  • 1.创建并添加应用,宽800,高500
  • 2.添加示例图片对应元素
  • 3.添加背景与道路向左移动的效果(道路要比背景移动速度快)
  • 4.按下起跳按钮,人物跳起,到达一定高度,下降到起始点,人物在空中,点击起跳,不能有效果。

结果图:

例题一代码:

		<script type="text/javascript">
			
			
			var app = new PIXI.Application(800,500);
			document.body.appendChild(app.view);
			
			//添加元素的函数
			function add(img,x,y){
				//创建图片元素
				var a = new PIXI.Sprite.fromImage(img);
				//将元素添加到页面中
				app.stage.addChild(a);
				//调整元素位置
				a.x = x;
				a.y = y;
				//对当前元素直接开启监听
				a.interactive = true;
				return a;
			}
			var bg1 = add("img/bg_back_02.png",0,0);
			var bg2 = add("img/bg_front_02.png",0,251);
			
			var bg11 = add("img/bg_back_02.png",bg1.x+800,0);
			var bg22 = add("img/bg_front_02.png",bg2.x+800,251);
			
			var ground1 = add("img/ground03_1.png",0,380);
			var ground11 = add("img/ground03_1.png",ground1.x+800,380);
			
			app.ticker.add(bgmove);
			
			function bgmove(){
				bg1.x -= 2;
				bg11.x -= 2;
				
				bg2.x -= 2;
				bg22.x -= 2;
				
				ground1.x -= 8;
				ground11.x -= 8;
				
				
				if(bg1.x < -800 ){
					bg1.x = 0;
					bg11.x = bg1.x+800;
					bg2.x = 0;
					bg22.x = bg2.x+800;
				}
				
				if(ground1.x < -800){
					ground1.x = 0;
					ground11.x = ground1.x+800;
				}
			}
			
			
			var player = add("img/player012.png",200,288);
			
			var jumpBtn = add("img/jumpBtn.png",600,288);
			
			
			jumpBtn.on("click",btnjump);
			function btnjump(){
				if(player.y == 288){
					app.ticker.add(playerup);
				}
				
			}
			function playerup(){
				player.y -= 1;
				if(player.y<188){
					app.ticker.remove(playerup);
					app.ticker.add(playerdown);
				}
			}
			function playerdown(){
				player.y+=1;
				if(player.y>288){
					player.y = 288;
					app.ticker.remove(playerdown);
				}
			}
			
			
			
		</script>

运行结果:

本文所用到的img图片以及源码地址:https://download.csdn.net/download/qq_56376552/89421558


总结

本文 动画效果与变量逻辑控制 就此结束,

如有错误或者网址更新,步骤更改,代码错误欢迎私信作者进行更正,

感谢您的观看。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

遥感和GIS在滑坡、泥石流风险普查中的技术应用教程

原文链接&#xff1a;感和GIS在滑坡、泥石流风险普查中的技术应用教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247606346&idx5&snb98d2e84b0273507ec23d3d1212b8421&chksmfa8261adcdf5e8bb26dfa824d320d1754e83b5e0ca523545704e59a3cda8aa370387…

强烈推荐!Windows 11 24H2 版本系统下载(新功能多多)

微软向 Windows 11 Version 24H2 用户推送了 KB5036908 更新&#xff0c;标志着 24H2 版本的首次累积更新&#xff0c;更新后用户的系统版本号将升级至 26100.268。在新版本中&#xff0c;最显著的变化包括对文件资源管理器的改进、整合的 Copilot 功能、编辑 PNG 文件元数据的…

AI实时免费在线图片工具4:WordArt艺术字生成;IC-Light打光模型;screenshot to code图像直接生成网页

1、艺术字生成WordArt https://modelscope.cn/studios/WordArt/WordArt/summary?reftop.aibase.com 2、打光模型IC-Light https://huggingface.co/spaces/lllyasviel/IC-Light Screenshot to Code图像直接生成网页 https://huggingface.co/spaces/HuggingFaceM4/screen…

AI大模型智慧政务解决方案

随着AI大模型技术的蓬勃发展和普及应用&#xff0c;我们的政务治理正迎来一场波澜壮阔的革新巨浪。这场革新&#xff0c;不仅是技术层面的飞跃&#xff0c;更是一场深刻改变治理理念的伟大变革。它彻底颠覆了传统政务治理中依赖人力、效率低下、响应迟缓的“人盯人”模式&#…

10_Transformer预热---注意力机制(Attention)

1.1 什么是注意力机制(attention) 注意力机制&#xff08;Attention Mechanism&#xff09;是一种在神经网络中用于增强模型处理特定输入特征的能力的技术。它最早被应用于自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;特别是在机器翻译中&#xff0c;如Google的…

uniapp录音播放功能

ui效果如上。 播放就开始倒计时&#xff0c;并且改变播放icon&#xff0c;另外录音则停止上一次录音。 播放按钮&#xff08;三角形&#xff09;是播放功能&#xff0c;两竖是暂停播放功能。 const innerAudioContext wx.createInnerAudioContext();export default{data(){ret…

16个免费学习Python的网站和教程(2024年最新资源)

16个免费学习Python的网站和教程&#xff08;2024年最新资源&#xff09; 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff…

Spring系统学习 -Spring IOC 的XML管理Bean之类类型属性赋值、数组类型属性赋值、集合类属性赋值

类类型属性赋值&#xff1a; 在XML配置中&#xff0c;可以使用 <property> 元素为类类型属性赋值。通过指定属性的名称和值&#xff0c;可以直接将其他Bean的实例引用注入到目标Bean的属性中。这种方式可以建立对象之间的关联关系。例如&#xff0c;可以将一个Address对象…

臻奶惠的行业优势与市场竞争力解析

臻奶惠在智能售货机领域深耕多年&#xff0c;其加盟合作模式在行业中展现出了多方面的优势。以下是对该公司智能售货机加盟优势的深入分析&#xff1a; 技术先进性&#xff1a; 臻奶惠智能售货机以高度自动化的运营模式著称&#xff0c;特别是在自动补货、远程监控和数据分析…

【端午惊喜】2024年6月6日 docker 国内镜像源集体失效

文章目录 概述中科大镜像源阿里镜像源其他镜像源可用的镜像源写在最后 概述 大家都知道使用docker hub官方镜像需要魔法&#xff0c;虽然大部人有魔法&#xff0c;但是网速也是很慢&#xff0c;还有部分同学没有&#xff0c;全靠国内各大厂商的镜像源&#xff0c;可是端午6.6大…

zabbix监控深信服AD案例+自动发现虚拟服务和链路

文章目录 前言监控功能告警功能 环境准备操作步骤深信服AD开启SNMPSNMP V2SNMP V3 Zabbix导入模版Zabbix中添加深信服AD 前言 深信服AD&#xff0c;应用交付网关&#xff0c;是较为常见的应用发布、负载均衡设备&#xff0c;常用于网络出口。 本案例是通过zabbix的snmp监控深…

如何成为AI产品经理,踏入高薪不内卷的职场

前言 在当今科技日新月异的背景下&#xff0c;AI产品经理这一岗位逐渐成为职场中的一颗璀璨新星&#xff0c;吸引着众多求职者的目光。然而&#xff0c;对于这个职位的具体要求和工作内容&#xff0c;许多人仍处在一知半解的状态。虽然普遍认知中&#xff0c;AI产品经理岗位与…

【漏洞复现】Rejetto HTTP文件服务器 未授权RCE漏洞(CVE-2024-23692)

0x01 产品简介 Rejetto HTTP File Server(HFS)是一个基于HTTP协议的文件服务器软件&#xff0c;旨在为用户提供简单、轻量级且易于使用的文件共享解决方案。功能强大、易于使用的文件服务器软件&#xff0c;无论是个人使用还是团队协作&#xff0c;HFS都能满足用户的需求&…

【解决】Windows 10 主机上的 VMware Workstation 中出现“VMware Workstation 与设备/凭据保护不兼容”错误

解决错误的过程: 要解决错误,请按照以下步骤操作: 如果您的主机具有Windows 10 20H1 版本 19041.264 或更新版本,请升级/更新到 Workstation 15.5.6 或更高版本。有关更多详细信息,请参阅VMware Workstation 中 Windows Host VBS 支持的最低要求 如果您的主机装有Windows…

了解多线程

1.线程与并发 1.1 理解进程和线程的区别 进程&#xff1a;是指一个内存中运行的应用程序&#xff08;程序的一次运行就产生一个进程&#xff09;&#xff0c;每个进程都有自己独立的一块内存空间&#xff0c;比如在Windows的任务管理器中&#xff0c;一个运行的xx.exe就是一个进…

SSL证书的作用,SSL证书不续费有影响吗

随着网络发展&#xff0c;网站业务越来越多&#xff0c;SSL证书作为保障网站数据传输安全的重要手段&#xff0c;其重要性不言而喻。SSL证书的有效期通常为一年&#xff0c;并且需要定期更换。那么为什么SSL证书要一年换一次呢?如果证书过期且未续费&#xff0c;网站还能否正常…

计数排序的实现

计数排序 计数排序是一个基于非比较的排序算法。它的优势在于在对一定范围内的整数排序时&#xff0c;它的复杂度为Ο(nk)&#xff08;其中k是整数的范围&#xff09;&#xff0c;快于任何比较排序算法。当然这是一种牺牲空间换取时间的做法&#xff0c;而且当O(k)&#xff1e…

vivado HW_SIO_GTGROUP、HW_SIO_IBERT

HW_SIO.GTGROUP 描述 GT组与硬件设备上的GT IO组相关&#xff0c;具有可用的数量 GT引脚和组由目标Xilinx FPGA确定。在Kintex-7 xc7k325部件上&#xff0c;用于 例如&#xff0c;有四个GT组&#xff0c;每个组包含四个差分GT引脚对。每个GT pin有自己的接收器hw_sio_rx和发射器…

如何免费获取云服务器

这几天刚入手了阿贝云的 “免费云服务器 ” &#xff0c;接下来给大家讲讲如何免费注册阿贝云的免费云服务器 如何获取免费云服务器 打开阿贝云官网&#xff0c;注册并认证 即可以领取免费云服务器 阿贝云地址&#xff1a;https://www.abeiyun.com/ 服务器优势 永久免费&…

【算法实战】每日一题:18.1并查集知识点讲解以及算法实战

1.题目 给定一个序列&#xff0c;通过n-1次相邻元素的合并操作&#xff0c;恢复原始序列。 2.涉及知识点 - 并查集 (Union-Find) 并查集 (Union-Find) 详解 概述 并查集&#xff08;Union-Find&#xff09;&#xff0c;也称为不相交集数据结构&#xff0c;用于处理一些不相…