ios cocos2D Sprites

一捏鱼、定義:什么是Sprites

Sprites是一個能動畫或者轉(zhuǎn)變的2D圖像蔑水,通過改變他的屬性諸如rotation,position,scale,color早芭。

二、創(chuàng)建Sprites

創(chuàng)建Sprites要依據(jù)你需要什么的完成方式恬叹。你可以通過不同的圖像格式創(chuàng)建,例如PNG,JPEG,TIFF等同眯。

1绽昼、指定使用的圖片

auto mySprite = Sprite::create("mysprite.png");

var mySprite = new cc.Sprite(res.mySprite_png);

這樣創(chuàng)建的結(jié)果就是使用了全部的圖片。sprite同圖片的尺寸一樣须蜗。如果圖片大小事200*200那么Sprite就是200*200硅确;

2、創(chuàng)建一個具體大小的Sprite

之前的例子中明肮,創(chuàng)建的Sprite與圖像的尺寸一樣菱农,如果要創(chuàng)建一個確定指定的圖像和指定的大小,如下晤愧;

var mySprite = new cc.Sprite(res.mySprite_png,cc.rect(0,0,40,40));



矩形從左上角開始大莫,作為左邊原點。而世界的坐標是在左下角官份。

三只厘、creating a Sprite from a Sprite Sheet

Sprite Sheet將一系列的Sprites組合到一個文件中。通過Sprite sheet可以更好的利用繪制方法配料渲染舅巷。他們也可以在減少磁盤和內(nèi)存的情況下更搞笑的將sprites打包到sheet中羔味。

第一次使用sprite sheet加載,他將全部進入到SpriteFrameCache中钠右。SpriteFrameCache是一個將SpriteFrame對象添加到里面的類赋元,他能快速的取得SpriteFrame.SpriteFrame只載入一次,然后又保持在SpriteFrameCache中。

下面就是一個sprite sheet;


下面詳細的觀看發(fā)生的變化:


如你看到的sprite sheet搁凸,他最小化了他們減少了不需要的空間媚值,將所有的sprites綁到一個文件。


1护糖、Loading a Sprite Sheet

將sprite sheet載入到SpriteFrameCache中褥芒,或許是AppDelegate:

auto spritecache = SpriteFrameCache::getInstance;

spritecache->addSpriteFramesWithFile("sprites.plist");

Javascript

var spritecache = cc.SpriteFrameCache;

//。plist文件需要通關相關的軟件產(chǎn)生

spritecache.addSpriteFramesWithFile(res.sprites_plist);

此時就可以利用SpriteFrameCache創(chuàng)建Sprite對象了嫡良。

2锰扶、Creating a Sprite from SpriteFrameCache

通過SpriteFrameCache創(chuàng)建Sprite

//在.plist文件中有每個sprite的名稱,通過抓取名稱寝受,創(chuàng)建

var mysprite = cc.Sprite.createWithSpriteFrameName(res.mySprite_png);

3坷牛、Creating a Sprite frome a SpriteFrame

先得到spriteFrame ,然后利用SpriteFrame創(chuàng)建Sprite很澄。

var newspriteFrame = cc.SpriteFrameCache.getSpriteFrameByName(res.sprites_plist);

var newSprite = cc.Sprite.createWithSpriteFrame(newspriteFrame);

3京闰、Tools for creating Sprite Sheets

下面是一些創(chuàng)建sprite sheet 的工具

Cocos Sdudio

ShoeBox

Texture Packer

Zwoptex

四、Sprite Manipulation(操縱)

創(chuàng)建了sprite后痴怨,你就能操縱他的很多屬性

var mysprite = new Sprite(res.mysprite_png);

1忙干、Anchor point and Position

Anchor Point :是一個設置的坐標點,當設置位置時浪藻,指定sprite使用哪部分捐迫。只針對轉(zhuǎn)換屬性。包含了scale ,rotation ,skew爱葵。不包括color和opacity施戴。anchor point使用的坐標系基準點是左下角。默認情況下萌丈,所有節(jié)點的默認錨點是(0.5,0.5)

設置默哀點比較簡單

mySprite.setAnchorPoint(cc._p(0.5,0.5));

//bottom left?

mySprite.setAnchorPoint(cc._p(0,0));

//top left

mySprite.setAnchorPoint(cc._p(0,1));

//bottom right

mySprite.setAnchorPoint(cc._p(1,0));

//top right

mySprite.setAnchorPoint(cc.p(1,1));

實際上可以虛擬一個正方形赞哗,四個點的坐標分別為

(0,0),(0,1)-->對應左下、左上

(1,0)(1,1)-->右下辆雾,右上

圖像在這個正方形田字格內(nèi)分別移動肪笋,靠近設置點。

2度迂、Sprite properties effected by anchor point

使用錨點來影響scale rotation skew 在轉(zhuǎn)換中的值藤乙。

?2.1Position

錨點是作為設置位置的起始點。通過顏色的線條和sprite的位置關聯(lián)惭墓。你能注意到當我們改變錨點值的時候坛梁,sprite的位置也發(fā)生了改變。

