美文网首页
cocos creator 数值变化+金币移动动画

cocos creator 数值变化+金币移动动画

作者: cmd_ts | 来源:发表于2020-05-19 11:27 被阅读0次
    b7878a558be72d0407e0ad137de31ba4 (1).gif

    数值滚动

    if(Number(this.energy_label.string) != Number(orc.orc_data.memory_data.user_info.energy))
     {
          var val_change = Number(orc.orc_data.memory_data.user_info.energy) - Number(this.energy_label.string);
        console.log('energy:',this.energy_label.string,orc.orc_data.memory_data.user_info.energy,val_change);
                    if(val_change/5 !=0)
                    {
                        val_change = Math.floor(val_change/5);
                        let i = 0;
                        this.energy_label.schedule(()=>{
                            i++;
                            if(i >= 5)
                            {
                                this.energy_label.string = String(orc.orc_data.memory_data.user_info.energy);
                            }
                            else
                            {
                                this.energy_label.string = String(Number(this.energy_label.string) + val_change);
                                console.log('val_change:',val_change);
                                
                            }
                        },0.1,5,0)
                    }
                    else
                    {
                        this.energy_label.string = String(orc.orc_data.memory_data.user_info.energy);
                    }
                }
    
    //tween 新方案
    let sdk: any = {
                a: 0,
            }
            //this.com.level_node.children[1].getComponent(cc.Label).string = String(a);
            cc.tween(sdk)
    
                .to(1, { a: this.server_data.cardRate[0] }, {
                    progress: (start, end, current, time) => {
                        // this.lab.string = Math.round(start + (end - start) * time) + '';//修改页面上的值
                        //console.log('修改ing', start + (end - start) * time);
                        //this.com.level_node.children[1].getComponent(cc.Label).string = (this.server_data.cardRate[2] * 100) / 100).toFixed(2) + '%';
                        this.com.level_node.children[1].getComponent(cc.Label).string = ((start + (end - start) * time * 100) / 100).toFixed(2) + '%';
                        return start + (end - start) * time;
                    },
                    // easing: "quintOut",
                })
                .start();
    

    金币动画

     playAnim() 
        {
            let randomCount = Math.random() * 15 + 10;
            let stPos = this.startPoint.getPosition();
            let edPos = this.endPoint.getPosition();
            this.playCoinFlyAnim(randomCount, stPos, edPos);
        }
    
        playCoinFlyAnim(count: number, stPos: cc.Vec2, edPos: cc.Vec2, r: number = 130)
        {
            // 确保当前节点池有足够的金币
            const poolSize = this.coinPool.size();
            const reCreateCoinCount = poolSize > count ? 0 : count - poolSize;
            this.initCoinPool(reCreateCoinCount);
        
            // 生成圆,并且对圆上的点进行排序
            let points = this.getCirclePoints(r, stPos, count);
            let coinNodeList = points.map(pos => {
              let coin = this.coinPool.get();
              coin.setPosition(stPos);
              this.node.addChild(coin);
              return {
                node: coin,
                stPos: stPos,
                mdPos: pos,
                edPos: edPos,
                dis: (pos as any).sub(edPos).mag()
              };
            });
            coinNodeList = coinNodeList.sort((a, b) => {
              if (a.dis - b.dis > 0) return 1;
              if (a.dis - b.dis < 0) return -1;
              return 0;
            });
    
            this.energy_label.scheduleOnce(()=>{
                orc.event_manager.dispatch_event('game_main_show',false,'vip');         //显示用户等级+金币
            },0.8)
    
            
        
            // 执行金币落袋的动画
            coinNodeList.forEach((item, idx) => {
              item.node.runAction(
                cc.sequence(
                  cc.moveTo(0.3, item.mdPos),
                  cc.delayTime(idx * 0.01),
                  cc.moveTo(0.5, item.edPos),
                  cc.callFunc(() => {
                    this.coinPool.put(item.node);                
                  })
                )
              );         
            });
        }
    

    相关文章

      网友评论

          本文标题:cocos creator 数值变化+金币移动动画

          本文链接:https://www.haomeiwen.com/subject/pagvohtx.html