vector數組的刪除,CallFuncN的使用

void CTaskMode::createSpr(int taskId,Coordinate pos,int offiset)
{
	if(taskId < TASK_SPECIAL_SEGMENT)
	{
		Sprite * sprAction = Sprite::create("cell2.png",Rect((taskId%IMG_X_CNT)*CELL_WIDTH,(taskId/IMG_X_CNT)*CELL_HEIGHT,CELL_WIDTH,CELL_HEIGHT));
		sprArr.push_back(sprAction);
		sprAction->setPosition(Point(pos.m_nX*60,pos.m_nY*60+30));
		addChild(sprAction);
		sprAction->runAction(ScaleTo::create(0.7,0.2,0.2));
		sprAction->runAction(Sequence::create(MoveTo::create(0.8,allLocation[offiset]),
			CallFuncN::create(this,callfuncN_selector(CTaskMode::removeAction)),nullptr));
	}
}

void CTaskMode::removeAction(Node *node)
{
	updateUI(1);
	int i;
	Sprite *spr = (Sprite *)node;
	for(i=0;i<sprArr.size();i++)
	{
		if(spr == sprArr[i])
		{
			sprArr[i]->removeFromParent();
			break;
		}
	}
	sprArr.erase(sprArr.begin()+i,sprArr.begin()+i+1);
}
刪第二個元素 
vector<int> v;
v.erase(v.begin()+1,v.begin()+2);
注意erase(m,n)刪除第m到第n個元素,第n個不會被刪除


CCCallFunc::create(this, callfunc_selector(testCallFunc::callback1)),
CCCallFuncN::create(this, callfuncN_selector(testCallFunc::callback2))
CCCallFuncND::create(this, callfuncND_selector(testCallFunc::callback3), (void*)0xbebabeba)

對應的方法

void testCallFunc::callback1(){}
void testCallFunc::callback2(CCNode* pSender){}
void testCallFunc::callback3(CCNode* pTarget, void* data){}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章