Egret EUI Tab + ViewStack

参考:

Egret教程-选项卡

 

游戏中很多选项卡的UI。

官网教程说的不清楚。以前是用自己写的。这里用Eui的Tab+ViewStack实现一下。

 

 

 

1. 新建Tab的条目皮肤

第一个Image是按钮弹起时显示

第二个Image是按钮选中时显示

第三个Label的标签设置为{data},用于显示ViewStack的内容name

 

进入exml的源码,设置第一张图片visible.down="false",设置第二张图片visible.disabled="false", visible.up="false"

 

2. 拖动一个Tab组件到舞台

设置ID为tab,条目皮肤为TabBarSkin,布局为水平排列HorizontalLayout。

 

进入exml源码,设置数据源dataProvider="viewStack",设置默认选择第一项selectedIndex="0"

 

 

 3 拖动一个ViewStack到舞台

设置Viewstack的ID为viewstack

拖动3个按钮(或者自定义UI)到viewstack下,这3个按钮就相当于要切换的3个页面。

 

 

进入exml源码,设置按钮的name,这个name会映射到TabBarSkin上的Labe的{data}上。

 

 

4   代码里操作tab+viewstack

tab监听ITEM_TAP事件

/**
 * 主页
 * @author chenkai 2020.2.16
 */
class HomeScene extends eui.Component{
	public tab:eui.TabBar;
	public viewStack:eui.ViewStack;

	public constructor() {
		super();
		this.skinName = "HomeSceneSkin";
	}

	protected childrenCreated(){
		this.tab.addEventListener(eui.ItemTapEvent.ITEM_TAP, this.itemTap, this);
	}

	private itemTap(e:eui.ItemTapEvent){
		                                           //当点击第一个选项卡按钮时,下面输出为
		console.log(e.itemIndex, e.itemRenderer);  //0
		console.log(e.itemRenderer);               //第一个选项按钮实例
		console.log(this.viewStack.selectedIndex); //0 
		console.log(this.viewStack.selectedChild); //viewstack下的第一个Button实例
	}
}

  

 实际效果:

 

问题:

1. 当按钮样式不同时,怎么整?

因为Tab用的条目皮肤是TabBarSkin是一个皮肤,当3个按钮,每个按钮外观不同时,就用不了了。

Laya的Tab+Viewstack使用方便,支持3个按钮使用1个皮肤,也支持3个按钮使用3个皮肤,Egret如果要实现,得自己写自定义组件了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值