cocos2d-x之多个移动的小球

MoveBalls.hpp:

#ifndef MoveBalls_hpp

#define MoveBalls_hpp

#include <stdio.h>

#include "cocos2d.h"

#include "Ball.hpp"

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_hpp */

MoveBalls.cpp:

#include "MoveBalls.hpp"

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.hpp:

#ifndef Ball_hpp

#define Ball_hpp

#include <stdio.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_hpp */

Ball.cpp:

#include "Ball.hpp"

bool Ball::init(){

Sprite::initWithFile("GOODS_3201_64.png");

visibleSize=Director::getInstance()->getVisibleSize();

speedX=3;

return true;

}

void Ball::move(){

setPositionX(getPositionX()+speedX);

if (getPositionX()>visibleSize.width) {

setPositionX(0);

}

}

时间: 2024-08-07 04:33:21

cocos2d-x之多个移动的小球的相关文章

Cocos2d入门--3-- 向量的应用

 Cocos2d入门--3-- 向量的应用 小球向一个方向持续运动的Demo HelloWorldScene.h ...... //设置一个protected的属性 protected: cocos2d::Vec2 _vec; ...... HelloWorldScene.cpp //这个是通过随机数设置向量的方向 _vec.set(random(-0.1f, 1.0f), random(-1.0f, 1.0f)); //通过normalize这个标准化函数,能够使得向量的大小为1 _vec.n

Cocos2d入门--2--三角函数的应用

其实,三角函数的知识点是初中的数学基础.但是在编程里合理的利用的话,也会很好玩的,可以制作出很多有趣的动画特效. 首先要注意的是 角度 和 弧度 的转换. 360度 = 2×PI弧度 180度 =   PI弧度 所以30度的正弦函数 = sin(30/180×PI) 但是在cocos2d游戏引擎提供的sin(参数值)这里的参数值范围是在[0,1]之间. 利用三角函数的波形来控制小球的运动 关键代码: 头文件: 1 protected: 2 float _angle; cpp实现文件: 1 _an

Cocos2d-x加速度计实例:运动的小球

下面我们通过一个实例介绍一下如果通过层加速度计事件实现访问加速度计.该实例场景如下图所示,场景中有一个小球,当我们把移动设备水平放置,屏幕向上,然后左右晃动移动设备来改变小球的位置. 下面我们再看看具体的程序代码,首先看一下HelloWorldScene.h文件,它的代码如下: [html] view plaincopy #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h"

SpriteKit小球被旋涡吞噬动画的进一步改进

App首先找到map文件,然后将场景地图载入游戏.map是一个人可读的ASCII字符文件,每个单元是一个"瓦块",在cocos2d中对瓦块地图有非常好的的支持,不过在SpriteKit中,至少目前为止瓦块地图功能还不是那么太丰富. 不管怎样把,地图中游戏元素分为star,旋涡和终点几种.当player碰到终点则游戏过关:如果碰到star则player得分:若是player不幸碰到了旋涡,对不起GAME OVER! 这时哪能没有酷炫的动画呢?我们制作一个player被吸入旋涡,并且不断旋

小tips:用java模拟小球做抛物线运动

这几天刚刚学习了java线程,然后跟着书做了几个关于线程的练习,其中有一个练习题是小球动起来.这个相信很简单,只要运用线程就轻松能够实现.然后看到了它的一个课后思考题,怎样让小球做个抛物线运动,这点我调试了很久,上网也找了很多资料,但是没有那种适合我们小白的教程,于是我简单讲讲我的思路.我将从如何画一个小球开始到一步步实现小球进行抛物线运动.嘿嘿!! 一.任务分解 现在我们来做抛物线运动的小球,先不急写代码,先来想象一下做好的结果是什么样子的.我将这个任务分成三步,第一步,画一个小球:第二步,该

cocos2d::Vector

v3.0 beta加入 定义在"COCOS2DX_ROOT/cocos/base"的"CCVector.h"头文件中. template<class T>class CC_DLL Vector; cocos2d::Vector<T>是一个封装好的能动态增长顺序访问的容器. cocos2d::Vector<T>中的元素是按序存取的,它的低层实现数据结构是标准模版库中的标准顺序容器std::vector. 在Cocos2d-x v3.

Cocos2D中Action的进阶使用技巧(一)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;) 大家对Cocos2d中动作的使用大概都非常清楚了,事实上本身action的概念也不复杂. 可是在某些情况下,一般的动作不能满足我们需求的时候,我们就必须使用更高级的Action方法来解决这个问题. 比方,串行化(不是序列化哦,这是两个全然不同的概念)不同Action的执行-有些童鞋可能会说非常easy,直接用CCActionSequence不就结了,可是等等我

完美世界笔试题---小球弹性碰撞

题目描述: 时间限制:c/c++语言1000MS: 其它语言3000MS 内存限制:c/c++语言65536KB:其他语言589824KB 如下图一个类似手机屏幕的矩形区域,宽度为w,高度为h,一个小球(视为质点,忽略其体积大小)初始位于底边距离左侧x的位置,向右上角45度发射.当小球碰到边界时,按完全弹性碰撞理想反弹,如果小球恰好碰到角落,则反向返回.如此无限循环. 请编写程序,输出前n次小球回到底边时的横坐标(首次发射时的不算). 输入: 每个输入是一行依次表示为w,h,x,n的4个正整数,

[bzoj1867][Noi1999][钉子和小球] (动态规划)

Description Input 第1行为整数n(2<=n<=50)和m(0<=m<=n).以下n行依次为木板上从上至下n行钉子的信息,每行中‘*’表示钉子还在,‘.’表示钉子被拔去,注意在这n行中空格符可能出现在任何位置. Output 仅一行,是一个既约分数(0写成0/1),为小球落在编号为m的格子中的概pm.既约分数的定义:A/B是既约分数,当且仅当A.B为正整数且A和B没有大于1的公因子. Sample Input 5 2 Sample Output 7/16 Solut

UVa 679小球下落(二叉树的编号)

题意:二叉树按层次遍历从1开始标号,所有叶子结点深度相同,每个结点开关初始状态皆为关闭,小球从根结点开始下落(小球落在结点开关上会使结点开关状态改变),若结点开关关闭,则小球往左走,否则往右走,给定二叉树深度D,求第I个小球所落到的叶子结点编号. 分析:对于每一个结点,若小球当前编号为k, k为奇数,则这个小球是第(k+1)/2个落在此处的,则往左走; k为偶数,则这个小球是第k/2个落在此处的,则往右走; 从根结点到叶子结点需判断D-1次. 比如,假如I为15,则这是第15个落在根结点的小球,