按照我的理解腊凶,錨點是為了固定在某點然后旋轉(zhuǎn)和其他動畫使用的划咐。

2.2Rotation

通過設置rotation的征服度數(shù)來改變sprite的角度拴念。證書的順時針,負數(shù)時逆時針

mySprite.setRotation(cc._p(20.0));

mySprite.setRotation(cc._p(-20.0));

mySprite.setRotation(cc._p(60.0));

mySprite.setRoation(cc._p(-60.0));


2.3Scale

利用scale屬性褐缠,可以單獨改變x或者y方向的放大或者同時放大政鼠,默認是同時放大一倍。

mySprite.setScale(cc._p(2.0));

mySprite.setScaleX(cc._p(2.0));

mySprite.setScaleY(cc._p(2.0));


2.4Skew

利用Skew屬性送丰,可以改變x\y或者同時改變sprite的傾斜度

mySprite.setSkewX(cc._p(20.0));

mySprite.setSkewY(cc._p(20.0));

3缔俄、Sprite properties not affected by anchor point

沒有收到影響的屬性,color ?Opacity

改變color器躏,是通過Color3B這個對象,他是RGB值蟹略。

使用Color3B定義顏色

mySprite.setColor(cc.color.WHITE);

mySprite.setColor(cc.color(255,255,255));

Opacity

透明度登失,取值范圍是0--255,默認情況下是255挖炬,0代表了不可見揽浙。

mySprite.setOpacity(30);

五、Polygon Sprite多邊形

2Dimage 意敛;多邊形的sprite是由多個三角形組成馅巷,一般的sprite由兩個三角形組成。

1草姻、Why use a Pllygon Sprite?

這里有很多專業(yè)的技術(shù)術(shù)語來描繪像素填充率钓猬,但是主要的是多邊形依據(jù)你的Sprite的多邊形繪制。不是簡單的使用寬和高圍繞的正方形撩独。這節(jié)省了很多不必須要的繪制敞曹。考慮下述情況:


注意左邊和右邊的區(qū)別综膀。

左邊澳迫,一個典型的Sprite繪制在一個由兩個三角形組成的長方形中。

右邊剧劝,由許多小的三角形繪制一個多邊形巍耗。

純粹的權(quán)衡他的性能原因,依據(jù)各種因素(如形狀舟山、細節(jié)摩窃、尺寸,華仔屏幕上的數(shù)量等細節(jié))暂论,但總的來說面褐,現(xiàn)在CPU的頂點像素更高效。

1取胎、AutoPolygon

AutoPolygon是一個輔助類展哭。他的目的是在運行狀態(tài)下將圖像處理為2D多邊形網(wǎng)格湃窍。

從軌跡中所有的點,到三角網(wǎng)絡匪傍,在處理過程中的每個步驟都有功能您市。結(jié)果,可以通過Sprite對象創(chuàng)建功能創(chuàng)建一個PolygonSprite役衡,例如

//自動產(chǎn)生多邊形

auto pinfo = cc.autopolygon.generatePolygon(res.mysprite_png);

//create a sprite with polygon info

var sprite = new cc.Sprite(pinfo);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茵休,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子手蝎,更是在濱河造成了極大的恐慌榕莺,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棵介,死亡現(xiàn)場離奇詭異钉鸯,居然都是意外死亡,警方通過查閱死者的電腦和手機邮辽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門唠雕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吨述,你說我怎么就攤上這事岩睁。” “怎么了揣云?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵捕儒,是天一觀的道長。 經(jīng)常有香客問我灵再,道長肋层,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任翎迁,我火速辦了婚禮栋猖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汪榔。我一直安慰自己蒲拉,他們只是感情好,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布痴腌。 她就那樣靜靜地躺著雌团,像睡著了一般。 火紅的嫁衣襯著肌膚如雪士聪。 梳的紋絲不亂的頭發(fā)上锦援,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音剥悟,去河邊找鬼灵寺。 笑死曼库,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的略板。 我是一名探鬼主播毁枯,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼叮称!你這毒婦竟也來了种玛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤瓤檐,失蹤者是張志新(化名)和其女友劉穎赂韵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體距帅,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡右锨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了碌秸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡悄窃,死狀恐怖讥电,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轧抗,我是刑警寧澤恩敌,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站横媚,受9級特大地震影響纠炮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜灯蝴,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一恢口、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧穷躁,春花似錦耕肩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狡忙,卻和暖如春梳虽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灾茁。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工窜觉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谷炸,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓竖螃,卻偏偏與公主長得像淑廊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子特咆,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • http://www.cocos2d-x.org/docs/programmers-guide/actions/i...
    supory閱讀 344評論 0 1
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 3,845評論 0 6
  • 使用首先需要了解他的工作原理 1.POI結(jié)構(gòu)與常用類 (1)創(chuàng)建Workbook和Sheet (2)創(chuàng)建單元格 (...
    長城ol閱讀 8,446評論 2 25
  • 初識chipmunk物理引擎 chipmunk本是一個獨立的開源項目,用純c編寫.cocos2d同時整合了chip...
    babybus_break閱讀 1,648評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,321評論 25 707