zoukankan      html  css  js  c++  java
  • 在cocos2d-x在CCTableView使用控制

    头文件需要继承CCTableViewDataSource和CCTableViewDelegate
    //CCScrollViewDelegate
    virtual void scrollViewDidScroll(CCScrollView* view){};
    virtual void scrollViewDidZoom(CCScrollView* view){};

    //CCTableViewDelegate
    virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell);//当点击单元格格时触发的方法
    //单元格中CCTableViewCell类中有一个属性idx,能够推断点击的这个单元格的索引
    virtual void tableCellHighlight(CCTableView* table,CCTableViewCell* cell);//按下去的时候就是高亮显示,这里能够设置高
    virtual void tableCellUnhighlight(CCTableView* table,CCTableViewCell* cell);//松开的时候,取消高亮状态

    //CCTableViewDataSource
    virtual unsigned int numberOfCellsInTableView(CCTableView* table);//返回这个表格有多少单元格
    virtual CCSize cellSizeForTable(CCTableView* table);//返回每一个Cell的大小
    virtual CCTableViewCell* tableCellAtIndex(CCTableView* table,unsigned int idx); //生成单元格。即单元格的内容


    //实例
    在init方法中:
    CCSize winSize = CCDirector::sharedDirector() -> getWinSize();
    CCTableView* tableView = CCTableView::create(this,CCSizeMake(winSize.width/2,winSize.height/3));
    tableView -> setDirection(kCCScrollViewDirectionVertical);
    tableView -> setPosition(ccp(winSize.width * 0.07,winSize.width * 0.35));
    tableView -> setDelegate(this);
    tableView -> setTag(802);
    tableView -> setAnchorPoint(CCPointZero);
    tableView -> setTouchPriority(-129);
    this -> addChild(tableView);
    //这里为什么要设置此表格的触摸优先级为-129呢?
    假设不这么办的话,当这个层的触摸开启的时候,滑动表格中的单元格不会滑动,把表格的触摸给吞噬掉了,所以要这样设置。


    那么单元格的内容是什么呢?
    以下看这种方法:
    CCTableViewCell* tableCellAtIndex(CCTableView* table,unsigned int idx)
    {
      CCTableViewCell* cell = table -> dequeueCell();
      if(!cell)
      {
        cell = new CCTableViewCell();
        cell -> autorelease();
      }
      cell -> removeAllChildrenWithCleanup(true);
      CCLabelTTF* label = CCLabelTTF::create("abc","Arial",24);
      label -> setPosition(ccp(150,30));
      cell -> addChild(label);


      return cell;
    }
    //这样单元格中就有了内容
    那么如何获取到单元格的内容呢?看以下这种方法
    void tableCellTouched(CCTableView* table, CCTableViewCell* cell)
    当点击单元格时,会运行这种方法,cell中有个属性getIdx(),能够推断点击的单元格是第几个单元格,当然。通过cell->getChildByTag


    (),能够捕获到cell中有什么东西。
    当单元格上有button时,在实现button的方法中:
    void menuCallBack(CCObject* object)
    {
      CCTableViewCell* cell = (CCTableViewCell*)(((CCMenuItemImage*)object)->getParent()->getParent());
      CCLog("menu click cell index : %d ",cell -> getIdx());
    }
    这样也能够通过单元格上的button为了得到单位格。
      

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    JavaScript函数之美~
    如何用iframe标签以及Javascript制作时钟?
    Hammer.js
    leadJS初构建
    SQLite-创建、附加、分离数据库
    Javascript异步编程的4种方法
    JavaScript的数组实现队列与堆栈的方法
    使用PHP创建一个REST API(译)
    HTTP API响应数据规范整理
    CMD 模块定义规范
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4736070.html
Copyright © 2011-2022 走看看