Cocos2d-x_3.2 Demo ----------BaseTestt类

 1 class BaseTest : public cocos2d::Layer
 2 {
 3 public:
 4     virtual std::string title() const;// 主标题
 5     virtual std::string subtitle() const;// 副标题
 6
 7     virtual void restartCallback(Ref* sender);// 重置场景回调
 8     virtual void nextCallback(Ref* sender);// 下一个场景回调
 9     virtual void backCallback(Ref* sender);// 上一个场景回调
10
11     virtual void onEnter() override;// 进入层时
12     virtual void onExit() override;// 退出层时
13 };

上面就是BaseTest类的头文件,里面只要提供了测试每个场景时用于场景的切换,其实就是测试项的切换,同时也是接口类,我们来看一下效果图:

接下我们来看一下实现BaseTest.cpp文件:

 1 void BaseTest::onEnter()
 2 {
 3     Layer::onEnter();
 4     // ...
 5     // 添加主标题
 6     std::string str = title();
 7     const char * pTitle = str.c_str();
 8
 9     TTFConfig ttfConfig("fonts/arial.ttf", /* 字号 */32);
10     auto label = Label::createWithTTF(ttfConfig,pTitle);
11     addChild(label, 9999);
12     label->setPosition( Vec2(VisibleRect::center().x, VisibleRect::top().y - 30) );
13     // 添加副标题
14     std::string strSubtitle = subtitle();
15     if( ! strSubtitle.empty() )
16     {
17         ttfConfig.fontFilePath = "fonts/Thonburi.ttf";// 字体文件路径
18         ttfConfig.fontSize = 16;// 字体字号
19         auto l = Label::createWithTTF(ttfConfig,strSubtitle.c_str());
20         addChild(l, 9999);
21         l->setPosition( Vec2(VisibleRect::center().x, VisibleRect::top().y - 60) );
22     }
23     // 添加菜单图片项
24     auto item1 = MenuItemImage::create(s_pathB1, s_pathB2, CC_CALLBACK_1(BaseTest::backCallback, this) );
25     auto item2 = MenuItemImage::create(s_pathR1, s_pathR2, CC_CALLBACK_1(BaseTest::restartCallback, this) );
26     auto item3 = MenuItemImage::create(s_pathF1, s_pathF2, CC_CALLBACK_1(BaseTest::nextCallback, this) );
27
28     auto menu = Menu::create(item1, item2, item3, nullptr);
29     // 设置位置
30     menu->setPosition(Vec2::ZERO);
31     item1->setPosition(Vec2(VisibleRect::center().x - item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2));
32     item2->setPosition(Vec2(VisibleRect::center().x, VisibleRect::bottom().y+item2->getContentSize().height/2));
33     item3->setPosition(Vec2(VisibleRect::center().x + item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2));
34
35     addChild(menu, 9999);
36 }

上面的函数当进入层时调用可以重写,主要是显示主要标题,副标题,切换箭头图标,重置图标,至于其他嘛就没什么了。

1 /* 层退出时调用 */
2 void BaseTest::onExit()
3 {
4     // ...
5     Layer::onExit();
6 }

这个就不用说了,可以重写。

 1 /* 这四个函数主要是继承时要进行重写 */
 2 std::string BaseTest::title() const
 3 {
 4     return "";
 5 }
 6
 7 std::string BaseTest::subtitle() const
 8 {
 9     return "";
10 }
11
12 void BaseTest::restartCallback(Ref* sender)
13 {
14     log("override restart!");
15 }
16
17 void BaseTest::nextCallback(Ref* sender)
18 {
19     log("override next!");
20 }
21
22 void BaseTest::backCallback(Ref* sender)
23 {
24     log("override back!");
25 }

这四个函数摆明就是要重写的,因为这个类是提供接口类,所以至于怎么切换还是要看后面怎么重写了。

这个总的来说,就是为其他类提供场景的切换功能。

时间: 2024-10-19 21:29:47

Cocos2d-x_3.2 Demo ----------BaseTestt类的相关文章

[cocos2dx笔记008]cocos2d 用luabridge手动绑定类

基于cocos2dx 2.2.2版本.这几天使用了cocostudio实现了,动画,骨骼动画,UI编辑,粒子效果,虽然有些不足,但已经算是非常好了.今天尝试用lua,这个非常简单,创建的时候,设置语言为lua,那就可以创建lua工程. 在cocos2d-x-2.2.2\tools\project-creator下运行: python create_project.py -project test_lua -package com.android.zdhsoft -language lua xco

