pixijs自制下拉菜单类

实现基础功能:
1、实现的基础的外面大按钮的控制面板有显示与否;
2、通过一个回调将选择的菜单索引回抛给上层;

import * as PIXI from '../libs/pixi'
import core from './index'
//import Button from './mybutton'

export default class main {
	constructor(menu,context,pos,backcall){
		//var _menu = ['选择难度'].concat(menu);

	this.context = context;
	this.scale = core.view.width/750;
	console.log('scale',this.scale)
	this.menucontext = new PIXI.Container();
	this.curr = 0;
	this.show = false;


    var that = this;
    

    
    
    var creatbtn = (txt)=>{
    	var menucontext = new PIXI.Container();
    	menucontext.name = (that.curr==0?'btn_':'drop_')+that.curr;
    	menucontext.x = pos.x;
    	menucontext.y = pos.y;
    	var bg = new PIXI.Graphics();
        bg.beginFill(0x131227,.8);
        bg.drawRect(0,0,100*that.scale,35*that.scale);
        bg.endFill();
        bg.y = that.curr*40*that.scale;
        menucontext.addChild(bg);
        var stylecoin = {  
            fontSize: 30*that.scale,
            fill:"0xeade1a",
            fontFamily:["幼圆","Microsoft YaHei","黑体","sans-serif",],
            fontWeight: 'bold',
            letterSpacing:2
        }; 

        var _txt = new PIXI.Text(txt, stylecoin);
        _txt.x = (100*that.scale-_txt.width)/2;
        _txt.y = that.curr*40*that.scale;
    	//return context;
    	menucontext.addChild(_txt)
    	

    	menucontext.interactive = true;
    	menucontext.visible = that.curr==0?true:that.show;

    	menucontext.on('touchstart',(event)=>{
            //console.log(event.currentTarget.name);
            var index = parseInt(event.currentTarget.name.split('_')[1]);

            if(index==0){
            	that.show = !that.show;
            	that.context.children.map(i=>{
            		//console.log(i.name)
            		if(i.name&&i.name.indexOf('drop')==0){
            			i.visible = that.show;
            		}
            	})
            }else{
            	backcall(index);
            }
        })

        that.context.addChild(menucontext);
        that.curr++;

    }

    creatbtn('请选择')
    menu.map((i,index)=>{
		creatbtn(i)
    	//context.addChild(_btn);
    })

    
}
}

调用的地方:

	var _drop = new dropdown(['初级','中级','高级'],this.scene,{
		x:this.core.view.width/2,
		y:this.userarea.y+60
	},(index)=>{
		console.log('index',index)
	});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火炎神2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值