cocos2dx3.3 跑马灯功能的简单实现
来源:互联网 发布:java从入门到精通 豆瓣 编辑:程序博客网 时间:2024/05/22 19:43
================================================头文件 Marquee.h================================================
#ifndef __H_MARQUEE_H__
#define __H_MARQUEE_H__#include "cocos2d.h"
class Marquee:public cocos2d::Layer{
public:
Marquee();
~Marquee();
static void show(const char *content, int speed = -3, int fontSize = 30, cocos2d::Color3B color3B = cocos2d::Color3B::WHITE, int y = cocos2d::Director::getInstance()->getVisibleSize().height-10 - 30);
private:
virtual bool init();
virtual void onEnter();
virtual void onExit();
CREATE_FUNC(Marquee);
void update(float dt);
void setSpeed(int dir);
int getSpeed();
private:
int m_speed;
};
#endif
================================================cpp文件 Marquee.cpp================================================
#include "Marquee.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT;
Marquee::Marquee()
{
m_speed = 0;
}
Marquee::~Marquee()
{
}
bool Marquee::init()
{
if (!Layer::init())
{
return false;
}
this->scheduleUpdate();
return true;
}
void Marquee::show(const char *content, int speed, int fontSize, Color3B color3B, int y)
{
Marquee *marquee = Marquee::create();
auto scene = Director::getInstance()->getRunningScene();
Size visibleSize = Director::getInstance()->getVisibleSize();
Label *label = Label::create(content, "", fontSize);
label->setColor(color3B);
label->setTag(110);
label->setPositionY(y);
if (speed < 0)
{
label->setAnchorPoint(Vec2::ZERO);
label->setPositionX(visibleSize.width);
}
else
{
label->setAnchorPoint(Vec2::ANCHOR_BOTTOM_RIGHT);
label->setPositionX(0);
}
marquee->setSpeed(speed);
marquee->addChild(label);
scene->addChild(marquee);
}
void Marquee::update(float dt)
{
Size visibleSize = Director::getInstance()->getVisibleSize();
Label *label = (Label*)this->getChildByTag(110);
int dirX = this->getSpeed();
int labelWidth = label->getStringLength()*(label->getSystemFontSize() / 2);
label->setPositionX(label->getPositionX() + dirX);
if (dirX < 0)
{
if (label->getPositionX() < -labelWidth)
{
//label->setPositionX(visibleSize.width);
this->removeFromParent();
}
}
else
{
if (label->getPositionX() > labelWidth + visibleSize.width)
{
//label->setPositionX(0);
this->removeFromParent();
}
}
}
void Marquee::setSpeed(int speed)
{
m_speed = speed;
}
int Marquee::getSpeed()
{
return m_speed;
}
void Marquee::onEnter()
{
Layer::onEnter();
}
void Marquee::onExit()
{
Layer::onExit();
}
================================================调用:===============================================
调用方法:
MarqueeEffect::show("Most people... blunder round this cityMost people blunder round this cityMost people ", 6, 40, Color3B::RED);
- cocos2dx3.3 跑马灯功能的简单实现
- cocos2dx3.3 便条提示语功能简单实现
- cocos2dx3.5 studio c++简单功能实现
- 简单实现跑马灯
- 跑马灯简单实现
- WPF 实现简单的跑马灯
- 简单实现跑马灯效果
- 跑马灯的实现
- 跑马灯的实现
- TextView中实现跑马灯的最简单方法
- 用视图控件 实现简单的跑马灯
- 用代码简单的实现跑马灯效果
- 安卓简单技术-textview跑马灯的实现
- Android Studio一个简单横向跑马灯的实现
- Android 中一个简单垂直跑马灯的实现
- Android自定义TextView实现跑马灯功能
- Android TextView跑马灯功能实现
- 简单的跑马灯效果
- 全球26%安卓机为双卡 智能机普及率被夸大
- A Simple Problem with Integers
- 好记性不如烂笔头8-JAVA读取EXCEL文件
- property中的strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用详解
- war包和jar包
- cocos2dx3.3 跑马灯功能的简单实现
- android 中的 ViewPager+ Fragment
- UVA 10739 String to Palindrome (区间dp)
- 红包抽奖算法
- 仿射变换VS透视变换
- hbase 快照和集群备份的NB方法
- 关于android UI布局自适应
- Android 仿Win8的metro的UI界面(点击缩放效果)
- 你拖后腿了吗?上季度全国宽带网速达4.25M