原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12991977
滚动字幕和公告是游戏中经常使用到的元素,本文大致写一下实现方法,至于例子中具体的坐标值,请不要纠结。。。这和美工关系还是蛮大的。我PS技术太搓了。。。
1.原理
其实它们的实现都是简单的通过调用update来更新位置达到的移动效果,和背景滚动有点类似,一旦滚动结束就重置为起点,开始新的滚动。只是为了达到在某个区域内滚动而不至于超出这个区域,有时候会用一些前景图来做遮盖,所以这个时候其实字幕或者公告是有在后面滚动的,但是被遮住了,因此看起来就像是只在某个区域内滚动。以垂直字幕滚动为例说明,如下图。

2.实现
不要纠结以下各精灵的坐标位置:)
-
boolCTestLayer::init()
-
{
-
boolbRet=false;
-
do
-
{
-
CC_BREAK_IF(!CCLayer::init());
-
-
CCSizevisibleSize=CCDirector::sharedDirector()->getVisibleSize();
-
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("ui_serverlist.plist");
-
-
-
CCSprite*listbase=CCSprite::createWithSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("login_listbase.png"));
-
listbase->setPosition(ccp(visibleSize.width/2,visibleSize.height/2+10));
-
this->addChild(listbase);
-
text1=CCLabelTTF::create("1.Hi!WelcometoJackyStudio,\nMyBlogis\nblog.csdn.net/jackystudio!\n2.Hi!WelcometoJackyStudio,\nMyBlogis\nblog.csdn.net/jackystudio!\n3.Hi!WelcometoJackyStudio,\nMyBlogis\nblog.csdn.net/jackystudio!\n4.Hi!WelcometoJackyStudio,\nMyBlogis\nblog.csdn.net/jackystudio!","Arial",12);
-
text1->setHorizontalAlignment(kCCTextAlignmentLeft);
-
text1->setAnchorPoint(ccp(0.5,1));
-
text1->setPosition(ccp(visibleSize.width/2,visibleSize.height/2-55));
-
this->addChild(text1);
-
CCSprite*fg=CCSprite::create("fg.png");
-
fg->setPosition(ccp(visibleSize.width/2,visibleSize.height/2));
-
this->addChild(fg);
-
-
-
CCSprite*textbase=CCSprite::createWithSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("login_textbase.png"));
-
textbase->setPosition(ccp(visibleSize.width/2,50));
-
textbase->setScaleX(2.5f);
-
this->addChild(textbase);
-
text2=CCLabelTTF::create("Hi!WelcometoJackyStudio,MyBlogisblog.csdn.net/jackystudio!","Arial",12);
-
text2->setPosition(ccp(visibleSize.width+text2->getContentSize().width/2,50));
-
text2->setColor(ccc3(255,0,0));
-
this->addChild(text2);
-
-
this->scheduleUpdate();
-
-
bRet=true;
-
}while(0);
-
returnbRet;
-
}
-
-
voidCTestLayer::update(floatdelta)
-
{
-
CCSizevisibleSize=CCDirector::sharedDirector()->getVisibleSize();
-
-
intnewY=text1->getPositionY()+1;
-
if(newY==500)
-
{
-
newY=visibleSize.height/2-55;
-
}
-
text1->setPositionY(newY);
-
-
intnewX=text2->getPositionX()-1;
-
if(newX<=-text2->getContentSize().width/2)
-
{
-
newX=visibleSize.width+text2->getContentSize().width/2;
-
}
-
text2->setPositionX(newX);
-
}
3.效果
这个效果有点小bug,就是文字覆盖到边框上了,这是因为没有把边框做在top层上导致的,实际使用注意这个问题即可。




