Cocos2d API 解析之Texture2d
Texture2D :
用图象或文字创建OpenGL 2D 的Texture
Label的定义:
Label *left = [Label labelWithString:@"alignment left" dimensions:CGSizeMake(480,50) alignment:UITextAlignmentLeft fontName:@"Marker Felt" fontSize:32];
Label labelWithString:label显示的文字即title部分
dimensions:CGSizeMake:定义label在的尺寸即宽和高
alignment:UITextAlignmentLeft:显示的位置
fontName:字体 fontSize:字号
left.position = ccp(240,200); (ccp:即对象在屏幕中的位置点(x,y))
[sprite.texture setAntiAliasTexParameters];
使用该语句可以使图象在放大后仍然很清晰,不用该语句图像放大放会变得很模糊
标签的设定与获取
[self addChild:label z:0 tag:kTagLabel]; //设定标签的tag,方便后面取出
Label *label = (Label*) [self getChildByTag:kTagLabel]; //获取标签的值
[label setColor:ccc3(16,16,255)]; //设定字体的颜色
例子:
#pragma mark TexturePixelFormat
@implementation TexturePixelFormat
-(void) onEnter
{
//
// This example displays 1 png images 4 times.
// Each time the image is generated using:
// 1- 32-bit RGBA8
// 2- 16-bit RGBA4
// 3- 16-bit RGB5A1
// 4- 16-bit RGB565
[super onEnter];
Label *label = (Label*) [self getChildByTag:kTagLabel]; //获取已定义的标签
[label setColor:ccc3(16,16,255)]; //设定标签字体的颜色
CGSize s = [[Director sharedDirector] winSize];
Sprite *background = [Sprite spriteWithFile:@"background1.jpg"];
background.position = ccp(240,160); //根据480*320 所以该为置是从中心开始的
[self addChild:background z:-1];
// RGBA 8888 image (32-bit) //设定为32为图像
[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA8888];
Sprite *sprite1 = [Sprite spriteWithFile:@"test-rgba1.png"];
sprite1.position = ccp(64, s.height/2);
[self addChild:sprite1 z:0];
// remove texture from texture manager //从材质管理器中移除某灵的材质
[[TextureMgr sharedTextureMgr] removeTexture:sprite1.texture];
// RGBA 4444 image (16-bit) //设定为16为图像
[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA4444];
Sprite *sprite2 = [Sprite spriteWithFile:@"test-rgba1.png"];
sprite2.position = ccp(64+128, s.height/2); //由于图像的宽度为128,所以正好在第一张图像的结束处开始的
[self addChild:sprite2 z:0];
// remove texture from texture manager
[[TextureMgr sharedTextureMgr] removeTexture:sprite2.texture];
// RGB5A1 image (16-bit) //可以对比对图像颜色变深了
[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGB5A1];
Sprite *sprite3 = [Sprite spriteWithFile:@"test-rgba1.png"];
sprite3.position = ccp(64+128*2, s.height/2);
[self addChild:sprite3 z:0];
// remove texture from texture manager
[[TextureMgr sharedTextureMgr] removeTexture:sprite3.texture];
// RGB565 image (16-bit)
[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGB565];
Sprite *sprite4 = [Sprite spriteWithFile:@"test-rgba1.png"];
sprite4.position = ccp(64+128*3, s.height/2);
[self addChild:sprite4 z:0];
// remove texture from texture manager
[[TextureMgr sharedTextureMgr] removeTexture:sprite4.texture];
id fadeout = [FadeOut actionWithDuration:2]; //2秒钟消失
id fadein = [FadeIn actionWithDuration:2];
id seq = [Sequence actions: [DelayTime actionWithDuration:2], fadeout, fadein, nil];
id seq_4ever = [RepeatForever actionWithAction:seq];
[sprite1 runAction:seq_4ever];
[sprite2 runAction: [[seq_4ever copy] autorelease]];
[sprite3 runAction: [[seq_4ever copy] autorelease]];
[sprite4 runAction: [[seq_4ever copy] autorelease]];
// restore default
[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_Default];
}
例子:TextureBlend
参考:http://blog.csdn.net/alicehyxx/archive/2009/06/12/4263058.aspx
Blend 混合是将源色和目标色以某种方式混合生成特效的技术。混合常用来绘制透明或半透明的物体。在混合中起关键作用的α值实际上是将源色和目标色按给定比率进行 混合,以达到不同程度的透明。α值为0则完全透明,α值为1则完全不透明。混合操作只能在RGBA模式下进行,颜色索引模式下无法指定α值。物体的绘制顺 序会影响到OpenGL的混合处理。
cloud = [Sprite spriteWithFile:@"test_blend.bmp"];
[self addChild:cloud z:i+1 tag:200+i];
cloud.position = ccp(50+25*i, 320-80);
cloud.blendFunc = (ccBlendFunc) { GL_SRC_ALPHA, GL_ONE }; // additive blending
例子:TextureAsync
#pragma mark TextureAsync
@implementation TextureAsync
-(id) init
{
if( (self=[super init]) ) {
imageOffset = 0;
CGSize size =[[Director sharedDirector] winSize];
Label *label = [Label labelWithString:@"Loading..." fontName:@"Marker Felt" fontSize:32];
label.position = ccp( size.width/2, size.height/2);
[self addChild:label z:10];
id scale = [ScaleBy actionWithDuration:0.3f scale:2];
id scale_back = [scale reverse];
id seq = [Sequence actions: scale, scale_back, nil];
[label runAction: [RepeatForever actionWithAction:seq]];
[self schedule:@selector(loadImages:) interval:1.0f];
//schedule:在一定的时间里去回调某个函数。interval:间隔的时间,要创建一个'慢动作'的效果,使用的值低于1.0。要创//建一个'快fordward'的效果,使用高于1.0价值。
//如果使用schedule,将会拥有以下功能
// Ø 自动暂停/恢复。
// Ø 当层(Scene, Sprite, CocosNode)进入计时器便会自动启动阶段,在离开时,它会自动停用阶段。
// Ø 你的target/selecto将在一个延迟时间内自动调用
}
return self;
}
- (void) dealloc
{
[[TextureMgr sharedTextureMgr] removeAllTextures];
[super dealloc];
}
//回调函数
-(void) loadImages:(ccTime) dt
{
[self unschedule:_cmd];
for( int i=0;i < 8;i++) {
for( int j=0;j < 8; j++) {
NSString *sprite = [NSString stringWithFormat:@"sprite-%d-%d.png", i, j];
[[TextureMgr sharedTextureMgr] addImageAsync:sprite target:self selector:@selector(imageLoaded:)];
}
}
[[TextureMgr sharedTextureMgr] addImageAsync:@"background1.jpg" target:self selector:@selector(imageLoaded:)];
[[TextureMgr sharedTextureMgr] addImageAsync:@"background2.jpg" target:self selector:@selector(imageLoaded:)];
[[TextureMgr sharedTextureMgr] addImageAsync:@"background.png" target:self selector:@selector(imageLoaded:)];
[[TextureMgr sharedTextureMgr] addImageAsync:@"atlastest.png" target:self selector:@selector(imageLoaded:)];
[[TextureMgr sharedTextureMgr] addImageAsync:@"grossini_dance_atlas.png" target:self selector:@selector(imageLoaded:)];
}
-(void) imageLoaded: (Texture2D*) tex
{
// IMPORTANT: The order on the callback is not guaranteed. Don't depend on the callback
//重要:关于回调顺序是不能保证。不依赖于回调
// 通过传输过来的当前 (Texture2D*) tex,通spriteWithTexture定义精灵,并改变精灵的属性最后显示出来
// This test just creates a sprite based on the Texture
Sprite *sprite = [Sprite spriteWithTexture:tex];
sprite.anchorPoint = ccp(0,0); //使精灵在屏幕的左下角显示
//anchorPoint:较正座标的定位点:(0,0)指左下角,(1,1)指右上角,(0.5,0.5)指中心。精灵和其他textured Nodes 有一个//anchorPoint缺省值(0.5f,0.5f默认anchorPoint)
[self addChild:sprite z:-1];
CGSize size =[[Director sharedDirector] winSize];
int i = imageOffset * 32;
sprite.position = ccp( i % (int)size.width, (i / (int)size.width) * 32 );
imageOffset++;
}
-(NSString *) title
{
return @"Texture Async Load";
}
@end
转载于:https://www.cnblogs.com/KiloNet/archive/2010/08/20/1804626.html
Cocos2d API 解析之Texture2d相关推荐
- JavaScript 对象所有API解析【2020版】
写于 2017年08月20日,虽然是2017年写的文章,但现在即将2020年依旧不过时,现在补充了2019年新增的ES10 Object.fromEntries().发到公众号申明原创.若川顺便在此提 ...
- java微信开发API解析(二)-获取消息和回复消息
java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...
- Java 调用Google Map Api解析地址,解析经纬度实例
Java 调用Google Map Api解析地址,解析经纬度实例 使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使 ...
- 使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件
一个音视频文件是由音频和视频组成的,我们可以通过MediaExtractor.MediaMuxer把音频或视频给单独抽取出来,抽取出来的音频和视频能单独播放: 一.MediaExtractor API ...
- SDL开发(一):SDL简介及2.0核心API解析
文章目录 零. 参考文献 一. 什么是SDL? 1. SDL 库分类 2. SDL 子系统分类 二. SDL2.0核心API解析 1. 初始化函数 SDL_Init() 2. 创建窗口 SDL_Cre ...
- 【API解析】微软文本转语音(text-to-speech)官方Demo调用步骤
[API解析]微软文本转语音(text-to-speech)官方Demo调用步骤 1. 来源 github: MsEdgeTTS 吾爱破解:微软语音助手免费版,支持多种功能,全网首发 微软Demo: ...
- React16常用api解析以及原理剖析
React16常用api解析以及原理剖析 目录 Vue 与 React 两个框架的粗略区别对比 react 16 版本常见 api react 生命周期 react 事件机制 react.Compon ...
- mediawiki java api_维基百科 MediaWiki API 解析
使用开放的 API 做一个自己的小项目,是一个很好的学习方法.但好像开放的 API 选择并不多.这里给大家多一个选择,简单介绍一下维基百科使用的 MediaWiki API. 简介 先简单介绍几个容易 ...
- REST API解析
REST API 第一次接触REST API时有些迷惑,后来查阅了一些相关的文章并结合上自己的一些总结,总算对其有粗略的了解. 1. 起源 REST这个词,是Roy Thomas Fielding ...
最新文章
- 查看自己的Android studio 版本
- 隐藏频道_《TED频道》-隐藏真实自我
- IPv6应用普及,任重而道远
- 【英语学习】【Level 08】U05 Better option L3 Everything's a click away
- 【java集合框架源码剖析系列】java源码剖析之ArrayList
- 电脑安装python-如何安装python
- 查询Mysql的数据架构信息研究
- 内网渗透技术之超越LLMNR/NBNS欺骗的ADIDNS欺骗攻击
- python套用word模板_套用word模板
- MAR DASCTF明御攻防赛
- javaweb 温习
- 只用CSS实现轮播图
- 手把手教你高效快捷的创建Swift Framework
- Apache虚拟主机配置
- python窗口显示文本tk_python-Tkinter文本小部件设置选项卡
- Java PrintWriter和BufferedWriter的区别
- JAVA毕业设计Vue网上书籍购买商城登录计算机源码+lw文档+系统+调试部署+数据库
- 通识~FIR数字滤波器设计讲解
- 存量时代的竞争法则,从local champion做起
- 典型的FPGA芯片有哪些,看完这篇文章就知道了
热门文章
- 判断回文串时忽略既非字母又非数字的字符
- sqlserver聚合索引(clustered index) / 非聚合索引(nonclustered index)的理解
- JDK/Java SE官方文档汇总
- 运维小白死磕的专业术语,你真的理解透了吗?
- iOS 如何使用 Block
- JEE_Ajax技术
- 计算机程序的构造和解释1构造过程抽象1.2过程与它们所产生的计算
- php7版本一句话木马,一句话查找 PHP 木马
- html5 app list,让web app更快的HTML5最佳实践
- quartus生成qdb文件_(原创)详解Quartus导出网表文件:.qxp和.vqm