#include <iostream>
#include "AbstractTable.h"
class PKTable : public AbstractTable {
public:
PKTable();
~PKTable();
virtual bool init();
virtual void onEnter();
virtual void onExit();
virtual void scrollViewDidScroll(CCScrollView *view){};
virtual void scrollViewDidZoom(CCScrollView *view){};
virtual CCSize cellSizeForTable(CCTableView *table);
virtual CCSize tableCellSizeForIndex(CCTableView *table, unsigned int idx);
virtual void tableCellTouched(CCTableView *table, CCTableViewCell *cell);
virtual CCTableViewCell *tableCellAtIndex(CCTableView *table, unsigned int idx);
virtual unsigned int numberOfCellsInTableView(CCTableView *table);
CREATE_FUNC(PKTable);
private:
int m_nOpenIdx; //记录点击的cell 所在的index
bool m_isOpenStatus;// 记录是否已经开启不等高度状态
void onAttack(CCObject *pObj);
};
#include "PKTable.h"
PKTable::PKTable()
{
}
PKTable::~PKTable()
{
}
bool PKTable::init()
{
AbstractTable::init();
m_nOpenIdx = -1;
m_isOpenStatus = false;
return true;
}
void PKTable::onEnter()
{
AbstractTable::onEnter();
this->onCreate(CCSize(640, 640));
m_tableView->setPosition(ccp(0, 110));
m_tableView->setVerticalFillOrder(kCCTableViewFillTopDown);
m_tableView->setDirection(kCCScrollViewDirectionVertical);
m_tableView->reloadData();
}
void PKTable::onExit()
{
AbstractTable::onExit();
}
//TODO scroll view delegate adn data sources delegate
CCTableViewCell *PKTable::tableCellAtIndex(cocos2d::extension::CCTableView *table, unsigned int idx)
{
CCTableViewCell *pCell = table->cellAtIndex(idx);
if (!pCell) {
pCell = new CCTableViewCell();
pCell->autorelease();
CCSprite *pBg = NULL;
if (m_isOpenStatus && (m_nOpenIdx == idx)) {
pBg = CCSprite::create("pk_bg_03.png");
pBg->setPosition(ccp(320, 372/2));
}else {
pBg = CCSprite::create("pk_bg_02.png");
pBg->setPosition(ccp(320, 158/2));
}
pCell->addChild(pBg, 0);
pCell->setTag(idx);
}
return pCell;
}
CCSize PKTable::tableCellSizeForIndex(cocos2d::extension::CCTableView *table, unsigned int idx)
{
if (m_nOpenIdx == idx) {
return CCSize(640, 372);
}
return CCSize(640, 158);
}
CCSize PKTable::cellSizeForTable(cocos2d::extension::CCTableView *table)
{
return CCSize(640,158);
}
unsigned int PKTable::numberOfCellsInTableView(cocos2d::extension::CCTableView *table)
{
return m_pUser->m_userList->m_users.size();
}
void PKTable::tableCellTouched(cocos2d::extension::CCTableView *table, cocos2d::extension::CCTableViewCell *cell)
{
int touchIdx = cell->getIdx();
if (m_nOpenIdx != touchIdx) {
m_isOpenStatus = true;
m_nOpenIdx = touchIdx;
}else {
m_isOpenStatus = false;
m_nOpenIdx = -1;
}
m_tableView->reloadData();
if (touchIdx >= 2) {
CCPoint point = m_tableView->getContentOffset();
m_tableView->setContentOffset(ccpAdd(point, ccp(0, 158 * (touchIdx - 1)))); //此处为了保证cell的位置在可见的位置,不被隐藏
}
}
//TODO menu call
void PKTable::onAttack(cocos2d::CCObject *pObj)
{
}