本文整理汇总了C++中BallSprite::setRow方法的典型用法代码示例。如果您正苦于以下问题:C++ BallSprite::setRow方法的具体用法?C++ BallSprite::setRow怎么用?C++ BallSprite::setRow使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BallSprite
的用法示例。
在下文中一共展示了BallSprite::setRow方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fillVacancies
void BallMap::fillVacancies()
{
// reset moving direction flag
// m_movingVertical = true;
m_isAnimationing = true;
CCSize size = CCDirector::sharedDirector()->getWinSize();
int *colEmptyInfo = (int *)malloc(sizeof(int) * m_size.width);
memset((void *)colEmptyInfo, 0, sizeof(int) * m_size.width);
// 1. drop exist Ball
BallSprite *ball = NULL;
for (int col = 0; col < m_size.width; col++) {
int removedBallOfCol = 0;
// from buttom to top
for (int row = 0; row < m_size.height; row++)
{
ball = m_matrix[row * (int)m_size.width + col];
if (NULL == ball)
{
removedBallOfCol++;
}
else
{
if (removedBallOfCol > 0)
{
// evey item have its own drop distance
int newRow = row - removedBallOfCol;
// switch in matrix
m_matrix[newRow * (int)m_size.width + col] = ball;
m_matrix[row * (int)m_size.width + col] = NULL;
// set the new row to item
ball->setRow(newRow);
// move to new position
CCPoint startPosition = ball->getPosition();
CCPoint endPosition = positionOfItem(ball);
float speed = (startPosition.y - endPosition.y) / size.height;
ball->set_isMoving(true);
// ball->stopAllActions();// must stop pre drop action
ball->runAction(CCSequence::create(
CCMoveTo::create(speed, endPosition),
CCCallFuncN::create(this, callfuncN_selector(BallMap::setBallNoMoving)),
NULL));
}
}
}
// record empty info
colEmptyInfo[col] = removedBallOfCol;
}
// 2. create new item and drop down.
for (int col = 0; col < m_size.width; col++)
{
for (int row = m_size.height - colEmptyInfo[col]; row < m_size.height; row++)
{
createAndDropBall(row, col);
}
}
free(colEmptyInfo);
colEmptyInfo = NULL;
}