掩飾乙個精靈:實現**
開啟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 ...