#ifndef __BALL_H_INCLUDE__
#define __BALL_H_INCLUDE__
#include "cocos2d.h"
USING_NS_CC;
class Ball : public cocos2d::Sprite
{
public:
virtual bool init();
void move();
CREATE_FUNC(Ball);
private:
float positionX;
float positionY;
};
#endif
#include "Ball.h"
bool Ball::init()
{
if (!Sprite::initWithFile("ball.png"))
{
return false;
}
positionX = CCRANDOM_0_1() * 10 - 5;
positionY = CCRANDOM_0_1() * 10 - 5;
return true;
}
void Ball::move()
{
this->setPosition(Vec2(this->getPositionX() + positionX,this->getPositionY() + positionY));
}
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
#include "Ball.h"
USING_NS_CC;
class HelloWorld : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
virtual void update(float dt);
void addBall(float dt);
CREATE_FUNC(HelloWorld);
private:
cocos2d::Vector<Ball *> balls;
};
#endif // __HELLOWORLD_SCENE_H__
#include "HelloWorldScene.h"
Scene* HelloWorld::createScene()
{
auto scene = Scene::create();
auto layer = HelloWorld::create();
scene->addChild(layer);
return scene;
}
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
Vec2 origin = Director::getInstance()->getVisibleOrigin();
this->schedule(schedule_selector(HelloWorld::addBall),0.1f);
this->scheduleUpdate();
return true;
}
void HelloWorld::addBall(float dt)
{
Size visibleSize = Director::getInstance()->getVisibleSize();
Ball *ball = Ball::create();
ball->setPosition(Vec2(visibleSize.width / 2.0,visibleSize.height / 2.0));
this->addChild(ball);
balls.pushBack(ball);
}
void HelloWorld::update(float dt)
{
Size visibleSize = Director::getInstance()->getVisibleSize();
Ball *ball = NULL;
for (auto iter = balls.begin(); iter != balls.end(); iter ++)
{
ball = *iter;
ball->move();
if (ball->getPositionX() > visibleSize.width ||
ball->getPositionX() < 0 ||
ball->getPositionY() > visibleSize.height ||
ball->getPositionY() < 0)
{
balls.eraSEObject(ball);
ball->removeFromParentAndCleanup(true);
ball = NULL;
break;
}
}
}
原文链接:https://www.f2er.com/cocos2dx/343466.html