cocos2dx-JS 多行多列TableView

在網上找了很多實現多行多列的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的數量, 最終的效果 一個橫一個豎







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章