搜索
查看: 697|回复: 1
打印 上一主题 下一主题

【cocos2d-x】多个运动的小球

[复制链接]
跳转到指定楼层
楼主
发表于 2016-5-24 17:50:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 李掌柜 于 2016-5-24 17:56 编辑

这个帖子是笔记,有想用C或C++语言开发游戏的可以加这个
掌柜的创的Cocos2d-x 学习群:153412944

C++代码:

//MoveBalls.h
#ifndef __Move_Balls_H__
#define __Move_Balls_H__
#include "cocos2d.h"
#include "Ball.h"
USING_NS_CC;
class MoveBalls : public LayerColor
{
public:
    virtual bool init();
    CREATE_FUNC(MoveBalls);
    virtual void update(float dt);
    static Scene * createScene();
private:
    //Ball * ball;
    cocos2d::Vector<Ball*>balls;
    void addBall(float x, float y);
};
#endif
//MoveBalls.cpp
#include "MoveBalls.h"
Scene * MoveBalls::createScene()
{
    auto s = Scene::create();
    auto l = MoveBalls::create();
    s->addChild(l);
    return s;
}
bool MoveBalls::init()
{
    LayerColor::initWithColor(Color4B(255,255,255,255));
    addBall(100,100);
    addBall(100,200);
    addBall(100,300);
    addBall(100,400);
    scheduleUpdate();
    return true;
}
void MoveBalls::update(float dt)
{
    //ball->move();
    for (auto it = balls.begin(); it != balls.end(); it++)
    {
        (*it)->move();
    }
}
void MoveBalls::addBall(float x, float y)
{
    auto ball= Ball::create();
    ball->setPosition(x,y);
    addChild(ball);
    balls.pushBack(ball);
}
//Ball.h
#ifndef __BALL_H__
#define __Ball_H__
#include "cocos2d.h"
USING_NS_CC;
class Ball : public Sprite
{
public:
    virtual bool init();
    void move();
    CREATE_FUNC(Ball);
private:
    float speedX;
    Size visibleSize;
};
#endif
//Ball.cpp
#include "Ball.h"
bool Ball::init()
{
    Sprite::initWithFile("ball.jpg");
    visibleSize = Director::getInstance()->getVisibleSize();
    speedX = 3;
    return true;
}
void Ball::move()
{
    setPositionX(getPositionX() +speedX);
    if (getPositionX() > visibleSize.width)
    {
        setPositionX(0);
    }
}

注:
默认生成类HelloWorldScene没有使用,可以删除HelloWorldScene.h和HelloWorldScene.cpp文件

沙发
 楼主| 发表于 2016-5-24 17:58:52 | 只看该作者
注:
AppDelegate.cpp文件的
   auto scene = HelloWorld::createScene();
    director->runWithScene(scene);
替换成:
director->runWithScene(MoveBalls::createScene());
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表