CocoCocos2d JS RC0 版本pageView子对象不能点击了~ BETA版是好的
我们的问题是一样的,看来用pageview的人不多。beta版是好的,rc0的mouse事件也没问题,但jsb下touch事件有问题。不过可以在pageview视框的左右点击,可以触发onTouchBegan这些事件。暂时还没找到原因。
看了一下源码 重构的UI这部分是todo
貌似代码没有写完的样子
期待官方早点修复 项目马上就要上了…
你指handlePressLogic这个函数变空了吧。这个貌似不是原因,rc0相比beta换了移动offset的计算方式,rc0用touch.getLocation().x - touch.getPreviousLocation().x这样去算了,所以可以不管第一次touch下去的起始x轴。
我估计是还要底层的问题,因为在pageview区域外的左侧和右侧,都能捕获touch事件,并且事件对象event.getCurrentTarget()就是pageview的子对象。
我们的Tests中的pageView是可以拖动的。 你否能给一个重现问题的小Demo呢?
“看了一下源码 重构的UI这部分是todo, 貌似代码没有写完的样子 ”
原因是,我们想在v3.0 rc中把Cocos UI的接口与-x统一起来,这样V3.0 正式版发布时不再改变接口。由于时间比较紧,测试工作做得不是很到位,请谅解。我们现在正在对这部分进行详细的测试与优化。
谢谢你们的反馈
David
哇,终于开发团队的人来回答了!
pageview可以滑动,但选定后,里面layout的子对象设置了touch事件,点击进入下一场景,这个点击事件出问题了。pageview的视区点击无法触发,但在其左右点击可以触发。beta版是正常的,rc0的mouse事件也是正常的。
initPageView: function(data) {
var roles = data.roles;
// 新建 page view
var self = this, pageView = ccui.PageView.create();
pageView.setTouchEnabled(true);
pageView.setSize(cc.size(480, 600));
pageView.x = (winSize.width - pageView.width) / 2;
pageView.y = (winSize.height - pageView.height) / 2 + 50;
// 添加角色
var role_count = roles.length;
for (var key = 0; key < role_count; key ++) {
var role = roles;
//默认选择第一个角色
if (key == 0) {
self.lbName.setString(role.name);
self.uInfo = {
name: data.name,
roleId: role.id,
sex: role.sex
};
/*cc.sys.localStorage.name = data.name;
cc.sys.localStorage.roleId = role.id;
cc.sys.localStorage.sex = role.sex;*/
}
var layout = ccui.Layout.create();
layout.setSize(cc.size(480, 600));
var layoutRect = layout.getSize();
this.roleArray = Role.create("res/role" + key + "/role.ExportJson");
this.roleArray.attr({
x: layoutRect.width / 2,
y: layoutRect.height / 2,
//anchorX: 0,
//anchorY: 0
});
//this.roleArray.x = layoutRect.width / 2;
//this.roleArray.y = layoutRect.height / 2;
layout.addNode(this.roleArray);
//* 给动画node添加点击事件
if (cc.sys.capabilities.hasOwnProperty('mouse')) {
cc.eventManager.addListener({
event: cc.EventListener.MOUSE,
onMouseDown: this.onMouseDown,
onMouseUp: this.onMouseUp,
onMouseMove: this.onMouseMove
}, this.roleArray);
}
//*/
//*
if (cc.sys.capabilities.hasOwnProperty('touches')) {
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: true,
onTouchBegan: this.onTouchBegan,
onTouchMoved: this.onTouchMoved,
onTouchEnded: this.onTouchEnded
}, this.roleArray);
}
//*/
pageView.addPage(layout);
}
pageView.addEventListenerPageView(function(sender, type) {
self.pageViewEvent(sender, type, roles);
}, self);
this.addChild(pageView);
},
```
代码大概是这样,就是用pageview做了选角这个界面。
3.1版本也还是没有修复啊,PageView只能监听滑动事件,注册的touch事件无法触发,什么情况???这样用起来好麻烦,
现在这个问题解决了吗?
sample里面有相关例子,已经可以触发点击事件了。