您的位置:首页 > 其它

9.7总结

2016-09-07 19:36 120 查看
今天是做飞机游戏的第三天,实现了飞机的点击移动事件,以及子弹和飞机坐标的绑定。

飞机点击移动事件只是API 的引用。在子弹和飞机坐标绑定这一块比较重要。关键是要把飞机移动时的坐标传给子弹,让子弹始终拥有飞机的坐标

从而实现飞机发射子弹的视觉效果。程序中最重要的是有一个节点来接飞机坐标的数据,一共需要操作5个地方,子弹,h,子弹.cpp,飞机.h,飞机.cpp

GameScene.cpp。

1.飞机.h

在类中声明

static Hero* getInstance(); 静态创建成员函数

static Hero* plane; 静态创建成员变量

Node* getPlane(); 创建节点

Sprite* sp;创建精灵对象

2.飞机.cpp

Hero* Hero::plane = NULL;

Hero* Hero::getInstance(){

if (plane == NULL){

plane = new Hero();

}

return plane;

}

Node* Hero::getPlane(){

return sp;

}

Node* Hero::getPlane(){

return sp;

}

Node* Hero::getPlane(){

return sp;

}

Node* Hero::getPlane(){

return sp;

}

Node* Hero::getPlane(){

return sp;

}

3子弹.h

在类中声明构造函数,其参数为(Hero *p)

私有private:

Hello *plane =NULL;

4子弹.cpp

定义构造函数

Bult::Bult(Hero *p){

this->plane = p; // 将传入的数据给plane

visibleSize = Director::getInstance()->getVisibleSize();//获场景大小

this->schedule(CC_SCHEDULE_SELECTOR(Bult::update), 0.5f);

this->scheduleUpdate();

}

在最后用MoveTo生成子弹坐标的时候

auto move = MoveTo::create(1, Vec2(this->plane->getPlane()/*sp*/->getPositionX(), visibleSize.height + this->plane->getPlane()->getPositionY() + 100));

(this->plane->getPlane()取得的数据就是sp,即飞机的移动坐标。

5.GameScene.cpp

Hero *p = Hero::getInstance();

p->init()

Bult* p1=new Bult(p);

单例模式,一次创建以后可以一直使用再别的地方也可以使用,相当于全局变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  游戏