首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

cocos2d-x中的CCTableView的有关用法

2014-02-22 
cocos2d-x中的CCTableView的相关用法当应用中出现列表时,就需要用到CCTableView,具体的用法见下面的代码:c

cocos2d-x中的CCTableView的相关用法

当应用中出现列表时,就需要用到CCTableView,具体的用法见下面的代码:

cocos2d::extension::CCTableViewCell * marketContent::tableCellAtIndex(CCTableView *table, unsigned int idx){    CCString *string = CCString::createWithFormat("%d", idx);    //CCTableViewCell *cell = table->dequeueCell();     如果列表子项是可变的,那就用下面的方法,否则,就推荐用这个方法,产生不变大小的子项    CCTableViewCell *cell = table->cellAtIndex(idx);    if (!cell)    {        cell = new CCTableViewCell();        cell->autorelease();        if(type == 1)        {           //另一个类,产生可变的精灵,其实就是继承自CCSprite,根据点击与否,产生不同大小的列表子项,大的由两张背景图片组成,小的由一张图片组成。            MarketContentSprite *backGround = MarketContentSprite::create(idx, isOpen);            cell->addChild(backGround ,1);            cell->setTag(idx);            backGround->setPosition(ccp(480, 50));        }        else        {            CCSprite *backGround = CCSprite::create("market_item_2.png");            if(idx == 0)            {                backGround = CCSprite::create("market_item_1.png");            }            else if(idx == 5)            {                backGround = CCSprite::create("market_item_3.png");            }            cell->addChild(backGround ,1);            backGround->setPosition(ccp(480, 50));   //这里设置不当,也有可能导致列表显示不全等            CCString *string = CCString::createWithFormat("market_chipsLogo%d.png",idx);                                                                                                      CCSprite *moneyLogo = CCSprite::create(string->getCString());            backGround->addChild(moneyLogo);            moneyLogo->setPosition(ccp(120, 50));            CCSprite *normSprite = CCSprite::create("btn_market_buy_pre.png");            CCLabelTTF *buyttf = CCLabelTTF::create("buy now", "", 22);            buyttf->setPosition(ccp(70, 30));            normSprite->addChild(buyttf);            CCSprite *selectedSprite = CCSprite::create("btn_market_buy.png");            buyttf = CCLabelTTF::create("buy now", "", 29);            buyttf->setPosition(ccp(70, 30));            selectedSprite->addChild(buyttf);   //设置不同的字体,从而使点击时,看到变大的字体            CCMenuItemSprite *buysprite = CCMenuItemSprite::create(normSprite, selectedSprite, NULL, this, menu_selector(marketContent::buyNow));            CCMenu *buyMenu = CCMenu::create(buysprite,NULL);            backGround->addChild(buyMenu,1);            buyMenu->setPosition(ccp(600, 50));                    }        CCLabelTTF *label = CCLabelTTF::create(string->getCString(), "Helvetica", 20.0);        label->setPosition(CCPointZero);        label->setTag(123);        cell->addChild(label);    }    else    {        CCLabelTTF *label = (CCLabelTTF*)cell->getChildByTag(123);        label->setString(string->getCString());    }        return cell;    }unsigned int marketContent::numberOfCellsInTableView(cocos2d::extension::CCTableView *table){    if(type == 1)    {        return 4;    }    else    {        return 6;    }    }CCSize marketContent::cellSizeForTable(cocos2d::extension::CCTableView *table){    return CCSizeMake(960, 102);}CCSize marketContent::tableCellSizeForIndex(cocos2d::extension::CCTableView *table, unsigned int idx){    if(type == 1)    {        if(idx == isOpen - 1)     //根据不同的状态,返会不同的子项的宽度        {            return CCSizeMake(960, 264);        }        else        {            return CCSizeMake(960, 102);        }    }    else    {        return CCSizeMake(960, 102);    }    }void marketContent::scrollViewDidScroll(cocos2d::extension::CCScrollView *view){    }void marketContent::scrollViewDidZoom(cocos2d::extension::CCScrollView *view){    }void marketContent::tableCellTouched(CCTableView *table, cocos2d::extension::CCTableViewCell *cell){    int idx = cell->getIdx();    if(type == 1)    {        if(idx == isOpen -1)     //处理触摸事件,更改显示状态        {            isOpen = 0;            lastOpen = 0;            pTableView->reloadData();            return;        }        idx = cell->getIdx();        isOpen = idx +1;        lastOpen = isOpen;        pTableView->reloadData();        if(isOpen == 4)        {            pTableView->setContentOffset(pTableView->maxContainerOffset());     //如果是最后一个的话,列表向上弹到最大位置        }            }        CCLog("%d",idx);}void marketContent::buyNow(cocos2d::CCObject *pSender){     //  获得点击列表的子项,确定点击的按钮    CCTableViewCell *tablecell = (CCTableViewCell *)(((CCMenu *)pSender)->getParent()->getParent()->getParent());    CCLog("hhh %d",tablecell->getIdx());}





热点排行