Cocos2d-x中屏幕截取
类似半屏幕文字向上滚动,到一定位置,逐渐消失
这里用到了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中屏幕截取的更多相关文章
- 如何在Cocos2D游戏中实现A*寻路算法(六)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- EL表达式中如何截取字符串
EL表达式中如何截取字符串 可以截取,用fn函数:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/ ...
- C#中如何截取Windows消息来触发自定义事件
原文 C#中如何截取Windows消息来触发自定义事件 在c#windows开发中,我们常常会遇到拦截windows消息,来触发某个特定任务的问题. 由于目前使用c#的开发人员非常多,而且大多数c#程 ...
- c#中字符串截取使用的方法
AndyZhang welcome to java world c#中字符串截取使用的方法 String substring(int beginIndex) String substring(int ...
- 如何在cocos2d项目中enable ARC
如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...
- 【2017-06-27】Js中获取地址栏参数、Js中字符串截取
一.Js中获取地址栏参数 //从地址栏获取想要的参数 function GetQueryString(name) { var reg = new RegExp("(^|&)" ...
- 如何在Cocos2D游戏中实现A*寻路算法(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- JavaScript中字符串截取函数slice()、substring()、substr()
在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧 ...
- Android中如何截取字符串中某个字符之前或之后的字符串
代码改变世界 Android中如何截取字符串中某个字符之前或之后的字符串 //截取#之前的字符串 String str = "sdfs#d"; str.substring(0, s ...
随机推荐
- 内核initcall分析
linux中init相关内容定义在include/linux/init.h initcall相关定义 先看下文件说明,此文件定义的宏主要用于初始化阶段标记函数或初始化数据,之后占用的资源会被释放掉. ...
- Carthage:去中心化的Cocoa依赖管理器
Cocoa的依赖管理器,我们已经有了CocoaPods,非常好用,那么为什么还要创建这样一个项目呢?本文翻译自Carthage的Github的README.md,带大家来了解一下这个工具有何不同之处. ...
- Django开发之html交互
html中用户输入信息,由Django的view.py处理,大致用到了以下几类格式: 1. 文本框 <input type="text" name="vid&quo ...
- Array的push与unshift方法性能比较分析
从原理就可以知道,unshift的效率是较低的.原因是,它每添加一个元素,都要把现有元素往下移一个位置.但到底效率差异有多大呢?下面来测试一下. 测试环境的主要硬件:CPU T7100(1.8G):内 ...
- 解决ListView滑动上下出现阴影
网上大部分说在listview的属性中通过设置android:fadingEdge="none"来解决问题,需要说明的是是在2.3版本之前有效! 方法一. public class ...
- 解决QT:forward declaration of 'struct Ui::xxx';invalid use of incomplete struct "Ui::Widget" 等莫名奇异错误
今天在进行QT Widget的UI设计时,改了下Widget的对象名,然后在多次成功编译执行后,执行清理,又一次构建,就出现了好多莫名奇异的错误: widget.h:12: 错误:forward de ...
- linux 下配置jdk
去java官方地址下载相应的源码包我下载的是1.8.0放在usr/local目录下 export JAVA_HOME=/usr/local/jdk1.8.0export PATH=$JAVA_HOME ...
- 更改eclipse(myeclipse) author的默认名字(注释的作者)
在eclipse/myeclipse中,当添加注释的作者选项时,@author 后边一般都会默认填充的你登录计算机的用户名.如何去修改呢:第一种方法:修改计算机登录的用户名(一般不实用)第二种方法:修 ...
- SDOI 2016 Round1 Day1
储能表 /* 引自zyz大佬的数学思想 */ #include<cstdio> #include<iostream> using namespace std; typedef ...
- 1.Python学习---helloworld
1.首先访问http://www.python.org/download/去下载最新的python版本. 2.安装下载包,一路next. 3.为计算机添加安装目录搭到环境变量,如图把python的安装 ...