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相关推荐

  1. JavaScript 对象所有API解析【2020版】

    写于 2017年08月20日,虽然是2017年写的文章,但现在即将2020年依旧不过时,现在补充了2019年新增的ES10 Object.fromEntries().发到公众号申明原创.若川顺便在此提 ...

  2. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...

  3. Java 调用Google Map Api解析地址,解析经纬度实例

    Java 调用Google Map Api解析地址,解析经纬度实例 使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使 ...

  4. 使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件

    一个音视频文件是由音频和视频组成的,我们可以通过MediaExtractor.MediaMuxer把音频或视频给单独抽取出来,抽取出来的音频和视频能单独播放: 一.MediaExtractor API ...

  5. SDL开发(一):SDL简介及2.0核心API解析

    文章目录 零. 参考文献 一. 什么是SDL? 1. SDL 库分类 2. SDL 子系统分类 二. SDL2.0核心API解析 1. 初始化函数 SDL_Init() 2. 创建窗口 SDL_Cre ...

  6. 【API解析】微软文本转语音(text-to-speech)官方Demo调用步骤

    [API解析]微软文本转语音(text-to-speech)官方Demo调用步骤 1. 来源 github: MsEdgeTTS 吾爱破解:微软语音助手免费版,支持多种功能,全网首发 微软Demo: ...

  7. React16常用api解析以及原理剖析

    React16常用api解析以及原理剖析 目录 Vue 与 React 两个框架的粗略区别对比 react 16 版本常见 api react 生命周期 react 事件机制 react.Compon ...

  8. mediawiki java api_维基百科 MediaWiki API 解析

    使用开放的 API 做一个自己的小项目,是一个很好的学习方法.但好像开放的 API 选择并不多.这里给大家多一个选择,简单介绍一下维基百科使用的 MediaWiki API. 简介 先简单介绍几个容易 ...

  9. REST API解析

    REST API 第一次接触REST API时有些迷惑,后来查阅了一些相关的文章并结合上自己的一些总结,总算对其有粗略的了解. 1. 起源 ​ REST这个词,是Roy Thomas Fielding ...

最新文章

  1. 查看自己的Android studio 版本
  2. 隐藏频道_《TED频道》-隐藏真实自我
  3. IPv6应用普及,任重而道远
  4. 【英语学习】【Level 08】U05 Better option L3 Everything's a click away
  5. 【java集合框架源码剖析系列】java源码剖析之ArrayList
  6. 电脑安装python-如何安装python
  7. 查询Mysql的数据架构信息研究
  8. 内网渗透技术之超越LLMNR/NBNS欺骗的ADIDNS欺骗攻击
  9. python套用word模板_套用word模板
  10. MAR DASCTF明御攻防赛
  11. javaweb 温习
  12. 只用CSS实现轮播图
  13. 手把手教你高效快捷的创建Swift Framework
  14. Apache虚拟主机配置
  15. python窗口显示文本tk_python-Tkinter文本小部件设置选项卡
  16. Java PrintWriter和BufferedWriter的区别
  17. JAVA毕业设计Vue网上书籍购买商城登录计算机源码+lw文档+系统+调试部署+数据库
  18. 通识~FIR数字滤波器设计讲解
  19. 存量时代的竞争法则,从local champion做起
  20. 典型的FPGA芯片有哪些,看完这篇文章就知道了

热门文章

  1. 判断回文串时忽略既非字母又非数字的字符
  2. sqlserver聚合索引(clustered index) / 非聚合索引(nonclustered index)的理解
  3. JDK/Java SE官方文档汇总
  4. 运维小白死磕的专业术语,你真的理解透了吗?
  5. iOS 如何使用 Block
  6. JEE_Ajax技术
  7. 计算机程序的构造和解释1构造过程抽象1.2过程与它们所产生的计算
  8. php7版本一句话木马,一句话查找 PHP 木马
  9. html5 app list,让web app更快的HTML5最佳实践
  10. quartus生成qdb文件_(原创)详解Quartus导出网表文件:.qxp和.vqm