码迷,mamicode.com
首页 > 其他好文 > 详细

Cocos2d-x_3.2 Demo ----------SpriteTest(2.1)

时间:2014-09-18 23:36:24      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   div   

 1 class Sprite1 : public SpriteTestDemo
 2 {
 3 public:
 4     CREATE_FUNC(Sprite1);
 5     Sprite1();
 6     virtual std::string title() const override;// 主标题
 7     virtual std::string subtitle() const override;// 副标题
 8 
 9     void addNewSpriteWithCoords(Vec2 p);// 根据坐标创建精灵
10     void onTouchesEnded(const std::vector<Touch*>& touches, Event* event);// 触摸结束回调
11 };

SpriteTestDemo类请看这里http://www.cnblogs.com/studweijun/p/3979976.html

这是spriteTest的第一个测试项,title()函数就是设置主标题,subtitle()函数设置副标题,addNewSpriteWithCoords函数是在根据提供的坐标生成精灵。我们来看一下实现:

1 Sprite1::Sprite1()
2 {
3     auto listener = EventListenerTouchAllAtOnce::create();// 创建事件监听器
4     listener->onTouchesEnded = CC_CALLBACK_2(Sprite1::onTouchesEnded, this);
5     _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);// 指定事件的侦听器
6     
7     auto s = Director::getInstance()->getWinSize();
8     addNewSpriteWithCoords( Vec2(s.width/2, s.height/2) );
9 }

这个构造函数功能主要是设置触摸事件,和加载位于窗口中间的一个精灵。

 1 void Sprite1::addNewSpriteWithCoords(Vec2 p)
 2 {
 3     int idx = (int)(CCRANDOM_0_1() * 1400.0f / 100.0f);// 获得0-13的随机数
 4    /* (idx%5,idx/5)定位到第几帧 */
 5     int x = (idx%5) * 85;// 0-85*4
 6     int y = (idx/5) * 121;// 0-121*2
 7     
 8     auto sprite = Sprite::create("Images/grossini_dance_atlas.png", Rect(x,y,85,121) );
 9     addChild( sprite );
10     
11     sprite->setPosition( Vec2( p.x, p.y) );
12     
13     ActionInterval* action;
14     float random = CCRANDOM_0_1();// 获得0-1的浮点数
15     
16     /* 根据不同随机数设置不同动作 */
17     if( random < 0.20 )
18         action = ScaleBy::create(3, 2);// 放缩动作
19     else if(random < 0.40)
20         action = RotateBy::create(3, 360);// 旋转动作
21     else if( random < 0.60)
22         action = Blink::create(1, 3);// 闪烁动作
23     else if( random < 0.8 )
24         action = TintBy::create(2, 0, -255, -255);// 渐变动作
25     else 
26         action = FadeOut::create(2);// 淡出动作
27     auto action_back = action->reverse();
28     auto seq = Sequence::create( action, action_back, nullptr );// 序列动作
29     
30     sprite->runAction( RepeatForever::create(seq)/* 重复动作 */ );
31 }

上面函数就是根据随机函数获得随机精灵帧添加新精灵,然后随机添加动作。

 

 1 void Sprite1::onTouchesEnded(const std::vector<Touch*>& touches, Event* event)
 2 {
 3     /* 循环获得触摸点 */
 4     for (auto touch: touches)
 5     {
 6         auto location = touch->getLocation();// 获得触摸位置
 7     
 8         addNewSpriteWithCoords( location );
 9     }
10 }
11 /* 添加主标题 */
12 std::string Sprite1::title() const
13 {
14     return "Testing Sprite";
15 }
16 /* 添加副标题 */
17 std::string Sprite1::subtitle() const
18 {
19     return "Tap screen to add more sprites";
20 }

 上面函数就是为了处理触摸事件和设置主标题和副标题。

Cocos2d-x_3.2 Demo ----------SpriteTest(2.1)

标签:style   blog   http   color   io   os   ar   for   div   

原文地址:http://www.cnblogs.com/studweijun/p/3980213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!