类似半屏幕文字向上滚动,到一定位置,逐渐消失

这里用到了CCLayer的visit()方法

首先新建一个类TxtLayer  继承CCLayer

class TxtLayer : public cocos2d::CCLayer{

public:
TxtLayer();
~TxtLayer();
virtual void visit(void);
};

重写visit方法

.cpp实现

TxtLayer::TxtLayer()
{ } TxtLayer::~TxtLayer()
{ } // visit()函数在每帧时调用
void TxtLayer::visit()
{
glEnable(GL_SCISSOR_TEST); // 开启显示指定区域 float n_width = this->getContentSize().width;//文字显示长度
float n_height = this->getContentSize().height;//文字显示宽度
cocos2d::CCDirector::sharedDirector()->getOpenGLView()->setScissorInPoints(0, 0, n_width,n_height); CCLayer::visit(); // 调用下面的方法
glDisable(GL_SCISSOR_TEST); // 禁用
}

在自己的层里初始化该类

    CCLabelTTF *txt = CCLabelTTF::create("Hello 小编", "", 7*4);
txt->setColor(Utils::strToColor("fcf8b4"));
txt->setPosition(ccp(10,-200));
txt->setHorizontalAlignment(kCCTextAlignmentLeft);
txt->setDimensions(CCSizeMake(size.width-100, 400)); TxtLayer *txtLayer = new TxtLayer();
txtLayer->setContentSize(CCSize(size.width, size.height/2+70));
txtLayer->setPosition(ccp(size.width/2, 0));
txtLayer->addChild(txt);
this->addChild(txtLayer);

为文字设置移动动作   13s内向上滚动至屏幕顶  由于文字加在了自定义的截屏层里  所有只显示截屏层长宽 故可以实现截屏效果

CCSequence *seq = CCSequence::create(CCMoveTo::create(13, CCPointMake(txt->getPositionX(), size.height)),CCCallFunc::create(this, callfunc_selector(StoryFull::callBack)),NULL);
txt->runAction(seq);

// 另一种方法  但不推荐使用

void TxtLayer::visit()
{
CCLayer::visit();
return;
glEnable(GL_SCISSOR_TEST); // 开启显示指定区域 float x = 0;
float y = 0;
float n_width = this->getContentSize().width;
float n_height = this->getContentSize().height; glScissor(x, y, n_width, n_height); // 只显示当前窗口的区域
CCLayer::visit(); // 调用下面的方法
glDisable(GL_SCISSOR_TEST); // 禁用
}

这样同样可以实现截屏效果

glScissor(x, y, n_width, n_height);

如果只针对一种机型还可以,考虑到后期适配问题,如果这样写的话

n_width和
n_height 都要乘上对应机型的缩放比列
所以推荐第一种方法。

Cocos2d-x中屏幕截取的更多相关文章

  1. 如何在Cocos2D游戏中实现A*寻路算法(六)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  2. EL表达式中如何截取字符串

    EL表达式中如何截取字符串 可以截取,用fn函数:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/ ...

  3. C#中如何截取Windows消息来触发自定义事件

    原文 C#中如何截取Windows消息来触发自定义事件 在c#windows开发中,我们常常会遇到拦截windows消息,来触发某个特定任务的问题. 由于目前使用c#的开发人员非常多,而且大多数c#程 ...

  4. c#中字符串截取使用的方法

    AndyZhang welcome to java world c#中字符串截取使用的方法 String substring(int beginIndex) String substring(int ...

  5. 如何在cocos2d项目中enable ARC

    如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...

  6. 【2017-06-27】Js中获取地址栏参数、Js中字符串截取

    一.Js中获取地址栏参数 //从地址栏获取想要的参数 function GetQueryString(name) { var reg = new RegExp("(^|&)" ...

  7. 如何在Cocos2D游戏中实现A*寻路算法(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  8. JavaScript中字符串截取函数slice()、substring()、substr()

    在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧 ...

  9. Android中如何截取字符串中某个字符之前或之后的字符串

    代码改变世界 Android中如何截取字符串中某个字符之前或之后的字符串 //截取#之前的字符串 String str = "sdfs#d"; str.substring(0, s ...

随机推荐

  1. An internal error occurred during: &quot;J2EE Component Mapping Update&quot;.

    1.错误描写叙述 An internal error occurred during: "J2EE Component Mapping Update". java.lang.Nul ...

  2. 《Lucene in Action》(第二版) 第二章节的学习总结 ---- IndexWriter+Document+Field

    这一章节的学习,主要是学会如何创建索引,使用索引 一.创建索引 1.从原始文件中提取内容.这里的文件,可以是文本文件,也可以是二进制文件.文本文件(txt),lucene可以直接处理:而二进制文件(w ...

  3. 【JMeter4.0学习(五)】JMeter对服务器监控测试脚本开发

    目录: 下载相关JMeter插件 服务器监控测试脚本开发 附:参考相关文档 本文主要来说一下如何通过JMeter插件来监控服务器CPU.内存.磁盘.网络等相关资源. 一.首先,需要下载相关JMeter ...

  4. 深入了解Erlang 垃圾回收机制以及其重要性(转)

    声明:本片文章是由Hackernews上的[Erlang Garbage Collection Details and Why ItMatters][1]编译而来,本着学习和研究的态度,进行的编译,转 ...

  5. Android实现点击通知栏后,先启动应用再打开目标Activity ,极光推送等推送的也可以参考一下(转)

    我因为项目中集成了极光推送,推送的通知栏点开需要确定进入哪个界面就参考了这边文章,感谢作者的无私. 标签: 情况简述 在开发Android app的过程中,遇到这样一个需求:app中启动一个Servi ...

  6. 【SSH进阶之路】Hibernate基本映射(三)

    [SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心.採用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...

  7. DM8168 自己主动登录root用户

    ①指定连接: <DM8168># ln -s /bin/busybox /sbin/getty ②改动/etc/inittab文件: <DM8168># vi /etc/ini ...

  8. centOS6.2 最小安装下的无线网络配置

    一.安装wireless_tools,http://www.linuxfromscratch.org/blfs/view/svn/basicnet/wireless_tools.html 二.vi / ...

  9. 从零开始写一个Exporter

    前言 上一篇文章中已经给大家整体的介绍了开源监控系统Prometheus,其中Exporter作为整个系统的Agent端,通过HTTP接口暴露需要监控的数据.那么如何将用户指标通过Exporter的形 ...

  10. C++模板类[初步]

    /* * stacktp.h * * Created on: 2014年3月29日 * Author: */ /** * - 模板类的概念,与使用 * -# export template <c ...