当前位置: 首页 > 编程日记 > 正文

PIXI 下落文字消除(3)

图片示例,简陋的图,记录下落过程,

1、创建应用实例并添加到DOM元素上。

(会看到一个黑色画布,没有任何元素,接下来会在画布上创建文字)

2、创建  TextStyle 用来设置要显示字体样式

3、随机产生字母(code,x, y,speed,isHas)  创建坐标及是否要创建该对象 (Text)

4、把字母渲染到画布上,从上到下运行

5、监听keyup事件,消除相应的数组

1、创建应用添加DOM

  let app = new PIXI.Application({width: 526,height: 526})document.body.appendChild(app.view);

2、创建字体样式(我抄官网的)

   // 字体样式let style = new PIXI.TextStyle({fontFamily: "Arial",fontSize: 36,fill: "white",stroke: '#ff3300',strokeThickness: 4,dropShadow: true,dropShadowColor: "#000000",dropShadowBlur: 4,dropShadowAngle: Math.PI / 6,dropShadowDistance: 6,});

 3、创建随机文字对象并添加数组中,文字移动是对数组操作  

  var getRandom = function () {var charCode = 97 + Math.floor(Math.random() * 26);var speed = Math.ceil(Math.random() * 4);return {code: String.fromCharCode(charCode),speed: speed,y: 0,x: Math.floor(Math.random() * app.view.width),isHas: false  //标记改对象是否需要创建,创建后true,不需要每次都创建}};

4、数组变量

  var showArr = [];  //每次随机创建文字位置var txtoObjArr = []; // 在下边用来存储,Text对象,,下边看

随机产生文字 放到showArr数组中:

showArr.push(

getRandom()

);

// {x: 100, y:0, code: 'b' ,isHas: false}


txtoObjArr 里边存放的 new PIXI.Text();每次都会产生新的对象。判断该对象是否已创建 isHas,存在直接使用,否则创建

5、添加舞台

app.stage.addChild(txtoObjArr[j]);

6、让  txtoObjArr 里边的每个对象动起来(txtoObjArr   里边存放的是new PIXI.Text), 到画布底边销毁对象

    for(var k = 0; k < txtoObjArr.length; k ++){console.log(txtoObjArr)// app.stage.addChild(txtoObjArr[k]);txtoObjArr[k].x = showArr[k].x;txtoObjArr[k].y = showArr[k].y;txtoObjArr[k].text = showArr[k].code;// 销毁对象if(txtoObjArr[k].y >= app.view.height){txtoObjArr[k].destroy();txtoObjArr.splice(k,1);showArr.splice(k, 1); // 移除数组中元素
      }}

7、键盘按下去舞台元素消失(数组移除操作)

 function keyEvent(ev){for(var i= 0; i < showArr.length; i++){if(showArr[i].code ==ev.key  || String.fromCharCode(ev.keyCode).toLowerCase() == showArr[i].code){showArr[i].text ='';txtoObjArr[i].text='';showArr.splice(i,1);txtoObjArr.splice(i,1);}}}

本示例

<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title>test2</title><script src="pixi.min.js"></script>
</head>
<body><script>let app = new PIXI.Application({width: 526,height: 526})document.body.appendChild(app.view);// 字体样式let style = new PIXI.TextStyle({fontFamily: "Arial",fontSize: 36,fill: "white",stroke: '#ff3300',strokeThickness: 4,dropShadow: true,dropShadowColor: "#000000",dropShadowBlur: 4,dropShadowAngle: Math.PI / 6,dropShadowDistance: 6,});// 创建随机字母对象var getRandom = function () {var charCode = 97 + Math.floor(Math.random() * 26);var speed = Math.ceil(Math.random() * 4);return {code: String.fromCharCode(charCode),speed: speed,y: 0,x: Math.floor(Math.random() * app.view.width),isHas: false}};// 字母数组var showArr = [];setInterval("createArry()", 100);
//  createArry();var txtoObjArr = [];function createArry(){if(Math.random() > 0.9){showArr.push(getRandom());
//     console.log(showArr);}// 元素运动for(var i = 0; i< showArr.length; i++){showArr[i].y += 1;}// 创建元素for(var i = 0 ;i < showArr.length; i++){if(showArr[i].isHas == false){ // 创建文字对象var txtObj = new PIXI.Text("Hello Pixi!", style);showArr[i].isHas = true;
//        app.stage.addChild(txtObj);
//        txtObj.x = showArr[i].x;
//        txtObj.y = showArr[i].y;
//        txtObj.text = showArr[i].code;txtoObjArr.push(txtObj);for(var j =0 ;j <txtoObjArr.length; j++){app.stage.addChild(txtoObjArr[j]);}}}//  执行对象数组for(var k = 0; k < txtoObjArr.length; k ++){console.log(txtoObjArr)// app.stage.addChild(txtoObjArr[k]);txtoObjArr[k].x = showArr[k].x;txtoObjArr[k].y = showArr[k].y;txtoObjArr[k].text = showArr[k].code;// 销毁对象if(txtoObjArr[k].y >= app.view.height){txtoObjArr[k].destroy();txtoObjArr.splice(k,1);showArr.splice(k, 1); // 移除数组中元素}}}function keyEvent(ev){for(var i= 0; i < showArr.length; i++){if(showArr[i].code ==ev.key  || String.fromCharCode(ev.keyCode).toLowerCase() == showArr[i].code){showArr[i].text ='';txtoObjArr[i].text='';showArr.splice(i,1);txtoObjArr.splice(i,1);}}}window.addEventListener("keyup", keyEvent);
//    app.ticker.add(function (delta) {
//      createArry();
//    });</script>
</body>
</html>

转载于:https://www.cnblogs.com/congxueda/p/9328992.html

相关文章:

python魔术方法call_php魔术方法__call

__call是魔术方法中的一个&#xff0c;当程序调用到当前类中未声明或没权限调用的方法时&#xff0c;就会调用__call方法class test{public function emptyFunc(){$getArgs func_get_args();$funcName $getArgs[0];//$params array_slice($getArgs, 1);//var_dump($params);…

app启动时间命令

app启动&#xff1a; 冷启动和热启动 冷启动方式&#xff1a; adb shell am start -W -n package/activity 停止app命令&#xff1a; adb shell am force-stop package 热启动命令和冷启动命令一样 停止命令&#xff1a; adb shell input keyevent 3 查看package/activity命令&…

华为手机媒体音量自动静音_华为手机的音量键还可以这么用,涨见识!

身边很多朋友都是用的是华为手机&#xff0c;我就纳闷了&#xff0c;华为手机真的有那么好用吗&#xff1f;听朋友跟我细细说了一番&#xff0c;我被说动了&#xff0c;准备也去换一个华为手机&#xff0c;就冲它的音量键有那多妙用&#xff0c;我也不能错过一款华为手机&#…

Mui.ajax请求服务器正确返回json数据格式

ajax&#xff1a; mui.ajax(http://server-name/login.php,{data:{username:username,password:password},dataType:json,//服务器返回json格式数据type:post,//HTTP请求类型timeout:10000,//超时时间设置为10秒&#xff1b;success:function(data){//服务器返回响应&#xff0…

day1作业(格式化输出)

练习&#xff1a;用户输入姓名、年龄、工作、爱好 &#xff0c;然后打印成以下格式------------ info of Egon -----------Name : EgonAge : 22Sex : maleJob : Teacher ------------- end -----------------完成情况&#xff1a;in_nameinput(请输入您的姓名&#xff1…

rust 官服指令_RUST 命令大全(包括服务器指令)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼RUST MOD(以下在聊天框内输入)基本命令/share playername 【shares your doors with a player(共享你的门给一个玩家)】/unshare playername 【unshares your doors with a player(解除对一个玩家的门共享)】/help 【Shows command…

postgresql存图片字段类型_PostgreSQL 入门 | Linux 中国

安装、设置、创建和开始使用 PostgreSQL 数据库。-- Greg Pittman每个人或许都有需要在数据库中保存的东西。即使你执着于使用纸质文件或电子文件&#xff0c;它们也会变得很麻烦。纸质文档可能会丢失或混乱&#xff0c;你需要访问的电子信息可能会隐藏在段落和页面的深处。在我…

关于ES6中Promise的应用-顺序合并Promise,并将返回结果以数组的形式输出

1.Promise 基础知识梳理 创建一个Promise实例 const promise new Promise(function(resolve, reject) {if (success){resolve(value);} else {reject(error);} }); Promise构造函数接受一个函数作为参数&#xff0c;该函数的两个参数分别是resolve和reject。它们是两个函数&am…

Java计算两个字符串日期之间的天数差

Java计算两个字符串日期之间的天数差 调用方法&#xff1a; public static void main(String[] args) throws ParseException {String a "2017-12-01"; // 时间字符串String b "2017-12-31";Long between_dayInteger between_days(a, b);System.out.pri…

java file_Java IO: File

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com)Java IO API中的FIle类可以让你访问底层文件系统&#xff0c;通过File类&#xff0c;你可以做到以下几点&#xff1a;检测文件是否存在读取文件长度重命名或移动文件删除文件检测某个路径是文件还是目录读取目录…