4.源码下载
http://download.csdn.net/detail/jackyvincefu/6434549
分享到:
相关推荐
资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
Cocos2d-x是一个开源的游戏开发框架,广泛用于2D游戏、实时渲染应用程序和其他互动内容的制作。这个压缩包“cocos2d-x-3.1.zip”包含了Cocos2d-x框架的3.1版本,这是一个经典且相对旧的版本,可能对于那些寻找历史...
《Cocos2d-x 3.x游戏开发实战》是一本深度探讨Cocos2d-x 3.x框架的游戏开发书籍,适合对游戏编程有兴趣的开发者学习。Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的...
cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这个“cocos2d-x-3.8.zip”压缩包包含的是cocos...
在Cocos2d-x中,C++作为主要的编程语言,相比初版,第二版可能涵盖了更多Cocos2d-x的新特性和优化。C++的使用可以提供更好的性能和更直接的内存管理,同时也能充分利用面向对象编程的特性来构建复杂的游戏逻辑。 源...
接下来,把 F:\cocos2d-1.0.1-x-0.9.1\cocos2dx 和 F:\cocos2d-1.0.1-x-0.9.1\CocosDenshion 这两个文件夹里面的全部内容拷贝一份到 D:\cocos2d-xProjects\HelloWorld 中去。 九、设置静态链接库 接下来,打开 F:\...
Cocos2d-x提供了一个SpineNode类,它是Cocos2d-x的CCNode的子类,可以直接在场景中添加和管理Spine动画。通过Lua绑定,你可以轻松地调用Spine的API来播放、停止、暂停或重置动画,以及改变动画的速度、时间缩放等...
cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS、Linux 和 Web。cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境...
cocos2d-x是一个基于MIT许可证的开源游戏引擎,它以快速、简单且功能强大的特性闻名,允许开发者使用C++、Lua和JavaScript进行跨平台开发,支持包括iOS、Android、Windows Phone、Blackberry以及Tizen在内的多个平台...
这个压缩包“cocos2d-x-cocos2d-x-2.2.2.zip”包含了cocos2d-x 的2.2.2版本,该版本是cocos2d-x发展中的一个重要里程碑,它提供了许多改进和优化,使得开发者能够更加高效地创建2D游戏和应用。 在cocos2d-x 2.2.2中...
而Flash2Cocos2d-x则是一个专为cocos2d-x设计的动画工具,它使得开发者能够将Flash内容轻松地转换为可以在cocos2d-x上运行的游戏资源,极大地提高了开发效率和内容创作的灵活性。 Flash2Cocos2d-x 1.3版本是这个...
《Cocos2d-x实战C++卷》是关东升所著的一本深入探讨Cocos2d-x游戏引擎开发的专业书籍。Cocos2d-x是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言为主要编程...
本篇文章将深入探讨cocos2d-x 3.0中实现人物行走的关键技术和步骤,以及如何结合提供的代码和图片资源进行实践。 一、cocos2d-x 3.0简介 cocos2d-x 3.0是cocos2d-x系列的一个重要升级,它基于C++编写,支持跨平台...
《Cocos2d-x实战 JS卷 Cocos2d-JS开发》是一本深入探讨Cocos2d-x游戏引擎JavaScript版本使用的专业书籍。Cocos2d-x是全球范围内广泛采用的游戏开发框架,尤其适用于2D游戏的制作,而Cocos2d-JS则是其JavaScript接口...
cocos引擎老版本下载集合(cocos2d-x-2.2.1 - 3.5),分别有cocos2d-x-3.5、cocos2d-x-3.4、cocos2d-x-3.2、cocos2d-x-2.2.6、cocos2d-x-2.2.2和cocos2d-x-2.2.1。
由于Cocos2d-x支持多种编程语言(包括C++、JavaScript和Lua),Cocos2d-JS意味着开发者可以采用JavaScript来构建游戏项目。 4. PDF电子书下载:这是提供给读者的下载格式,即PDF(便携式文档格式),它是一种通用的...
cocos2d-x-2.1.5
cocos2d-x 是一个跨平台的2D游戏开发框架,它为开发者提供了强大的工具和技术支持,使得游戏开发变得更为便捷。2.1.4 版本是这个框架的一个重要里程碑,它在前一版本的基础上进行了一系列的优化和改进,提升了性能,...
《使用cocos2d-x-2.0-2.0.4开发的简单跨平台益智类魔塔小游戏》...通过学习和分析这个项目,开发者不仅可以掌握cocos2d-x的基本用法,还能了解到益智类游戏的设计思路和实现技巧,为自己的游戏开发之路打下坚实的基础。
在cocos2d-x游戏开发中,滚动字幕和公告是常见的交互元素,它们用于向玩家展示游戏信息、公告更新或者剧情叙述。cocos2d-x是一个跨平台的2D游戏开发框架,支持多种操作系统,如iOS、Android、Windows等。在v2.2.0...