问一个tableview值得思考的问题

首先说下引擎里面tableview的设计思路(自己琢磨出来的):tableview的cell只创建足够tableview显示,而不会多余创建甚至1个,而为什么它能够显示无数个cell呢,它是把cell复用了,通过索引(这个是从0到N-1的),设置你需要显示的数据。

上面是一个背景,下面说说问题:

我们想实现一个效果,tableview出现的时候,它里面的cell有个moveTo的动作,所以我是在cell的onEnter里面创建了这个动作,并且播放,但是tableview刚出现的时候,可能只创建了4个cell,而用户滑动tableview的时候,会显示多于4个的cell(当cell一半滑出tableview之外的时候),这样问题就出现了,本来4个cell的动作已经运行完了,而滑动tableview,又创建了新的一个cell(复用不够了),这个cell也播放了moveTo的动作。

在cell的onEnter中加个条件,判断cell->getposition().y < tableview->getViewSize().Height(如果你的table设置了kCCTableViewFillTopDown),播放动画

我试了下,还是没有成功,cell直接就没动作,代码是走到runAction了,tablev 是竖直方向,从上到下的顺序 :6:

问题终于解决了,定义一个bool静态成员,给tableview添加一个touch事件,注意,一定要允许穿透,也就是不能吞掉touchListener,在这个touch事件里面给静态成员赋值,而在cell的onEnter里面,判断这个静态成员变量,这样可以做到,在滑动tableview的时候,即使有创建新的cell,也不允许这个cell执行动作 。