[]分享:为List组件下Item(Box)下的Button(或其他组件)进行监听!

以下是JS的写法,AS/TS思路一样,请根据自己的需求进行修改即可!
var Loader = laya.net.Loader;
var Handler = laya.utils.Handler;
var Event = laya.events.Event;

// 创建TestPageUI的子类
function TestUI()
{
TestUI.super(this);
//list赋值,先获得一个数据源数组
var arr = ;
for (var i = 0; i < 100; i++) {
arr.push({label: "item " + i, clip: i % 9,btn:"btn"+i});
}
//给list赋值更改list的显示
this.list.array = arr;
//给list添加渲染函数
this.list.renderHandler = new Handler(this, onListRender);
}

//通过渲染函数为Btn添加Click
function onListRender(item, index)
{
var btn=item.getChildByName('btn');
btn.on(Event.CLICK,this,onClickBtn,[index]);
}
Laya.class(TestUI, "TestUI", TestPageUI);

//按钮Click回调
function onClickBtn(index)
{
alert("你点击了第:"+index+"个btn");
}

//初始化引擎
Laya.init(600, 400);
Laya.stage.bgColor='#EEFFCC';
Laya.loader.load("res/atlas/comp.json", Handler.create(this, onAssetLoaded), null, Loader.ATLAS);
//添加UI界面
function onAssetLoaded()
{
Laya.stage.addChild(new TestUI());
}
已邀请:

Monica - 知识达人

赞同来自:

赞,谢谢分享~

gmajrtfp

赞同来自:

在btn.on(Event.CLICK,this,onClickBtn,[index]);之前好像要先
btn.off(Event.CLICK,this,onClickBtn,[index]);不然会重复监听click事件

gls_laybox

赞同来自:

这个是可以监听按钮,可是怎么拿到这个按钮对象呢,或者说这一项的其他对象呢?

qq97659689

赞同来自:

onListRender(item, index)函数的 item是什么,自己创建的类吗?

Laya_XS

赞同来自:

item是你在ide里创建的render的渲染对象

Laya_XS

赞同来自:

item是你在ide里创建的render的渲染对象

zqn951201

赞同来自:

谢谢分享

a5703929

赞同来自:

普通的button添加点击事件的时候,函数带一个e参数,就是可以取e.target进行判断的那个,在这种方式下,还能获取到么

要回复问题请先

商务合作
商务合作