[]在微信小游戏中使用list,兼听不到mouseHandler跟selectHandler。
需求:需要对list中的每个cell设置监听
问题:在微信小游戏中使用list,监听不到mouseHandler跟selectHandler,但是renderHandler的回调是正常的。1、我对list设置了on去监听mouse事件,可以触发回调 on 上面的回调,
2、list的renderHandler能正常使用
3、demo逻辑与官网给的代码是一样的
http://layaair.ldc.layabox.com/demo/?category=2d&group=UI&name=List
==============>
原本想到的解决方案是,在renderHandler的回调中,对cell设置on去监听mouse事件,但是这个时候cell会拦截mouse事件,导致list无法滑动,跪求解决方案
===========================
update: 发现官网的链接居然跳不过去,我把代码copy过来吧。。。。主要逻辑跟官网的demo一模一样。。。
// 这段代码需要在setupDemo之前执行。
(function()
{
// 项渲染器
var Box = Laya.Box;
var Image = Laya.Image;
var WID = 373,
HEI = 85;
function Item()
{
Item.__super.call(this);
this.size(WID, HEI);
this.img = new Image();
this.addChild(this.img);
this.setImg = function(src)
{
this.img.skin = src;
}
}
Laya.class(Item, "Item", Box);
// 主要逻辑代码
var Stage = Laya.Stage;
var List = Laya.List;
var Handler = Laya.Handler;
var WebGL = Laya.WebGL;
(function()
{
// 不支持WebGL时自动切换至Canvas
Laya.init(800, 600, WebGL);
Laya.stage.alignV = Stage.ALIGN_MIDDLE;
Laya.stage.alignH = Stage.ALIGN_CENTER;
Laya.stage.scaleMode = Stage.SCALE_SHOWALL;
Laya.stage.bgColor = "#232628";
setup();
})();
function setup()
{
var list = new List();
list.itemRender = Item;
list.repeatX = 1;
list.repeatY = 4;
list.x = (Laya.stage.width - WID) / 2;
list.y = (Laya.stage.height - HEI * list.repeatY) / 2;
// 使用但隐藏滚动条
list.vScrollBarSkin = "";
list.selectEnable = true;
list.selectHandler = new Handler(this, onSelect);
list.renderHandler = new Handler(this, updateItem);
Laya.stage.addChild(list);
// 设置数据项为对应图片的路径
var data = [];
for (var i = 0; i < 10; ++i)
{
data.push("../../res/ui/listskins/1.jpg");
data.push("../../res/ui/listskins/2.jpg");
data.push("../../res/ui/listskins/3.jpg");
data.push("../../res/ui/listskins/4.jpg");
data.push("../../res/ui/listskins/5.jpg");
}
list.array = data;
}
function updateItem(cell, index)
{
cell.setImg(cell.dataSource);
}
function onSelect(index)
{
console.log("当前选择的索引:" + index);
}
})();
问题:在微信小游戏中使用list,监听不到mouseHandler跟selectHandler,但是renderHandler的回调是正常的。1、我对list设置了on去监听mouse事件,可以触发回调 on 上面的回调,
2、list的renderHandler能正常使用
3、demo逻辑与官网给的代码是一样的
http://layaair.ldc.layabox.com/demo/?category=2d&group=UI&name=List
==============>
原本想到的解决方案是,在renderHandler的回调中,对cell设置on去监听mouse事件,但是这个时候cell会拦截mouse事件,导致list无法滑动,跪求解决方案
===========================
update: 发现官网的链接居然跳不过去,我把代码copy过来吧。。。。主要逻辑跟官网的demo一模一样。。。
// 这段代码需要在setupDemo之前执行。
(function()
{
// 项渲染器
var Box = Laya.Box;
var Image = Laya.Image;
var WID = 373,
HEI = 85;
function Item()
{
Item.__super.call(this);
this.size(WID, HEI);
this.img = new Image();
this.addChild(this.img);
this.setImg = function(src)
{
this.img.skin = src;
}
}
Laya.class(Item, "Item", Box);
// 主要逻辑代码
var Stage = Laya.Stage;
var List = Laya.List;
var Handler = Laya.Handler;
var WebGL = Laya.WebGL;
(function()
{
// 不支持WebGL时自动切换至Canvas
Laya.init(800, 600, WebGL);
Laya.stage.alignV = Stage.ALIGN_MIDDLE;
Laya.stage.alignH = Stage.ALIGN_CENTER;
Laya.stage.scaleMode = Stage.SCALE_SHOWALL;
Laya.stage.bgColor = "#232628";
setup();
})();
function setup()
{
var list = new List();
list.itemRender = Item;
list.repeatX = 1;
list.repeatY = 4;
list.x = (Laya.stage.width - WID) / 2;
list.y = (Laya.stage.height - HEI * list.repeatY) / 2;
// 使用但隐藏滚动条
list.vScrollBarSkin = "";
list.selectEnable = true;
list.selectHandler = new Handler(this, onSelect);
list.renderHandler = new Handler(this, updateItem);
Laya.stage.addChild(list);
// 设置数据项为对应图片的路径
var data = [];
for (var i = 0; i < 10; ++i)
{
data.push("../../res/ui/listskins/1.jpg");
data.push("../../res/ui/listskins/2.jpg");
data.push("../../res/ui/listskins/3.jpg");
data.push("../../res/ui/listskins/4.jpg");
data.push("../../res/ui/listskins/5.jpg");
}
list.array = data;
}
function updateItem(cell, index)
{
cell.setImg(cell.dataSource);
}
function onSelect(index)
{
console.log("当前选择的索引:" + index);
}
})();
没有找到相关结果
已邀请:
要回复问题请先登录
1 个回复
Aar0n
赞同来自: