【cocos2dx 3.2制作Flappy Bird实践6】创建Guide玩法指导层
2015年03月17日 16:45
0 点赞
0 评论
更新于 2017-05-09 14:43
实现步骤
- 导入
readyTitle和guide的Sprite - 设置点击监听事件
- 点击触发时从场景移除这两个元素
- 将其添加到
GameScene中
代码实现
Guide.h
#pragma once
#include "cocos2d.h"
USING_NS_CC;
class Guide : public Layer {
public:
Guide(void);
~Guide(void);
virtual bool init();
CREATE_FUNC(Guide);
void rmGuide();
private:
EventListenerTouchOneByOne * listener;
Sprite * title;
Sprite * guide;
};
Guide.cpp
#include "Guide.h"
USING_NS_CC;
Guide::Guide(void) {
// 构造函数,目前为空
}
Guide::~Guide(void) {
// 析构函数,目前为空
}
bool Guide::init() {
if (!Layer::init()) {
return false;
}
auto origin = Director::getInstance()->getVisibleOrigin();
auto visibleSize = Director::getInstance()->getVisibleSize();
// Ready标题
title = Sprite::createWithSpriteFrameName("text_ready.png");
title->setPosition(Vec2(origin.x + visibleSize.width * 0.5, origin.y + visibleSize.height * 0.8));
this->addChild(title);
// 玩法提示
guide = Sprite::createWithSpriteFrameName("tutorial.png");
guide->setPosition(Vec2(origin.x + visibleSize.width * 0.5, origin.y + visibleSize.height * 0.4));
this->addChild(guide);
listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [=](Touch * t, Event * e) {
return true;
};
listener->onTouchEnded = [=](Touch *t, Event * e) {
_eventDispatcher->removeEventListener(listener);
auto fade = FadeOut::create(0.5f);
auto fade_2 = FadeOut::create(0.5f);
// 淡出之后,回调删除函数,从场景移除这2个对象
auto callback = CallFuncN::create(CC_CALLBACK_0(Guide::rmGuide, this));
auto sequence = Sequence::create(fade, callback, nullptr);
guide->runAction(sequence);
title->runAction(fade_2);
};
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
return true;
}
// 移除这2个元素
void Guide::rmGuide() {
this->removeChild(title);
this->removeChild(guide);
}
代码解释
Guide.h文件:定义了Guide类,继承自Layer。声明了构造函数、析构函数、init函数用于初始化层,CREATE_FUNC宏用于快速创建对象,rmGuide函数用于移除title和guide元素。同时,定义了私有成员变量listener用于处理触摸事件,title和guide用于存储对应的Sprite对象。Guide.cpp文件:- 构造函数和析构函数:目前为空,可根据需要添加资源初始化和释放的代码。
init函数:首先调用父类的init函数进行初始化,如果失败则返回false。接着获取可见区域的原点和大小,创建title和guide的Sprite对象,并设置它们的位置,添加到当前层中。然后创建触摸事件监听器,处理触摸开始和结束事件。在触摸结束事件中,移除事件监听器,创建淡出动画,并在动画结束后回调rmGuide函数移除title和guide元素。rmGuide函数:从当前层中移除title和guide元素。
通过以上步骤和代码,我们实现了一个玩法指导层,用户点击后该层元素会淡出并移除。