博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Cocos2d-x中对其他某个类的某个属性的获得
阅读量:4919 次
发布时间:2019-06-11

本文共 1784 字,大约阅读时间需要 5 分钟。

类A要获得类B中的某个属性,可以是节点属性

方法一

1.先在B类中定义一个_edge的节点属性(可以在B类中进行各种对_edge的操作),然后写一个方法

Node* GameController::getEdge(){
  return _edge;
}

 

2.接着在A类中先实例化一个B类的对象,然后用这个对象调用刚才写在B类中的那个方法,就可以获得B类中的那个属性。

if (gc->getEdge()->getBoundingBox().containsPoint(t->getLocation())) {

   

}

 

 

方法二

1.先在B类中定义一个_edge的节点属性(可以在B类中进行各种对_edge的操作)

2.接着在A类中先实例化一个B类的对象,因为这个对象本身是一个指针,所以再用“*”可以变成一个真实的对象,真实的实例,这时候就可以直接用“.属性值”的方法来获得想要的B类中的_edge的节点属性。

if ((*gamecontroller)._hero->getPositionX() < 0) {

}

 

 

有时候恰巧B类是GameScene类,这时候不能在A类中实例化一个B类的对象Scene实例,这时候就要用到

方法三

1.在B类GameScene.h中声明

private:

  static GameScene* m_gamelayer; //游戏场景层的单例对象

public:

  static GameScene* sharedGameLayer() { return m_gamelayer; } //获取该游戏层单例对象

 

2.在B类GameScene.cpp的createScene函数中,把GameScene::create(heroCount)赋值给m_gamelayer

Scene * GameScene::createScene(int heroCount){

  auto s = Scene::createWithPhysics();

  s->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL); //物理引擎调试框

  s->getPhysicsWorld()->setGravity(Vec2(0, -1000));

  m_gamelayer = GameScene::create(heroCount);

  s->addChild(m_gamelayer);

  return s;

}

 

3.再在B类GameScene.h中声明一个将要用到的实用的方法和一个属性

private:

int _myScore; //当前游戏分数

 

public:

int getScore();//获取游戏分数

 

4.在B类GameScene.cpp中定义将要用到的实用的方法

//返回此时的分数

int GameScene::getScore()
{
  return _myScore;
}

 

 

5.在A类Baby.cpp对象类中使用(Baby类是场景中的层中的一个对象)

int m_score=GameScene::sharedGameLayer()->getScore(); //静态函数和静态变量是可以不用对象来引用的,就是说可以直接用  "类名::方法名();"  的格式去调用想要的方法,而不是  "实例化对象->方法名();"

 

 

因为static成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。因此,对静态成员的引用不需要用对象名。

在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员。如果静态成员函数中要引用非静态成员时,可通过对象来引用。这句话很好理解,因为对象是一个实实在在的东西,通过对象来引用非static数据成员,该数据成员只属于他的

对象,不会是别的对象。但是如果直接使用,static成员函数并不知道一个非static数据成员到底是从哪里来,属于那个对象(一个类可以有多个对象,当然对于sington的实现例外),所以static成员函数中不能直接操作类中的非static数据成员。

转载于:https://www.cnblogs.com/HangZhe/p/5769702.html

你可能感兴趣的文章
oracle 常用的几个网址
查看>>
oracle 12.2.0.1 使用 active dataguard broker 之一
查看>>
robotframework连接mysql数据库
查看>>
iOS-远程通知
查看>>
Warcraft love Air Jordan 9 Olive
查看>>
memcached全面剖析—— 客户端选择(一致性哈希算法)
查看>>
米洛个人修炼术:情绪的四种常用处理方式,其实都是有问题的
查看>>
[翻译] Virtual method interception 虚方法拦截
查看>>
--- git-svn 使用环境和步骤
查看>>
flutter AS 打包
查看>>
Python webpy微信公众号开发之 回复图文消息
查看>>
ubuntu多版本cuda并存与切换【两个博客链接】
查看>>
html5新特性之DOCTYPE声明
查看>>
POJ 3299 Humidex 难度:0
查看>>
快速切题 poj3414 Pots
查看>>
Linux 常用命令
查看>>
五家共井(第1届第3题)
查看>>
c文件操作
查看>>
《Spring In Action》 读书笔记(2) -- bean装配 ...
查看>>
很好很強大..
查看>>