写了一个继承ccui.PageView的类,为什么它的update不会执行呢?
在h5中正常,jsb下就不行了
用log在PageView中标记也没有输出。。
请问你是调用了scheduleUpdate来注册update函数的么?
ccui.PageView 的update
update: function (dt) {
if (this._isAutoScrolling) {
switch (this._autoScrollDir) {
case 0:
var step = this._autoScrollSpeed * dt;
if (this._autoScrollDistance + step >= 0.0) {
step = -this._autoScrollDistance;
this._autoScrollDistance = 0.0;
this._isAutoScrolling = false;
}
else {
this._autoScrollDistance += step;
}
this.scrollPages(-step);
if(!this._isAutoScrolling){
this.pageTurningEvent();
}
break;
break;
case 1:
var step = this._autoScrollSpeed * dt;
if (this._autoScrollDistance - step <= 0.0) {
step = this._autoScrollDistance;
this._autoScrollDistance = 0.0;
this._isAutoScrolling = false;
}
else {
this._autoScrollDistance -= step;
}
this.scrollPages(step);
if(!this._isAutoScrolling){
this.pageTurningEvent();
}
break;
default:
break;
}
}
},
不用手动调用也会执行啊,系统有调用了不是么?
能否测试一下,先调用unscheduleUpdate(),在调用scheduleUpdate(),能否注册成功
这是JSB与WEB引擎的一点差异,JSB中是在C++层注册的scheduleUpdate,C++层的update函数中没有检查js层是否有重载,也不会主动调用js层的函数,但是unscheduleUpdate之后会取消C++层的注册,再调用scheduleUpdate应该就会成功,需要注意的是,如果想要保留PageView原本的update逻辑,需要在js中的update函数中调用 this._super()
1.如果在web中系统会自动调用的函数,例如update,在jsb中我们要自己scheduleUpdate 调用是这样吗?
如果需要保留的话,再 this._super()
但是 例如ccui.PageView中的 onSizeChanged (它也要手动调用是吧。。)调用父类的会报错,父类木有这个函数
然而 init 会由系统自动调用。。
改了 _leftBoundary和 _rightBoundary 也不起作用诶。。
update 自己注册调用是正常了。
但是设置边界boundary无效,以及设置子page的opacity也无效。 web中正常
— Begin quote from ____
引用第8楼0924wyr于2014-07-16 21:02发表的 回 5楼(0924wyr) 的帖子 :
update 自己注册调用是正常了。
但是设置边界boundary无效,以及设置子page的opacity也无效。 web中正常 http://www.cocoachina.com/bbs/job.php?action=topost&tid=214453&pid=1005291
— End quote
可以发出来你的update函数么?