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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【玩转cocos2d-x之八】精灵类CCSprite

發布時間:2024/4/11 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【玩转cocos2d-x之八】精灵类CCSprite 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原創作品,轉載請標明:http://blog.csdn.net/jackystudio/article/details/12747385


精靈類CCSprite可以說是游戲的主角了,也是我們平時最常用到的類。


1.概況


CCSprite本質上就是一個二維圖片,是靜態的。游戲中的動畫只不過是讓一張張靜態圖片快速更換達到的動態效果。CCSprite繼承于CCNodeRGBA,并實現了CCTextureProtocol的接口。因此CCNodeRGBA所具有的RGB和透明值這些屬性和接口CCSprite都有,而CCTextureProtocol是一個抽象類,定義了和紋理相關的兩個標準接口:

[cpp]?view plaincopy
  • //返回當前使用的紋理??
  • virtual?CCTexture2D*?getTexture(void)?=?0;??
  • ??
  • //設置一個新的紋理,它會被retain??
  • virtual?void?setTexture(CCTexture2D?*texture)?=?0; ?

  • 2.常用接口

    2.1.初始化

    [cpp]?view plaincopy
  • //初始化函數??
  • virtual?bool?init(void);??
  • ??
  • //用CCTexture2D紋理來初始化,精靈大小即是紋理大小??
  • virtual?bool?initWithTexture(CCTexture2D?*pTexture);??
  • ??
  • ///用CCTexture2D紋理和大小來初始化??
  • virtual?bool?initWithTexture(CCTexture2D?*pTexture,?const?CCRect&?rect);??
  • ??
  • //用CCTexture2D紋理,大小,旋轉來初始化??
  • virtual?bool?initWithTexture(CCTexture2D?*pTexture,?const?CCRect&?rect,?bool?rotated);??
  • ??
  • //用CCSpriteFrame精靈幀來初始化??
  • virtual?bool?initWithSpriteFrame(CCSpriteFrame?*pSpriteFrame);??
  • ??
  • //用CCSpriteFrame精靈幀名來初始化??
  • virtual?bool?initWithSpriteFrameName(const?char?*pszSpriteFrameName);??
  • ??
  • //用外部文件初始化,外部文件會先被創建為紋理,再用紋理初始化精靈??
  • virtual?bool?initWithFile(const?char?*pszFilename);??
  • ??
  • //用外部文件和大小來初始化??
  • virtual?bool?initWithFile(const?char?*pszFilename,?const?CCRect&?rect); ?
  • 2.2.繼承自CCTextureProtocol

    [cpp]?view plaincopy
  • //設置/獲取紋理??
  • virtual?void?setTexture(CCTexture2D?*texture);??
  • virtual?CCTexture2D*?getTexture(void);??
  • ??
  • //設置/獲取顏色描繪時混合方案??
  • void?setBlendFunc(ccBlendFunc?blendFunc);??
  • ccBlendFunc?getBlendFunc(void); ?
  • 2.3.繼承自CCNode

    參見CCNode。

    [cpp]?view plaincopy
  • virtual?void?setScaleX(float?fScaleX);??
  • virtual?void?setScaleY(float?fScaleY);??
  • virtual?void?setPosition(const?CCPoint&?pos);??
  • virtual?void?setRotation(float?fRotation);??
  • virtual?void?setRotationX(float?fRotationX);??
  • virtual?void?setRotationY(float?fRotationY);??
  • virtual?void?setSkewX(float?sx);??
  • virtual?void?setSkewY(float?sy);??
  • virtual?void?removeChild(CCNode*?pChild,?bool?bCleanup);??
  • virtual?void?removeAllChildrenWithCleanup(bool?bCleanup);??
  • virtual?void?reorderChild(CCNode?*pChild,?int?zOrder);??
  • virtual?void?addChild(CCNode?*pChild);??
  • virtual?void?addChild(CCNode?*pChild,?int?zOrder);??
  • virtual?void?addChild(CCNode?*pChild,?int?zOrder,?int?tag);??
  • virtual?void?sortAllChildren();??
  • virtual?void?setScale(float?fScale);??
  • virtual?void?setVertexZ(float?fVertexZ);??
  • virtual?void?setAnchorPoint(const?CCPoint&?anchor);//默認(0.5,0.5)??
  • virtual?void?ignoreAnchorPointForPosition(bool?value);??
  • virtual?void?setVisible(bool?bVisible);??
  • virtual?void?draw(void); ?
  • 2.4.繼承自CCNodeRGBA

    [cpp]?view plaincopy
  • //設置顏色??
  • virtual?void?setColor(const?ccColor3B&?color3);??
  • ??
  • //傳遞顏色??
  • virtual?void?updateDisplayedColor(const?ccColor3B&?parentColor);??
  • ??
  • //設置透明度??
  • virtual?void?setOpacity(GLubyte?opacity);??
  • ??
  • //設置/返回透明度是否跟隨顏色值變化而變化??
  • virtual?void?setOpacityModifyRGB(bool?modify);??
  • virtual?bool?isOpacityModifyRGB(void);??
  • ??
  • //傳遞透明度??
  • virtual?void?updateDisplayedOpacity(GLubyte?parentOpacity); ?
  • 2.5.批節點

    [cpp]?view plaincopy
  • //更新4屬性:x,y,rotation,scale??
  • virtual?void?updateTransform(void);??
  • ??
  • //如果精靈是由批節點CCSpriteBatchNode渲染的,則返回批節點??
  • virtual?CCSpriteBatchNode*?getBatchNode(void);??
  • //設置批節點,不推薦使用??
  • virtual?void?setBatchNode(CCSpriteBatchNode?*pobSpriteBatchNode); ?
  • 2.6.紋理

    [cpp]?view plaincopy
  • //設置紋理區域??
  • virtual?void?setTextureRect(const?CCRect&?rect);??
  • virtual?void?setTextureRect(const?CCRect&?rect,?bool?rotated,?const?CCSize&?untrimmedSize);??
  • virtual?void?setVertexRect(const?CCRect&?rect); ?
  • 2.7.精靈幀和動畫

    [cpp]?view plaincopy
  • //設置新的精靈幀??
  • virtual?void?setDisplayFrame(CCSpriteFrame?*pNewFrame);??
  • ??
  • //返回精靈幀是否在使用??
  • virtual?bool?isFrameDisplayed(CCSpriteFrame?*pFrame);??
  • ??
  • //返回當期使用精靈幀??
  • virtual?CCSpriteFrame*?displayFrame(void);??
  • ??
  • //設置動畫和顯示索引??
  • virtual?void?setDisplayFrameWithAnimationName(const?char?*animationName,?int?frameIndex); ?
  • 2.8.Setter和Getter方法

    設置/獲取CCSprite屬性。

    [cpp]?view plaincopy
  • //設置獲取是否更新??
  • virtual?bool?isDirty(void);??
  • virtual?void?setDirty(bool?bDirty);??
  • ??
  • //返回坐標、頂點、顏色信息??
  • ccV3F_C4B_T2F_Quad?getQuad(void);??
  • ??
  • //返回紋理旋轉??
  • bool?isTextureRectRotated(void);??
  • ??
  • //返回/設置地圖集索引??
  • unsigned?int?getAtlasIndex(void);??
  • void?setAtlasIndex(unsigned?int?uAtlasIndex);??
  • ??
  • //返回精靈區域,單位為點??
  • const?CCRect&?getTextureRect(void);??
  • ??
  • //如果采用批渲染,返回/設置紋理地圖集??
  • CCTextureAtlas*?getTextureAtlas(void);??
  • inline?void?setTextureAtlas(CCTextureAtlas?*pobTextureAtlas);??
  • ??
  • //獲取偏移??
  • const?CCPoint&?getOffsetPosition(void);??
  • ??
  • //設置返回翻轉??
  • bool?isFlipX(void);??
  • void?setFlipX(bool?bFlipX);??
  • bool?isFlipY(void);??
  • void?setFlipY(bool?bFlipY);??
  • 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

    總結

    以上是生活随笔為你收集整理的【玩转cocos2d-x之八】精灵类CCSprite的全部內容,希望文章能夠幫你解決所遇到的問題。

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