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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PIXI的Tween动画库提供了一个createTween方法,用于创建Tween动画对象。Tween动画对象可以应用于PIXI对象的任意属性,包括位置、旋转、缩放、透明度等等。以下是createTween方法的语法: ```javascript PIXI.tweenManager.createTween(target); ``` 其中,target表示要应用Tween动画的PIXI对象。例如,要创建一个Tween动画对象,使得一个Sprite对象的位置在3秒内从x=0,y=0移动到x=100,y=100,可以按照以下步骤操作: ```javascript // 创建一个Sprite对象 const sprite = PIXI.Sprite.from('image.png'); // 将Sprite对象添加到舞台 app.stage.addChild(sprite); // 创建一个Tween动画对象 const tween = PIXI.tweenManager.createTween(sprite.position); // 设置Tween动画对象的属性 tween.time = 3000; // 动画持续时间为3秒 tween.easing = PIXI.tween.Easing.outQuad(); // 缓动函数 tween.from({ x: 0, y: 0 }); // 起始位置 tween.to({ x: 100, y: 100 }); // 终止位置 // 启动Tween动画 tween.start(); ``` 上面的代码首先创建了一个Sprite对象,并将其添加到舞台中。然后,创建了一个Tween动画对象,并将其应用于Sprite对象的position属性,使得Sprite对象的位置在3秒内从x=0,y=0移动到x=100,y=100。最后,启动Tween动画。 注意,上面的代码使用了PIXI的Tween动画库,如果你没有引入该库,则需要先引入。另外,你可以通过调整Tween动画对象的time属性来调整动画持续时间,通过调整easing属性来调整缓动函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值