首先放上部分代码,
先是头文件的,
#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT;
class CPaintScene : public CCLayer, public CCTableViewDataSource, public CCTableViewDelegate
{
public:
CPaintScene(void);
~CPaintScene(void);
static CCScene *scene();
CREATE_FUNC(CPaintScene);
virtual bool init();
virtual void scrollViewDidScroll(cocos2d::extension::CCScrollView *view);
virtual void scrollViewDidZoom(cocos2d::extension::CCScrollView *view);
//处理触摸事件,可以计算点击的是哪一个子项
virtual void tableCellTouched(CCTableView *table, CCTableViewCell *cell);
//每一项的宽度和高度
virtual CCSize cellSizeForTable(CCTableView *table);
//生成列表每一项的内容
virtual CCTableViewCell *tableCellAtIndex(CCTableView *table, unsigned int idx);
//一共多少项
virtual unsigned int numberOfCellsInTableView(CCTableView *table);
//
virtual void tableCellHighlight(CCTableView* table, CCTableViewCell* cell);
virtual void tableCellUnhighlight(CCTableView* table, CCTableViewCell* cell);
virtual void tableCellWillRecycle(CCTableView* table, CCTableViewCell* cell);
```
然后是CPP文件里的主要方法,
bool CPaintScene::init()
{
if (!CCLayer::init())
{
return false;
}
this->setTouchEnabled(true);
CCSprite *bgSprite = CCSprite::create("shoeDrawing/drawingbg.png");
bgSprite->setPosition(ccp(WINSIZE_WIDTH * 0.5f, WINSIZE_HEIGHT * 0.5f));
// 将图片加载到精灵帧缓存池
m_frameCache = CCSpriteFrameCache::sharedSpriteFrameCache();
m_frameCache->addSpriteFramesWithFile("shoeDrawing/pen.plist", "shoeDrawing/pen.png");
// 滑屏相关操作
CCTableView *pTableView = CCTableView::create(this, CCSizeMake(800, 480));
pTableView->setDirection(kCCScrollViewDirectionVertical); // 设置滚动的方向
pTableView->setPosition(CCPointZero);
pTableView->setDelegate(this);
// 决定VIEW的单元如何填充
pTableView->setVerticalFillOrder(kCCTableViewFillTopDown);
this->addChild(pTableView,1);
// 刷新VIEW
pTableView->reloadData();
//
this->addChild(bgSprite,0);
return true;
}
void CPaintScene::tableCellTouched(CCTableView *table, CCTableViewCell *cell)
{
CCLOG("cell touched at index: %i", cell->getIdx());
CCSprite *temp = (CCSprite *)(cell->getChildByTag(1));
//temp->setPositionX(20.f);
}
CCTableViewCell *CPaintScene::tableCellAtIndex(CCTableView *table, unsigned int idx)
{
// 格式化相应的图片名称
CCString *pString = CCString::createWithFormat("%d.png", idx + 1);
CCTableViewCell *pCell = table->dequeueCell();//
if (!pCell)
{
pCell = new CCTableViewCell();
pCell->autorelease();
//CCSprite *penSprite = CCSprite::create("building.png");
CCSprite *penSprite = CCSprite::createWithSpriteFrameName(pString->getCString());
penSprite->setAnchorPoint(CCPointZero);
penSprite->setPosition(CCPointZero);
pCell->addChild(penSprite);
CCLabelTTF *pLabel = CCLabelTTF::create(pString->getCString(), "Arial", 20.0);
pLabel->setPosition(CCPointZero);
pLabel->setAnchorPoint(CCPointZero);
pLabel->setTag(123);
pCell->addChild(pLabel);
}
else
{
CCLabelTTF *pLabel = (CCLabelTTF *)pCell->getChildByTag(123);
pLabel->setString(pString->getCString());
}
return pCell;
}
```
本来是想在tableCellTouched 这里取得对应的精灵,然后点击改变其坐标,但发现这样取不出来,
进到CCTableView的头文件似乎也没找到合适的方法,
求教 下怎么才能取得点击项上的对应的精灵对象呢?:904: