cocos2dx-JS 多行多列TableView

版权声明:本博客所有原创文章均可以转载 https://blog.csdn.net/ivanx_cc/article/details/50015395

在网上找了很多实现多行多列的TableView,发现都没法真正实现,之前使用C++时,打算重写一个,由于时间比较紧就没有做,

网上的基本都不合适,现在使用JS开发,发现JS开发的坑简直太多了,因为才开始学习JS,发现很多特性会导致很奇怪的问题,而且不知道怎么解决,

例如在重写TableView时,发现继承TableView根本就不行,完全行不通,这个也可能有cocos把一部分都编译成了库有关系。但是这就影响了实现,因为

父类TableView根本不会调用我的MultiTableView的函数,导致很多需要重写,结果随着时间和代码的修改,发现已经改的乱七八糟了,这时我也把Tableview

相关的代码都读的差不多, 发现走进了一个大坑。

下面就简单介绍一下,当把一个东东完全读懂后,就会发现修改或者重写,太简单了。也根本不用修改那么多代码。

首先把源文件中的CCTableView.js拷贝出来,从新建立一个文件, 然后把相关的代码都修改掉自己的名字,我起的名字是NTableView,原因是我从ZTableView

一直尝试到了n,各种寻到的灵丹妙药结果都不灵。哎 没办法。当修改完成后会提示几个错误, 其中会提示 cc.Array*的一个东东 undefined,我是初学js,所以没搞明白

为什么,索性把这个函数也拷贝出来,这样就有了两个文件。一个是为排列的文件,一个是我们最重要的NTableView。

重点说一下具体修改什么, 没有成功的看到我说的后,会感觉 太**简单了,简直是要命a

其实只需要修改掉排列位置的地方, 更新位置的地方, 在释放的地方 计算出需要释放多少个。就可以

如果只是修改 Verticle的 一共也改不了几行代码, 但是你回发现 touch方法不能用了, 为什么呢? 因为我们虽然重载了scrollView,但是scrollView并没有调用我们

的touch方法, 手动添加监听, Ok,接着会提示 无法执行 scrollView中的touch方法, 我猜这里 应该是还没有完全初始化好scrollView,然而 scrollView的touch方法

会先于 TableView中的调用,导致不可见。 这样就干脆删除掉就好了, 但是 当你 滑动时,滑到最后发现社么都没有了, 这是因为当offset为 负时, index返回了一共中间

的cell的值,这个问题 我没有搞明白,直接加了一个判断, 如果为负, 就直接返回。 同样在滑动时,要判断cell是否能够取得,如果为空了也要返回,这样就保证cell的正确。


还有NTableViewDataSource 中定义了 col的数量, row的数量, 最终的效果 一个横一个竖







猜你喜欢

转载自blog.csdn.net/ivanx_cc/article/details/50015395
今日推荐