数学建模优化模型简单例题_数学建模之优化模型:存储模型

点击上方「蓝字」关注我们最近&#xff0c;为申报市级精品课程&#xff0c;我为我校“数学建模与科学计算”课程录制了讲课视频&#xff0c;下面是3.1节优化模型的第一个例子&#xff1a;存储模型。敬请大家批评指正&#xff01;优化模型是数学建模里比较简单、但也非常常用的建…

shiro异常类型

<!-- 身份认证异常 --> <!-- 身份令牌异常&#xff0c;不支持的身份令牌 --> org.apache.shiro.authc.pam.UnsupportedTokenException <!-- 未知账户/没找到帐号,登录失败 --> org.apache.shiro.authc.UnknownAccountException <!-- 帐号锁定 --&…

生产环境下Centos 6.5优化配置 (装载)

本文 centos 6.5 优化 的项有18处: 1、centos6.5最小化安装后启动网卡 2、ifconfig查询IP进行SSH链接 3、更新系统源并且升级系统 4、系统时间更新和设定定时任 5、修改ip地址、网关、主机名、DNS 6、关闭selinux&#xff0c;清空iptables 7、创建普通用户并进行sudo授权管理 8…

java this final_Java this、final等关键字总结

this关键字this引用对象自身。它也可以在构造方法内部用于调用同一个类的其他构造方法。隐藏的静态变量可以通过”类.静态变量”来引用&#xff0c;而隐藏的实例变量就需要使用”this.实例变量”来引用。调用一个重载的构造方法this引用是必须的。this是个隐式参数&#xff0c;…

