void SpellDiagramNode::addMod( int idx, float x, float y, int level ) { if( idx < m_modSlots.size() ) { CCDrawNode* pt = m_modSlots[idx]; pt->runAction( CCMoveTo::create(TRANSITION_TIME, ccp(x,y)) ); }else { CCDrawNode* pt = createPentNode(MOD_COLOR, ccc4f(0,0,0,1)); pt->setPosition(x,y); addChild(pt); pt->setScale(0.01f); pt->runAction(CCScaleTo::create(TRANSITION_TIME/2, 1,1)); m_modSlots.push_back(pt); } }
bool TipsScene::init() { if ( !CCLayer::init()) { return false; } CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); mCallFunc = NULL; targetRidus = 100; //创建一个遮罩层。 CCLayerColor* pLayer; if (isHasTarget && !istouchRemove) { pLayer=CCLayerColor::create(ccc4(0,0,0,200)); /*创建剪裁节点*/ CCClippingNode* pClip = CCClippingNode::create() ; pClip->setInverted(true) ;//设置是否反向,将决定画出来的区域是透明的还是黑色的。 this->addChild(pClip) ; /*注意将LayerColor层添加到剪裁节点上*/ pClip->addChild(pLayer) ; //模板 CCDrawNode* pStencil = CCDrawNode::create() ; static ccColor4F red = {1,0,0,1} ; float radius = targetRidus/2 ; const int nCount = 200 ; const float angel = 2.0 * (float)M_PI/nCount ; static CCPoint circle[nCount] ; for (int i=0; i<nCount; i++) { float radian = i*angel ; //弧度 circle[i].x = radius * cosf(radian) ; circle[i].y = radius * sinf(radian) ; } pStencil->drawPolygon(circle, nCount, red, 0, red) ; pStencil->runAction(CCRepeatForever::create(CCSequence::createWithTwoActions(CCScaleBy::create(0.2f, 0.9f), CCScaleTo::create(0.2f, 1)))) ; pStencil->setPosition(targetPoint); pClip->setStencil(pStencil) ; //将这个区域从剪裁节点上面抠出来。Stencil是模板的意思 } else if (shouldPauseGame) { pLayer=CCLayerColor::create(ccc4(0,0,0,100)); this->addChild(pLayer) ; } else { } if (isAutoRemove) { scheduleOnce(schedule_selector(TipsScene::scheduleResumeGame),2.8); scheduleOnce(schedule_selector(TipsScene::scheduleRemove),3.0f); } CCSprite* tipsbg = CCSprite::create("tipbg.png"); //tipsbg -> setPosition(ccp(375,260)); tipsbg -> setPosition(ccp(375,260 + 160)); addChild(tipsbg); mTipsWord = CCLabelTTF::create("","Arial",20); mTipsWord -> setColor(ccYELLOW); //mTipsWord -> setPosition(ccp(400,240)); mTipsWord -> setPosition(ccp(400,240 + 160)); addChild(mTipsWord); setTouchEnabled(true); if (shouldPauseGame) { BattleManage* pauseLayer = BattleManage::oneself; pauseLayer -> pauseSchedulerAndActions(); } return true; }