Cocos2d-x_3.2 Demo ----------SpriteTest(2)

 1 class SpriteTestDemo : public BaseTest
 2 {
 3 protected:
 4     std::string    _title;// 没用到
 5
 6 public:
 7     SpriteTestDemo(void);
 8     virtual ~SpriteTestDemo(void);
 9
10     void restartCallback(Ref* sender);    // 重置场景回调
11     void nextCallback(Ref* sender);        // 下一个场景回调
12     void backCallback(Ref* sender);        // 上一个场景回调
13
14     // overrides
15     virtual std::string title() const override;        // 标题
16     virtual std::string subtitle() const override;    // 副标题
17     virtual void onEnter() override;// 进入层时
18 };

BaseTest类请看这里http://www.cnblogs.com/studweijun/p/3978249.html

这个类就是继承BaseTest获得切换场景和显示标题的功能,此后每个测试项类都要继承此类。我们来看下实现:

 1 #define MAX_LAYER    (sizeof(createFunctions) / sizeof(createFunctions[0]))// 测试项数
 2 /* 下一个层 */
 3 Layer* nextSpriteTestAction()
 4 {
 5     sceneIdx++;
 6     sceneIdx = sceneIdx % MAX_LAYER;// 值域0到MAX_LAYER-1
 7
 8     auto layer = (createFunctions[sceneIdx])();// C++11
 9     return layer;
10 }
11 /* 上一个层 */
12 Layer* backSpriteTestAction()
13 {
14     sceneIdx--;
15     int total = MAX_LAYER;
16     if( sceneIdx < 0 )
17         sceneIdx += total;
18
19     auto layer = (createFunctions[sceneIdx])();
20     return layer;
21 }
22 /* 重置层 */
23 Layer* restartSpriteTestAction()
24 {
25     auto layer = (createFunctions[sceneIdx])();
26     return layer;
27 }
28
29 //------------------------------------------------------------------
30 //
31 // SpriteTestDemo
32 //
33 //------------------------------------------------------------------
34
35 SpriteTestDemo::SpriteTestDemo(void): BaseTest(){}
36
37 SpriteTestDemo::~SpriteTestDemo(void){}
38
39 std::string SpriteTestDemo::title() const
40 {
41     return "No title";
42 }
43
44 std::string SpriteTestDemo::subtitle() const
45 {
46     return "";
47 }
48
49 void SpriteTestDemo::onEnter()
50 {
51     BaseTest::onEnter();
52 }
53
54 void SpriteTestDemo::restartCallback(Ref* sender)
55 {
56     auto s = new SpriteTestScene();
57     s->addChild(restartSpriteTestAction());
58
59     Director::getInstance()->replaceScene(s);// 替换本场景
60     s->release();
61 }
62
63 void SpriteTestDemo::nextCallback(Ref* sender)
64 {
65     auto s = new SpriteTestScene();
66     s->addChild( nextSpriteTestAction() );
67     Director::getInstance()->replaceScene(s);
68     s->release();
69 }
70
71 void SpriteTestDemo::backCallback(Ref* sender)
72 {
73     auto s = new SpriteTestScene();
74     s->addChild( backSpriteTestAction() );
75     Director::getInstance()->replaceScene(s);
76     s->release();
77 } 

这个就是BestTest类的实现版,但是还是不能单独使用,因为没内容,所以还需要其他测试项继承,以便有具体的的内容,如标题、副标题等。

时间: 2024-10-13 05:00:18

Cocos2d-x_3.2 Demo ----------SpriteTest(2)的相关文章

Cocos2d-x_3.2 Demo ----------SpriteTest(2.2)

1 class SpriteBatchNode1: public SpriteTestDemo 2 { 3 public: 4 CREATE_FUNC(SpriteBatchNode1); 5 SpriteBatchNode1(); 6 void addNewSpriteWithCoords(Vec2 p);// 根据新坐标创建精灵 7 void onTouchesEnded(const std::vector<Touch*>& touches, Event* event);// 触摸

Cocos2d-x_3.2 Demo ----------SpriteTest(2.1)

1 class Sprite1 : public SpriteTestDemo 2 { 3 public: 4 CREATE_FUNC(Sprite1); 5 Sprite1(); 6 virtual std::string title() const override;// 主标题 7 virtual std::string subtitle() const override;// 副标题 8 9 void addNewSpriteWithCoords(Vec2 p);// 根据坐标创建精灵

Cocos2d-x3.1TestCpp之NewRenderTest Demo分析

1.代码构成 VisibleRect.h VisibleRect.cpp AppDelegate.h AppDelegate.cpp HelloWorldScene.h HelloWorldScene.cpp NewRenderTest.h NewRenderTest.cpp 2.HelloWorld代码 #include "cocos2d.h" #include "ui/CocosGUI.h" USING_NS_CC; using namespace ui; cl

cocos2d::Vector

v3.0 beta加入 定义在"COCOS2DX_ROOT/cocos/base"的"CCVector.h"头文件中. template<class T>class CC_DLL Vector; cocos2d::Vector<T>是一个封装好的能动态增长顺序访问的容器. cocos2d::Vector<T>中的元素是按序存取的,它的低层实现数据结构是标准模版库中的标准顺序容器std::vector. 在Cocos2d-x v3.

Cocos2d入门--3-- 向量的应用

 Cocos2d入门--3-- 向量的应用 小球向一个方向持续运动的Demo HelloWorldScene.h ...... //设置一个protected的属性 protected: cocos2d::Vec2 _vec; ...... HelloWorldScene.cpp //这个是通过随机数设置向量的方向 _vec.set(random(-0.1f, 1.0f), random(-1.0f, 1.0f)); //通过normalize这个标准化函数,能够使得向量的大小为1 _vec.n

安卓开发游戏用Cocos2d什么版本?

这两天上课,讲了两天半的游戏开发,做一个植物大战僵尸的小demo,最终实现到一步步点击进入游戏后,豌豆射手可以打死僵尸,僵尸可以啃坚果. 使用的是Cocos2d-android,老师在讲课的时候主要就是说这样写可以实现这样的效果,哒哒哒做出来.我听着十分焦灼..难受,因为这些类的今生前世,什么关系,都是干什么的啊不是很清楚.于是下来自己查相关的资料,在网上搜知识点,发现引用了一本书<cocos2d-x权威指南>,讲的比较详细,于是下来看,直接看第三章核心类,看到代码发现是C++的,感觉不对头.

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

iOS手势学习UIGestureRecognizer &amp; cocos2d 手势推荐

iOS手势学习UIGestureRecognizer & cocos2d 手势推荐 手势识别类型: UILongPressGestureRecognizer  // 长按UIPanGestureRecognizer  // 慢速拖动UIPinchGestureRecognizer  // 两指向內或向外拨动UIRotationGestureRecognizer   // 旋转UISwipeGestureRecognizer   // 快速滑动UITapGestureRecognizer   //

关于 error C2039: “create”: 不是“cocos2d::GLView”的成员的解决方法

问题: 跑一个demo,因为是涉及3.x版本的引擎,不是很熟悉,在VS2013上运行,报错 error C2039: “create”: 不是“cocos2d::GLView”的成员 解决: 通过查阅资料,问度娘了解到,3.x版本引擎版本之间改动较大,demo是用3.2创建的,而我的开发环境是3.1.0,引擎变了,自然报错 办法: 出错代码: if(!glview) {  glview = GLView::create("My Game");  glview->setFrameS