void MainLayerZhuangBeiBaseBody::disableAllTouchEnd() { mTableView->setTouchEnabled(true); int cellNum = numberOfCellsInTableView(mTableView); for (int i=0; i<cellNum; i++) { CCTableViewCell* cell = mTableView->cellAtIndex(i); if (cell) { CCNode* bg = cell->getChildByTag(TAG_EquipBaseBody_TABLE_ITEM); if (bg) { CCMenu* menu = (CCMenu*)bg->getChildByTag(TAG_BaseBody_MENU); if (menu) { menu->setEnabled(true); } } } } CCPoint beg = mTableView->getContentOffset(); if (mOffset.y < beg.y) mOffset.y = beg.y; if (mOffset.y > tableCellSizeForIndex(mTableView,0).height*3) mOffset.y = tableCellSizeForIndex(mTableView,0).height*3; mTableView->setContentOffset(mOffset); }
CCTableViewCell* TanSuoLayer::tableCellAtIndex(CCTableView *table, unsigned int idx) { CCTableViewCell *cell = table->dequeueCell(); if (cell != NULL) { cell->removeAllChildren(); } else { cell = new CCTableViewCell(); cell->autorelease(); } if (table->getParent() != NULL) { CCSize cellSize = tableCellSizeForIndex(table, idx); Profession profId = mHeros.at(idx)->getCurrentProperty().profession; //head Profession 1-10 BaseSprite *headImg = BaseSprite::create(ImageManager::getManager()->getImageData_ProfessionHead(profId).getCurrentImageFile()); cell->addChild(headImg); headImg->setPosition(ccp(cellSize.width/2, 92)); //menu FXScrollMenu *menu = FXScrollMenu::create( table->getParent()->convertToWorldSpace(table->getPosition()), table->getViewSize()); cell->addChild(menu, 1); menu->setPosition(ccp(0,0)); CCMenuItemImage *item = CCMenuItemImage::create( "renxing_renwu_touxiang.png", "renxing_renwu_touxiang_select.png", "renxing_renwu_touxiang_select.png", this, menu_selector(TanSuoLayer::menuItemClicked_JieFenHeroSelect)); menu->addChild(item, 0, profId); m_lMenuItemList.push_back(item); item->setPosition(headImg->getPosition()); //name CCLabelTTF *nameLabel = CCLabelTTF::create(BaseActorPropertyParser::getParser()->getExtraProerty(profId).nameInChinese.c_str() , fontStr_kaiti, m_nFontSize); cell->addChild(nameLabel); nameLabel->setPosition(ccp(headImg->getPositionX() , headImg->getPositionY()-headImg->getContentSize().height/2-nameLabel->getContentSize().height/2)); nameLabel->setColor(ccc3(195, 145, 96)); } return cell; }
bool RepayView::init(){ if (!PopupBaseView::init()) { return false; } setIsHDPanel(true); CCLoadSprite::doResourceByCommonIndex(8, true); CCLoadSprite::doResourceByCommonIndex(11, true); CCLoadSprite::doResourceByCommonIndex(101, true); CCLoadSprite::doResourceByCommonIndex(305, true); CCLoadSprite::doResourceByCommonIndex(502, true); setCleanFunction([](){ CCLoadSprite::doResourceByCommonIndex(8, false); CCLoadSprite::doResourceByCommonIndex(11, false); CCLoadSprite::doResourceByCommonIndex(101, false); CCLoadSprite::doResourceByCommonIndex(305, false); CCLoadSprite::doResourceByCommonIndex(502, false); CCLoadSprite::releaseDynamicResourceByType(CCLoadSpriteType_GOODS); }); m_dataCount = RepayController::getInstance()->repayRewards.size(); setTitleName(""); auto tmpCCB = CCBLoadFile("RepayView",this,this); setContentSize(tmpCCB->getContentSize()); auto size = CCDirector::sharedDirector()->getWinSize(); float extH = getExtendHeight(); float add = size.height - 852; if (CCCommonUtils::isIosAndroidPad()) { add = size.height - 2048; add = add / 2.4; } m_bgNode->setPositionY(m_bgNode->getPositionY()-extH); auto tbg = CCLoadSprite::loadResource("Bottom frame04.png"); auto tBatchNode = CCSpriteBatchNode::createWithTexture(tbg->getTexture()); int maxHight = ceil(size.height*1.0/90); for (int j = 0; j<maxHight; j++) { for (int i=0; i<8; i++) { auto bg = CCLoadSprite::createSprite("Bottom frame04.png"); bg->setAnchorPoint(ccp(0, 0)); bg->setPosition(ccp(i*90, j*90)); tBatchNode->addChild(bg); } } m_bgNode->addChild(tBatchNode); CCSize nodeRewardSize = m_nodeRewards->getContentSize(); nodeRewardSize.height += extH; m_nodeRewards->setContentSize(nodeRewardSize); m_nodeRewards->setPositionY(m_nodeRewards->getPositionY()-extH); m_tabRewards = CCTableView::create(this, nodeRewardSize); m_tabRewards->setDirection(kCCScrollViewDirectionVertical); m_tabRewards->setVerticalFillOrder(kCCTableViewFillTopDown); m_tabRewards->setTouchPriority(Touch_Default); m_tabRewards->setDelegate(this); m_nodeRewards->addChild(m_tabRewards); // m_scrollPoints = CCScrollView::create(m_nodePoints->getContentSize()); // m_scrollPoints->setDirection(kCCScrollViewDirectionHorizontal); // m_scrollPoints->setTouchEnabled(false); // m_nodePoints->addChild(m_scrollPoints); // m_scrollPoints->setPosition(ccp(0, 0)); auto clipNode = CCClipNode::create(m_nodePoints->getContentSize().width, m_nodePoints->getContentSize().height); clipNode->setAnchorPoint(CCPointZero); m_nodePoints->addChild(clipNode); clipNode->setTag(REPAY_CLIP_NODE_TAG); CCNode *node = CCNode::create(); clipNode->addChild(node); node->setTag(REPAY_CLIP_NODE_TAG); auto clipNode1 = CCClipNode::create(m_nodePoints->getContentSize().width - 45, m_nodePoints->getContentSize().height); m_nodePoints->addChild(clipNode1); clipNode1->setPosition(ccp(23,0)); clipNode1->setTag(REPAY_CLIP_NODE_BAR_TAG); auto progress = CCLoadSprite::createScale9Sprite("01_03.png"); progress->setAnchorPoint(ccp(0, 0.5)); progress->setTag(REPAY_CLIP_NODE_BAR_TAG); clipNode1->addChild(progress); progress->setPreferredSize(CCSize(1, 26)); progress->setPosition(ccp(2.5, 60)); // setTitleName(_lang("133246")); m_lblTitle->setString(_lang("101100"));//距离累计充值大反馈结束还有 // setButtonTitle(m_btnGoBuy, _lang("101221").c_str()); m_lblPointTitle->setString(_lang("133247")); m_lblRewardTitle->setString(_lang("105848")); m_lblPointOrgW = m_lblPointTitle->getContentSize().width * m_lblPointTitle->getOriginScaleX(); m_lblPointOrgX = m_lblPointTitle->getPositionX(); onTimer(0); this->schedule(schedule_selector(RepayView::onTimer),1.0); initPointNode(true); CCPoint offset = m_tabRewards->getContentOffset(); int newPoint = RepayController::getInstance()->getNewPayPoint(); int lv = RepayController::getInstance()->getLVIndexByPoint(newPoint) - 3; float changeH = 0; while (lv>-1) { changeH += tableCellSizeForIndex(m_tabRewards, lv).height; lv--; } offset.y += changeH; m_tabRewards->setContentOffset(offset); return true; }
void MainLayerZhuangBeiBaseBody::scrollToIndex(int index) { // index不对不操作 if (index < 0 || index > numberOfCellsInTableView(mTableView) - 1) return; { // 保存所有的位置数据 std::vector<float> m_vCellsPositions; { int cellNum = numberOfCellsInTableView(mTableView); m_vCellsPositions.resize(cellNum + 1, 0.0); if (cellNum > 0) { float currentPos = 0; CCSize cellSize; for (int i=0; i < cellNum; i++) { m_vCellsPositions[i] = currentPos; cellSize = tableCellSizeForIndex(mTableView, i); switch (mTableView->getDirection()) { case kCCScrollViewDirectionHorizontal: currentPos += cellSize.width; break; default: currentPos += cellSize.height; break; } } m_vCellsPositions[cellNum] = currentPos;//1 extra value allows us to get right/bottom of the last cell } } // __offsetFromIndex CCPoint offset; { //CCSize cellSize; switch (mTableView->getDirection()) { case kCCScrollViewDirectionHorizontal: offset = ccp(m_vCellsPositions[index], 0.0f); break; default: offset = ccp(0.0f, m_vCellsPositions[index]); break; } } // _offsetFromIndex const CCSize curr_cellSize = tableCellSizeForIndex(mTableView, index); if (mTableView->getVerticalFillOrder() == kCCTableViewFillTopDown) { offset.y = mTableView->getContainer()->getContentSize().height - offset.y - curr_cellSize.height; } // 移动container,把cell放在最上面 offset.y = -offset.y; // cell在y处,那么container就去要移动-y才可以看得到 // 设置位置,此时offset是刚好在最下面,需要移动到最上面 offset.y = offset.y + mTableView->getViewSize().height - curr_cellSize.height; if (offset.y > mTableView->maxContainerOffset().y) { offset.y = mTableView->maxContainerOffset().y; } if (offset.y < mTableView->minContainerOffset().y) { offset.y = mTableView->minContainerOffset().y; } // //mTableView->setContentOffsetInDuration(ccp(offset.x,offset.y),0.1f); mTableView->setContentOffset(ccp(offset.x,offset.y)); } //CCLog("MainLayerZhuangBeiBaseBody::scrollToIndex --> index = %d",index); //float min_offset = mTableView->minContainerOffset().y; // -x //float max_offset = mTableView->maxContainerOffset().y; // 0 //float offset_y = -min_offset; //for (int i=0;i<index;i++) //{ // offset_y += tableCellSizeForIndex(mTableView,i).height; //} //mTableView->setContentOffsetInDuration(ccp(mTableView->getContentOffset().x,offset_y),10.1f); }