日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cocos2D(四)---- CCSprite

發布時間:2025/3/13 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2D(四)---- CCSprite 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在介紹CCSprite之前,先要理解游戲開發中的一個核心概念:精靈。精靈也稱為游戲對象,它能夠用來表示游戲中的不論什么物體,比方敵人、子彈、甚至是一個背景圖片、一段文字。CCSprite能夠說是在cocos2d中最經常使用的一個類,能夠稱之為"精靈類",它能夠以圖片的形式將精靈顯示到屏幕上。


創建精靈

在談怎么創建一個精靈之前,先了解下游戲開發中還有一個核心概念:紋理。紋理事實上就是用來描寫敘述物體表面細節的圖形,也稱為紋理貼圖,把紋理依照特定的方式映射到物體表面上的時候能使物體看上去更加真實。我們將紋理映射到屏幕上就可以顯示相應的圖形。


1.創建精靈最簡單的方式就是給精靈指定一張圖片文件,cocos2d會利用這張圖片生成紋理對象(CCTexture2D)并載入到紋理緩存庫中(CCTextureCache),終于由精靈來控制紋理顯示在屏幕中的位置。??

[java]?view plaincopy
  • //?加入精靈到圖層中??
  • -?(id)init?{??
  • ????if?(self?=?[super?init])?{??
  • ????????CCSprite?*sprite?=?[CCSprite?spriteWithFile:@"lufy.png"];??
  • ????????CGSize?winSize?=?[CCDirector?sharedDirector].winSize;??
  • ????????sprite.position?=?ccp(winSize.width?*?0.5f?,?winSize.height?*?0.5f);??
  • ????????[self?addChild:sprite];??
  • ????}??
  • ????return?self;??
  • }??
  • 為了保證可以正常讀取圖片資源,要把你的圖片文件放在Resource目錄中

    執行效果:


    其它經常使用設置

    1> 設置精靈的不透明度

    [java]?view plaincopy
  • //?大概為半透明??
  • sprite.opacity?=?125;??
  • opacity的取值范圍是0-255,0代表全然透明,255代表全然不透明



    2> 給精靈著色

    [java]?view plaincopy
  • //?紅色??
  • sprite.color?=?ccc3(255,?0,?0);??


  • 3> 水平鏡像

    [java]?view plaincopy
  • sprite.flipX?=?YES;??


  • 4> 垂直鏡像

    [java]?view plaincopy
  • sprite.flipY?=?YES;??

  • 果flipX和flipY一起使用

    [java]?view plaincopy
  • sprite.flipX?=?YES;??
  • sprite.flipY?=?YES;??


  • 2.能夠指定一個范圍僅僅載入圖片的某個矩形區域

    這張圖片的原大小是100x100的

    [java]?view plaincopy
  • CCSprite?*sprite?=?[CCSprite?spriteWithFile:@"lufy.png"?rect:CGRectMake(0,?0,?50,?50)];??
  • 僅僅載入了圖片左上角50x50的區域


    3.能夠直接傳入一個紋理對象(CCTexture2D)

    [java]?view plaincopy
  • //?創建紋理對象??
  • CCTexture2D?*texture?=?[[CCTextureCache?sharedTextureCache]?addImage:@"lufy.png"];??
  • ??
  • //?傳入紋理對象,生成精靈??
  • CCSprite?*sprite?=?[CCSprite?spriteWithTexture:texture];??
  • CCTextureCache是專門用來緩存CCTexture2D對象的,它內部有個NSMutableDictionary *textures_字典,key是圖片名稱,vale是CCTexture2D對象。當調用它的addImage:方法加入圖片時,會先依據圖片名查找字典中是否存在相應的CCTexture2D對象,假設有就直接返回;假設沒有,就會依據圖片名稱去載入CCTexture2D對象,載入完成后將CCTexture2D對象放入字典中。

    或者指定一個范圍僅僅載入圖片的某個矩形區域

    [java]?view plaincopy
  • CCSprite?*sprite?=?[CCSprite?spriteWithTexture:texture?rect:CGRectMake(0,?0,?50,?50)];??

  • 紋理的大小

    眼下位置,iOS設備僅僅支持尺寸為"2的n次冪"的紋理,因此每張紋理的寬和高都僅僅可能為:2、4、8、16、32、64、128、256、512、1024和2048像素。也就是說紋理的寬高僅僅能是上述數值的組合,比方2x4,32x32,512x64等

    我們在制作紋理圖片的時候,最好圖片的尺寸都符合上述要求,不然壞處多多。

    比方,有一張260x260像素的32位色圖,它本應該在內存中大概占270KB(260 x 260 x 32 / 8 = 270400B),但受紋理尺寸的限制,紋理的尺寸必須是2的n次冪,系統會自己主動生成一張最接近原圖尺寸的(但不能偏小,要能包括原圖像)、寬高都為2的n次冪的紋理,于是系統將生成一張512x512像素的紋理,所以終于會占用1MB的內存(512 x 512 x 32 / 8 = 1048576B),實際占用的內存居然是所需內存的4倍。解決的方法就是將這張260x260像素的圖像改為256x256像素,系統也將生成256x256像素的紋理。


    HD和SD圖

    iOS的像素分別率隨設備的硬件而變化,iPhone第一次引入了高分辨率的視網膜屏幕(Retina顯示屏幕),像素分辨率為960x640,剛好是前一代iPod和iPhone像素分辨率(480x320)的兩倍。通常會將Retina顯示屏幕使用的圖像稱為高分辨率(HD)圖像,非Retina顯示屏幕使用的圖像稱為標準分辨率(SD)圖像。

    以下來看看各代iOS設備的規格參數

    設備最大紋理尺寸像素分辨率坐標系
    iPhone 2G\3G\3GS、iPod Touch
    1024x1024
    480x320480x320
    iPhone4、iPhone4s2048x2048
    960x640480x320
    iPad、iPad22048x20481024x7681024x768
    盡管這些設備的像素分辨率不同,但幸運的是,cocos2d的坐標系統跟UIKit一樣與像素無關,它使用的是點坐標系,而不是像素坐標系,即以點為單位,不是以像素為單位。在Retina顯示屏幕的設備上,1點是2像素;在非Retina顯示屏幕的設備上,1點就是1像素。因此通過點來表示位置,坐標在兩種設備上是同樣的。

    假設游戲執行在具有Retina顯示屏幕的設備上,cocos2d會先嘗試載入帶有-hd后綴的圖片。比方你在具有Retina顯示屏幕的設備上載入ball.png,它會首先嘗試載入ball-hd.png,假設該文件不存在或者非Retina顯示屏幕,將載入標準分辨率(SD)圖片ball.png。因此為了更好地支持Retina顯示屏,通常會使用HD分辨率創建全部圖片,然后把寬高都縮小50%,另存為SD分辨率圖片

    只是,要想cocos2d會自己主動載入HD圖片,還須要開啟對Retina顯示屏幕的支持

    [java]?view plaincopy
  • [[CCDirector?sharedDirector]?enableRetinaDisplay:YES];??

  • CCLabelTTF

    CCLabelTTF繼承自CCSprite,能夠用來顯示文本

    [java]?view plaincopy
  • CCLabelTTF?*label?=?[CCLabelTTF?labelWithString:@"Hello?World"?fontName:@"Courier?New"?fontSize:20];??
  • label.position?=?ccp(winSize.width?*?0.5f?,?winSize.height?*?0.5f);??
  • [self?addChild:label];??
  • 能夠通過color屬性設置文字顏色

    [java]?view plaincopy
  • //?紅色??
  • label.color?=?ccc3(255,?0,?0);??



  • 原文地址:http://blog.csdn.net/q199109106q/article/details/8603163 感謝作者~!

    轉載于:https://www.cnblogs.com/blfshiye/p/4353074.html

    總結

    以上是生活随笔為你收集整理的cocos2D(四)---- CCSprite的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。