Cocos2d-x_3.2 Demo ----------TestScene类

1 class TestScene : public Scene 2 { 3 public: 4 TestScene(bool bPortrait = false, bool physics = false); 5 virtual void onEnter() override;// 进入场景事调用 6 7 virtual void runThisTest() = 0;// 运行场景需重写 8 }; 9 10 // C++ 11 11 12 #define CL(__className__) [

cocos2d Android.mk自动添加类

打开Android.mk修改以下代码: LOCAL_SRC_FILES := hellocpp/main.cpp ../../Classes/AppDelegate.cpp ../../Classes/HelloWorldScene.cpp 替换成: #------------------------------------------------------------------------------------- # 遍历目录及子目录的函数 define walk $(wildcard

解决内存泄漏更加清楚的认识到Java匿名类与外部类的关系

1.事件起因 在做项目的时候,通过Android Studio的Memory Monitor窗口观察程序内存使用情况,发现当程序退出的时候,有一部分应该释放掉的内存没有释放掉,知道程序中应该有内存泄漏了.为了发现程序中的内存泄漏,我切换了IDE工具到Eclipse,里面安装了内存泄漏的分析工具MAT,具体怎么用MAT分析内存泄漏可以自己Google,我把我自己找到内存泄漏的地方贴出来 从上图中可以看到,有24M左右的内存被mView(其实它真正是一个Fragment)这个变量持有,导致Java垃

Android 自动生成的R类

来自:http://android.tgbus.com/Android/tutorial/201105/353458.shtml Android 自动生成的R类 资源文件的使用分为在代码中使用和在其他资源文件中引用该资源文件.在我们编译一个Android应用时,Android会自动生成一个R类,在该类中根据不同的资源类型又生成了相应的内部类,该类包含了系统中使用到的所有资源文件的标示,其内容如下所示. Java代码:package eoe.demo; // 资源类 public final cl

【Cocos2d入门教程三】HelloWorld之一目了然

什么程序都是从HelloWorld先开始.同样Cocos2d-x我们先从HelloWorld进行下手.下面是HelloWorld的运行完成图: 建立好的Cocos游戏项目中会有两个比较常用接触的文件夹.分别为Classes与resource.Classes存取代码文件,resource存取资源文件,下面为完整的项目架构: 我们先来看下最基本的AppDelegate.cpp类 1 #include "AppDelegate.h" 2 #include "HelloWorldSc

RemoteViews用法三:包含的widget的类音乐播放器

关于widget的用法参考:RemoteViews用法一:widget简单用法 RemoteViews用法二:可以接收点击事件并改变外观的widget 这篇博文主要是完成一个类音乐播放器,全面的应用activity,widget,service这几个类. 下载: 代码不算少,就不在这里粘代码了,先把源码下载地址奉上:http://download.csdn.net/detail/u011647962/8184423 demo效果: 为什么这个demo叫类音乐播放器呢,因为只有播放器的形,没有播放

别样JAVA学习(六)继承下(2.1)Object类equals()

上一节继承下(一)我们进行抽象类.接口以及多态的学习, 接下来大家我们讲点特殊的东西就是object类, 我们一直在说继承,子继承了父,父还有没有父类呢, 为什么这么思考,大家想构造函数的第一行是不是都有 一个隐式的super()语句,它们是不是也都会去访问自己的 父类呢?其实是的,这个父类叫什么呢? 叫做Object类,传说JAVA对象中的上帝,哈哈. 1.定义 所有对象的超类,所有对象的直接后者间接父类. 肯定是所有对象都具备的功能. 随便定义一个类 class Demo{}除了隐式的构造方

ThinkPHP 大D方法思想下的JDBC操作数据库D类

这里我封装出来的D类,是根据ThinkPHP中的D方法中做出来的,其中有些出入的地方,我进行了一些个性化的修正,如:ThinkPHP中操作数据库时,需要在配置文件中定义关于数据库的配置,这里我采用外部接口定义常量的方法进行定义,在D类中实现该接口,实现接口中常量的引用,方便配置的修改:D类中还提供了executeDML和executeDQL这两个方法--传入SQL语句即可进行更复杂的增删查改操作. 该类还存有许多不足的地方. DBConfig.java package cn.zhku.myjdb