cocos2dx cocos2dx 3.x 公告栏 通知栏 滚动字幕 区域弹幕 区域显示 实现

原创 2016年12月10日 10:40:13



.h

#pragma once
#include "cocos2d.h"
#include <iostream>
#include <stdio.h>

USING_NS_CC;
using namespace std;
class FlowWorld :public Node
{
protected:
    Node* _holder;
    Sprite* _newsBg;
    Label* _news;
    DrawNode* _shap;
    ClippingNode* _cliper;

public:

    static FlowWorld* fWorld;
    static FlowWorld* getIntance();

    FlowWorld* createFW(Sprite* sp);

    FlowWorld();
    ~FlowWorld();

    void scrollText(float);

    CREATE_FUNC(FlowWorld);
};


2..cpp

#include "FlowWorld.h"
#include "ScriptData.h"
#include "utill/SXMJUtill.h"

FlowWorld::FlowWorld()
{
    _holder = NULL;
    _newsBg = NULL;
    _news = NULL;
    _shap = NULL;
    _cliper = NULL;
}

FlowWorld::~FlowWorld() {}


FlowWorld* FlowWorld::fWorld = NULL;
FlowWorld* FlowWorld::getIntance(){

    if (!fWorld)
    {
        fWorld = new FlowWorld();
    }
    return fWorld;
}

FlowWorld* FlowWorld::createFW(Sprite* sp){

    Point p = Point(130.0f, 0.0f);
    float w = 600.0f;
    float h = 80.0f;

    auto shap = DrawNode::create();
    shap->clear();

    //标记显示的矩形区域
    Point point[4] = { Point(p.x, p.y), Point(p.x + w, p.y), Point(p.x + w, p.y + h), Point(p.x, h) };//标记显示的矩形区域
    shap->drawPolygon(point, 4, Color4F(355, 255, 255, 255), 2, Color4F(255, 255, 255, 255));
    shap->setColor(Color3B::RED);//剪切用于显示的矩形区域,参数对应;用于标识区域的Point(Vec2)数组指针,数组长度,填充颜色,边框宽度,边框颜色。

    auto cliper = ClippingNode::create();
    cliper->setStencil(shap);
    cliper->setAnchorPoint(Point(0.5, 0.5));

    vector<string>str;
    str.push_back(ScriptData<string>("Message1").Value());
    str.push_back(ScriptData<string>("Message2").Value());
    str.push_back(ScriptData<string>("Message3").Value());
    str.push_back(ScriptData<string>("Message1").Value());
    str.push_back(ScriptData<string>("Message2").Value());
    str.push_back(ScriptData<string>("Message3").Value());
    str.push_back(ScriptData<string>("Message1").Value());

    _news = Label::create(SXMJUtill::getIntance()->vectorToString(str), "Microsoft Yahei", 24);

    _news->setColor(Color3B::YELLOW);
    _news->setPosition(Point(p.x + w - 10, 37));
    _news->setAnchorPoint(Point::ZERO);

    cliper->addChild(_news);
    cliper->addChild(shap);
    sp->addChild(cliper);

    //layout();
    schedule(schedule_selector(FlowWorld::scrollText));//实现公告文字滚动

    return this;
}

void FlowWorld::scrollText(float)
{
    _news->getPosition().x < (-1 * _news->getContentSize().width) ? _news->setPositionX(720) : _news->setPositionX(_news->getPositionX() - 2);
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

cocos2d-x利用CCClippingNode实现滚动字幕

cocos2d-x利用CCClippingNode实现滚动字幕 直接上代码,这是封装好了的layer,可以直接调用 //白白原创...

cocos2dx-ScrollView和 ListView、PageView控件的使用

这篇记录了三个控件的使用流程:ScrollView和 ListView、PageView。 ScrollView ScrollView这个控件大家应该挺熟的吧,反正我是经常用到...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

【玩转cocos2d-x之十六】滚动字幕和公告

滚动字幕和公告是游戏中经常使用到的元素,本文大致写一下实现方法,至于例子中具体的坐标值,请不要纠结。。。这和美工关系还是蛮大的。我PS技术太搓了。。。 1.原理 其实它们的实现都是简单的通过调...

【cocos2d-x】公告栏的实现-文字左右移动

添加公告栏的方法(右侧出来,左侧消失) 公告栏用的是node节点,锚点位置是(0,0),文字信息使用CCLabelTTF保存,锚点位置是(0,0),使用的时候将它加入到node里面就好了 ...

使用Cocos2dx-3.x开发的雷霆战机游戏

  • 2016年06月30日 14:41
  • 3.53MB
  • 下载

cocos2dx3.x游戏开发之旅1-17章源代码

  • 2017年08月04日 09:34
  • 33.27MB
  • 下载

cocos2dx实现手动选取区域截图

使用的方法是:RenderTexture渲染纹理+对当前场景的层Layer施加位移(先改后还)。 全屏截图可以使用以前的方法 RenderTexture渲染纹理, 也可以使用cocos2d::ut...

cocos2dx 3.x宝石消除小游戏demo

  • 2015年11月12日 12:08
  • 603KB
  • 下载

cocos2dx3.X

  • 2016年08月31日 11:02
  • 6MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2dx cocos2dx 3.x 公告栏 通知栏 滚动字幕 区域弹幕 区域显示 实现
举报原因:
原因补充:

(最多只允许输入30个字)