cocos2d-x之悦动的小球
2016-03-09 10:16
429 查看
发现问题:update()函数不能用virtual前缀
主:
bool HelloWorld::init()
{
if ( !LayerColor::initWithColor(Color4B(255,255,255,255)))
{
return false;
}
for (int i=0;i<10;i++) {
auto b=Ball::create();
b->setPosition(CCRANDOM_0_1()*200+400,CCRANDOM_0_1()*200+400);
addChild(b);
}
return true;
}
hpp:
#include <stdio.h>
#include "cocos2d.h"
using namespace cocos2d;
class Ball:public Sprite
{
public:
virtual bool init();
void update(float dt);
CREATE_FUNC(Ball);
private:
float speedX,speedY;
Size visibleSize;
};
cpp:
#include "Ball.hpp"
bool Ball::init(){
Sprite::initWithFile("GOODS_3201_0.png");
visibleSize=Director::getInstance()->getVisibleSize();
speedX=CCRANDOM_0_1()*10-5;//-5到5之间
speedY=CCRANDOM_0_1()*10-5;
scheduleUpdate();
return true;
}
void Ball::update(float dt){
setPosition(getPositionX()+speedX,getPositionY()+speedY);
if (getPositionX()<getContentSize().width/2) {
speedX=fabs(speedX);
}
if (getPositionX()>visibleSize.width-getContentSize().width/2) {
speedX=-fabs(speedX);
}
if (getPositionY()<getContentSize().height/2) {
speedY=fabs(speedY);
}
if (getPositionY()>visibleSize.height-getContentSize().height/2) {
speedY=-fabs(speedY);
}
}
主:
bool HelloWorld::init()
{
if ( !LayerColor::initWithColor(Color4B(255,255,255,255)))
{
return false;
}
for (int i=0;i<10;i++) {
auto b=Ball::create();
b->setPosition(CCRANDOM_0_1()*200+400,CCRANDOM_0_1()*200+400);
addChild(b);
}
return true;
}
hpp:
#include <stdio.h>
#include "cocos2d.h"
using namespace cocos2d;
class Ball:public Sprite
{
public:
virtual bool init();
void update(float dt);
CREATE_FUNC(Ball);
private:
float speedX,speedY;
Size visibleSize;
};
cpp:
#include "Ball.hpp"
bool Ball::init(){
Sprite::initWithFile("GOODS_3201_0.png");
visibleSize=Director::getInstance()->getVisibleSize();
speedX=CCRANDOM_0_1()*10-5;//-5到5之间
speedY=CCRANDOM_0_1()*10-5;
scheduleUpdate();
return true;
}
void Ball::update(float dt){
setPosition(getPositionX()+speedX,getPositionY()+speedY);
if (getPositionX()<getContentSize().width/2) {
speedX=fabs(speedX);
}
if (getPositionX()>visibleSize.width-getContentSize().width/2) {
speedX=-fabs(speedX);
}
if (getPositionY()<getContentSize().height/2) {
speedY=fabs(speedY);
}
if (getPositionY()>visibleSize.height-getContentSize().height/2) {
speedY=-fabs(speedY);
}
}
相关文章推荐
- cocos2d-js的自定义事件的两种创建方法
- cocos 中文字符显示问题
- cocos2d 场景切换特效
- cocos2dx Action 特效
- cocos2dx Action 动作
- Ubuntu下快速建立跨多个平台的cocos2d-x项目
- cocos2dx 基础
- cocos2d-x之多个移动的小球
- Cocos2d-x之lambda表达式的使用
- [Cocos2d-x v3.x]序列帧动画
- 在mac环境下,导入 quick-cocos2d-x 项目 报错
- Cocos2d-x之多分辨率屏幕适配
- 【cocos2d 3.x】粒子plist的简单使用
- cocos2d-android(1)
- php服务器与cocos2d-x客户端session通信
- Cocos2d-x Android修改ICON名字、更改图标、修改屏幕方向、修改版本号
- cocos2dx TMX地图
- 【原创】cocos2d-x3.9蓝牙开发之蓝牙开启
- cocos2dx android 程序启动黑屏相关
- cocos2dx的jni使用