#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; } } }