将两张图片放入图层,将其中一个图片x的比例设置为0,即隐藏起来。
分别给两个图片绑定点击监听事件,事件触发后执行缩放动作。将自身x比例设置为0,完成后将另一张图片x比例设置为1。
详见代码注释。
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
{
return false;
}
auto visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
//使用两张图片分别创建精灵
auto logo1 = Sprite::create("up.jpg");
auto logo2 = Sprite::create("down.jpg");
//设置居中
logo1->setPosition(visibleSize/2);
logo2->setPosition(visibleSize/2);
//将第二张图片x轴缩放至隐藏
logo2->setScale(0, 1);
//加入图层
addChild(logo1);
addChild(logo2);
//创建监听器
auto touchListener1 = EventListenerTouchOneByOne::create();
//设置点击事件
touchListener1->onTouchBegan = [logo1, logo2](Touch* touch, Event* event){
//判断点击位置是否在精灵显示范围内
if(event->getCurrentTarget()->getBoundingBox().containsPoint(
touch->getLocation()))
{
//执行缩放动作
auto move1 = ScaleTo::create(1, 0, 1);
auto move2 = ScaleTo::create(1, 1, 1);
logo1->runAction(move1);
logo2->runAction(move2);
}
return false;
};
//同上
auto touchListener2 = EventListenerTouchOneByOne::create();
touchListener2->onTouchBegan = [logo1, logo2](Touch* touch, Event* event){
if(event->getCurrentTarget()->getBoundingBox().containsPoint(
touch->getLocation()))
{
auto move1 = ScaleTo::create(1, 0, 1);
auto move2 = ScaleTo::create(1, 1, 1);
logo2->runAction(move1);
logo1->runAction(move2);
}
return false;
};
//分别将两个监听器与两个精灵绑定
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchListener1, logo1);
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchListener2, logo2);
return true;
}