档案盒正面标签制作_2020昆明大学档案盒价格价格行情

2020昆明大学档案盒价格价格行情背景技术档案盒是企业、单位部门或财务部门整理和装订储存文件的不可缺少的办公用具&#xff0c;主要是对档案材料、财务凭证等进行收集、查找等。目前需要查找档案时需要将所有的档案材料取出&#xff0c;然后一一查找&#xff0c;工作效率低&a…

jQuery效果:隐藏、显示、切换、滑动、淡入淡出、动画

jQuery效果 隐藏、显示、切换、滑动、淡入淡出、以及动画1、隐藏与显示(改变&#xff1a;display&#xff1a;none;) hide()——隐藏 show()——显示toggle()方法&#xff1a;可以使用它来切换hide()与show()方法 eg1&#xff1a;显示 <style type"text/css"> …

《C和指针》pdf

下载地址&#xff1a;网盘下载 本书提供与C语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨&#xff0c;帮助程序员把指针的强大功能融入到自己的程序中去。 全书共18章&#xff0c;覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、…

linux 用户java_linux之用户管理

linux是多用户多任务的系统。每个用户都有一个账户。账户不能重复&#xff0c;密码允许重复。成功验证&#xff0c;则进入系统和自己的主目录(也就是家目录里面)。用户-----用户账号&#xff0c;添加、删除、修改以及用户密码管理。用户组------用户组管理。注意三个文件/etc/p…

k均值聚类图像分割matlab代码_用K均值聚类法为人类拍摄的首张黑洞照片进行分割...

众所周知&#xff0c;人类最近拍摄了首张黑洞照片。网友们纷纷表示&#xff0c;这明明就是一个甜甜圈嘛&#xff01;以前以为黑洞是这个世界上最最高冷的存在&#xff0c;而此刻突然现出真身&#xff0c;形象却是如此的人畜无害&#xff01;不但如此&#xff0c;还勾起了网友的…

else 策略模式去掉if_设计模式(三)——简单的状态模式代替if-else

博主将会针对Java面试题写一组文章&#xff0c;包括J2ee&#xff0c;SQL&#xff0c;主流Web框架&#xff0c;中间件等面试过程中面试官经常问的问题&#xff0c;欢迎大家关注。一起学习&#xff0c;一起成长。前言大多数开发人员现在还在使用if else的过程结构&#xff0c;曾看…

bzoj 3598 [ Scoi 2014 ] 方伯伯的商场之旅 ——数位DP

题目&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id3598 数位DP...东看西看&#xff1a;http://www.cnblogs.com/Artanis/p/3751644.html https://www.cnblogs.com/MashiroSky/p/6399095.html 好巧妙的思路啊&#xff01;这样统计的东西就变得很简单了&#x…

OSI模型第四层传输层--TCP协议

1.传输层2个协议tcp和udp 2.tcp的可靠性&#xff08;挂号信&#xff09;。 面向链接的:类似寄挂号信&#xff0c;对方收到了并且能够确认。所以也是可靠的传输。 最大报文传输&#xff1a;两端可以协商传输报文大小。&#xff08;协商一个报文的大小&#xff09; 传输确认机制&…

evt参数是干啥用的_http连接池中非常关键的两个参数,到底是干啥用的?

作者简介&#xff1a;大厂一线资深开发。从crud开发到资深开发&#xff0c;再到研究员兼技术经理。《资深开发讲技术》 从一线实战中总结有故事&#xff0c;有背景的案例&#xff0c;希望带给大家一系列技术盛宴。求关注&#xff0c;欢迎技术交流。友情提醒&#xff0c;往期的文…

java 匿名类调用方法_java – 从匿名类调用新定义的方法

好问题.答案是否你不能直接调用date.someMethod();我们先来了解这是什么.Date date new Date() { ... };以上是延续Date类的匿名(没有名称)子类.当你看到代码,Runnable r new Runnable() {public void run() {}};这意味着您已经定义了正在实现(不扩展)Runnable接口的匿名(没有…

传图识字有次数限制吗_5岁娃识字3000?别羡慕!过早逼娃认字,后果很严重

在开始科普前&#xff0c;先祝大家“新年快乐”&#xff01;2021年&#xff0c;科大大也会用更优质的育儿科普知识&#xff0c;回馈科粉们的支持和喜爱。话说回来&#xff0c;大家有什么新年flag呢&#xff1f;科大大发现&#xff0c;家长们比起给自己立flag&#xff0c;更愿意…

3des java 库_java 3DES 加密

public class DESCode {private String algorithm "DESede/CBC/PKCS7Padding";//加密方法&#xff0f;运算模式&#xff0f;填充模式private String charset "UTF-8";//编码private Cipher encCipher;//加密cipherprivate Cipher decCipher;//解密cipher…

[JSOI2008]魔兽地图

树上背包 题目传送门 首先&#xff0c;有没有哪位dalao 愿意告诉我为什么合成高级装备不需要附加金币&#xff0c;&#xff0c; 好吧&#xff0c;这个不重要 明确表示装备合成路线可以用一棵树来表示。一颗&#xff1f;傻乎乎的在下之前每次就只dp一棵树&#xff0c;不出意外的…

重大要素改变中的机会选择包括_财务人员专业胜任能力要素及框架

陈珏莹【本文导图】专业胜任能力要素框架的思维导图【概要】专业胜任能力要素构成了能力框架&#xff0c;因此&#xff0c;在构建各层次财务人才专业胜任能力框架之前要先界定能力要素。本文按照专业知识、职业技能和职业价值观三大部分简单介绍了各能力要素的概念。一个测评财…

tomcat部署 修改域名和访问域名时去掉项目名

修改域名和访问域名时去掉项目名 1、修改端口为80端口 因为80端口是为HTTP&#xff08;HyperText Transport Protocol)即超文本传输协议开放的&#xff0c;浏览网页服务默认的端口号都是80&#xff0c;因此只需输入网址&#xff08;或IP地址&#xff09;即可。 打开tomcat安装目…

插入始终是1_40分!1分钟4次!大JB太硬了!

不得不说&#xff0c;巴爵士对赛事的预测还是稳如死狗昨儿他在节目中表示&#xff1a;热火赢不了雄鹿不过&#xff0c;话说出来可能就后悔了&#xff0c;表示如果爪机对血布能占上风&#xff0c;雄鹿还是有点麻烦。真的&#xff0c;巴爵士不再是我们印象中的那个自信的巴毒奶老…