[置顶] 【cocos2d-x制作别踩白块儿】第六期:游戏交互实现

这一期我们实现游戏的交互。简单的说,就是搭建触摸的框架。


在HelloWorldScene.cpp中添加触摸事件

	auto listener = EventListenerTouchOneByOne::create();
	listener->onTouchBegan = [this](Touch* t, Event* e)
	{
		log("onTouch");
		auto bs = Block::getBlocks();
		Block *b;

		for(auto it = bs->begin(); it != bs->end(); it++)
		{
			b = *it;

			if(b->getLineIndex()==1&&b->getBoundingBox().containsPoint(t->getLocation()))
			{
				if(b->getColor()==Color3B::BLACK)
				{
					b->setColor(Color3B::GRAY);
					this->moveDown();

				}
				else
				{
					MessageBox("GameOver","失败");
				}
			}
		}

		return false;
	};

	Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
利用触摸事件onTouchBegan,然后得到所有的Blocks,一个个遍历。先判断lineIndex是不是1而且触摸式在这一行,紧接着如果方块是黑色的话,然后将黑色变为灰色,并使所有方块下移moveDown;如果方块不是黑色,然后出现一个失败的对话框。


moveDown函数,我们先用一个空函数实现,后续会添加具体的逻辑。

//方块下移
void HelloWorld::moveDown()
{

}

在Block.cpp中添加getBlocks函数

Vector<Block*> * Block::getBlocks()
{
	return Block::blocks;
}

运行项目,效果如下:



点击非第一行区域,会输出



点击第一行的白色块,会出现失败对话框

[置顶] 【cocos2d-x制作别踩白块儿】第六期:游戏交互实现_第1张图片


点击第一行黑色块,黑色块会变成灰色

[置顶] 【cocos2d-x制作别踩白块儿】第六期:游戏交互实现_第2张图片


效果还不错吧?哈哈哈

你可能感兴趣的:(代码,cocos2d-x3.0,别踩白块儿)