如何在Cocos2D 1 0 中掩飾乙個精靈 六

2021-09-23 21:35:35 字數 1376 閱讀 3908

掩飾乙個精靈:實現**

開啟helloworldlayer.m並且在init方法上方新增如下方法:

- (ccsprite *)maskedspritewithsprite:(ccsprite *)texturesprite masksprite:(ccsprite *)masksprite ];

[texturesprite setblendfunc:(ccblendfunc)];

// 4

[rt begin];

[masksprite visit];

[texturesprite visit];

[rt end];

// 5

ccsprite *retval = [ccsprite spritewithtexture:rt.sprite

.texture];

retval.flipy = yes;

return retval;

}

讓我們一段一段的看:

用和掩飾精靈相同的寬和高建立ccrendertexture.

將掩飾精靈和紋理精靈放置到左下0,0的位置.

為之前描述的每乙個精靈設定混合函式.

呼叫begin去在ccrendertexture中開始繪製,繪製掩飾然後是紋理,最後呼叫end去結束繪製.

基於ccrendertexture的精靈紋理建立乙個新的精靈,因為該紋理是上下翻轉的,所以需要在y座標軸上翻轉它.

在我們討論的所有東西之後,現在讓我們來實際使用它!用一下**替換begintemp和endtemp之間的**:

ccsprite * mask = [ccsprite spritewithfile:@"calendarmask.png"];        

ccsprite * maskedcal = [self maskedspritewithsprite:cal masksprite:mask];

maskedcal.position = ccp(winsize.width/2, winsize.height/2);

[self addchild:maskedcal];

該**用我們新的函式去掩飾日曆精靈,並且新增掩飾後的版本到場景中.

編譯執行,你應該看到乙個被cocos2d 1.0掩飾後的精靈!

關於ccrendertexture方法的缺點

就像我前面提到的那樣,在opengl es 1.0中據我所知沒有辦法繞過這些缺點.但在opengl es 2.0中你可以通過著色器掩飾的更有效率 — 但是那是另一段旅程的主題了! ;)

如何在Cocos2D 1 0 中掩飾乙個精靈 一

原帖來自ray wunderlich寫的精彩的文章 how to mask a sprite with cocos2d 1.0,位址在 有時在你的遊戲中,你可能需要找到便利的方法去顯示精靈的一部分.一種辦法是使用第二張稱之為掩飾 mask 來完成.你設定掩飾中白色部分為要顯示的地方,而其他所有部分皆...

如何在Cocos2D 1 0 中掩飾乙個精靈 四

為了完成需要的效果,我們將使用如下策略 我們將首先繪製掩飾精靈,源的顏色 mask 設定為gl one,目的顏色 乙個空的快取 設定為gl zero.所以我們基本上原樣顯示掩飾.我麼將繪製日曆精靈,源顏色 日曆精靈 為gl dst alpha.你可以把它想象為好比是 根據當前快取中alpha的值 t...

cocos 2d中CCUserDefault的使用

cocos 2d中的ccuserdefault的使用非常簡單,網上有一位大神 已經把這個類全部都注釋了,一目了然。非常感謝!下面介紹下這個類的傻瓜用法 1.在需要使用的類中的引入標頭檔案 include support ccuserdefault.h include stdio.h include ...