zoukankan      html  css  js  c++  java
  • Cocos2d 中对图片的各种操作

    关于精灵的各种操作,总结一下以便以后复习查找。

    内容简要:

    1、初始化 2、创建无图的精灵 3、设置精灵贴图大小  4、添加入层中

    5、对精灵进行缩放  6、对精灵款或高进行缩放  7、旋转精灵

    8、设置精灵透明度  9、精灵的镜像反转  10、设置精灵的颜色

    11、得到图的宽高   12、按照像素设定图片大小  13、在原有的基础上加xy的坐标

    14、设置图片锚点    15、从新排列z轴顺序   16、更换精灵贴图

    17、设置可视区域


    原文地址:http://blog.csdn.net/dingkun520wy/article/details/6976558  

    ------------------------------------------------------------------------------------------------------------------------------------------

    //初始化

    CCSprite* sprite =[CCSprite spriteWithFile:@"Icon.png"];

     //创建无图的精灵

    CCSprite*sprite2 =[CCSprite node];

    //设置精灵贴图大小
    sprite2.textureRect=CGRectMake(0, 0, 20, 20);//设置其为宽20,高20.

    //添加入层中

    [self addChild:sprite z:2]; //将精灵加入层中设置其z轴为2

    //对精灵进行缩放

    sprite.scale=2;//放大2倍

    //对精灵款或高进行缩放

    sprite.scaleX = 2;//宽放大2倍 

    sprite.scaleY = 2;//高放大2倍

    //旋转精灵

    sprite.rotation=90;//旋转90度

    //设置精灵透明度

    sprite.opacity=255;//设置透明度为完全不透明(范围0~255)

    //定义精灵位置

    sprite.position=ccp(100,100);//设置精灵中心点坐标是x=100,y=100

    //精灵的镜像反转

    [sprite setFlipX:YES];//X轴镜像反转

    [sprite setFlipY:YES];//Y轴镜像反转

    //设置精灵的颜色

    [sprite setColor:ccc3(255, 0, 0)];//设置颜色为红色

    //得到图的宽高

     

    float  contentSize  = sprite .contentSize.width //得到图片的宽高

    //按照像素设定图片大小

     

    sprite.scaleX=(20)/contentSize; //按照像素定制图片宽高

    //在原有的基础上加xy的坐标

    sprite.position = ccpAdd(sprite.position,ccp(20,20));//在原有坐标的基础上加减坐标

    //设置图片锚点

    [sprite setAnchorPoint:ccp(0.5,0.5) ];//设置图片的锚点

    //从新排列z轴顺序

    [self reorderChild:sprite z:1];//从新排列z轴顺序

    //更换精灵贴图
    CCTexture2D * test=[[CCTextureCache sharedTextureCache] addImage: @"
    test.png"];//新建贴图

    [sprite setTexture:test]; 

    //更换精灵贴图,加载帧缓存,这个test.plist保存了fram这张图

    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"test.plist"];

    CCSpriteFrame* frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"fram.png"];
    [sprite2 setDisplayFrame:frame];

     

    //设置可视区域
    CCSprite * sprite3 =[CCSprite spriteWithFile:@"icon.png" rect:CGRectMake(0, 0, 20,20)];//创建时设置

    [sprite3 setTextureRect:CGRectMake(10, 10, 30, 30)];//创建后设置

    -----------------------------------------------------------------------

     

     

     

    ------------下面来介绍如何来利用CCSprite精灵或者CCLayerColor简单实现一个简单的覆盖层(遮挡)效果

          首先利用CCSprite来实现,代码如下:

     

    CCSprite *sprLeft = [CCSprite spriteWithFile:@"Icon.png"];  

    sprLeft.position=ccp(100,180);  

    [self addChild:sprLeft];  

    //----创建一个简单的覆盖层  

    //获取当前屏幕宽高  

    CGSize size =[[CCDirector sharedDirector]winSize];  

    //创建一个精灵(无贴图)  

    CCSprite*sprite =[CCSprite node];  

    //设置精灵贴图大小(全屏幕宽高)  

    sprite.textureRect=CGRectMake(0, 0, size.width, size.height);  

    sprite.position=ccp(size.width*0.5,size.height*0.5);  

    sprite.opacity=127;//半透明[0~255]  

    sprite.color=ccc3(0, 0, 0);//设置黑色  

    [self addChild:sprite];  

    //----  

    CCSprite* sprRight = [CCSprite spriteWithFile:@"Icon.png"];  

    sprRight.position=ccp(300,180);  

    [self addChild:sprRight];  

     

          这里我创建了两个精灵一个被覆盖 一个不被覆盖 这样只要让童鞋们看得更清楚~

         下面利用第二种方式实现:

    //----  

    CCSprite *sprLeft = [CCSprite spriteWithFile:@"Icon.png"];  

    sprLeft.position=ccp(100,180);  

    [self addChild:sprLeft];  

    //----创建一个简单的覆盖层  

    //创建一个精灵(无贴图)  

    CCLayerColor *layer =[CCLayerColor layerWithColor:ccc4(0, 0, 0, 127)];  

    [self addChild:layer];  

    //----  

    CCSprite* sprRight = [CCSprite spriteWithFile:@"Icon.png"];  

    sprRight.position=ccp(300,180);  

    [self addChild:sprRight];  

     

          第二种方法大家可以看到就两句话实现,原因这里解释下:

                    第一种设置了贴图大小,layer不需要!因为layer默认全屏;

                    第一种设置了坐标,layer不需要!因为layer默认屏幕中心点;

                    第一种设置了透明度和颜色,layer也设置了~在layer创建的时候创建的,在layer创建时传入的四个参数:

                    四个参数分别表示RGBA!注意是RGBA!!!!不是ARGB!(因为Himi做过me、Android所以看到设置颜色第一概念就是ARGB。。所以刚接触这里各种郁闷,总是效果不是如自己想的。。。)

                   这里补充下:RGBA 颜色的三原色,红色、绿色、蓝色、透明度!

     

  • 相关阅读:
    Python中if __name__ == '__main__':的作用
    Java集合面试题及答案总结(2020版)
    Java多线程面试题及答案(2020版)
    poi: 如何获取cell的行号对应的字母
    gogs: 进入Docker实例并修改MySQL帐号
    多音源多声卡背景音乐播放系统,可在一台电脑上同时播放10种音乐
    弱电图纸中敷设方式符号表示大全
    HashMap集合详解----源码分析--之--高级篇
    正则表达式总结及主要事项
    使用接口进行form表单提交
  • 原文地址:https://www.cnblogs.com/gaoxiao228/p/2468424.html
Copyright © 2011-2022 走看看