ios - 我可以在 CCAnimation 中使用 blendFunc 吗?
<p><p>最近我需要通过在 <code>CCSprite</code> 中使用 <code>blendFunc</code> 来改善我的应用程序的视觉效果。但我不知道如何在 <code>CCAnimation</code> 中使用它。这是我的实现:</p>
<pre><code>CCSprite * test=;
test.position=CGPointMake(100, 200);
test.scale=3;
test.blendFunc=(ccBlendFunc){GL_SRC_ALPHA, GL_ONE};//it's not working
;
self.textureArray=[init];
for(int x=0;x<=18;x++){
rect:CGRectMake(0, 0, 91, 61)]];
}
CCAnimation * animation=;
];
</code></pre>
<p>但是<code>blendFuc</code>不适用于这种情况,只有<code>CCSprite</code>可以设置<code>blendFunc</code>。如果我需要动画中的所有帧都具有 blendFunc 的效果,我该怎么办?</p>
<p>顺便说一句,我尝试使用计时器手动为帧设置动画:</p>
<pre><code>self.skllTimer=;
-(void)animating:(NSTimer *)t{
CCSprite * tesx=;//f is a increasing value
CCSprite * ok =;
ok.blendFunc=(ccBlendFunc){GL_SRC_ALPHA, GL_ONE};
;
;
}
</code></pre>
<p>我通过这种方式得到了我想要的,但是效率不高,我认为必须有更好的方法来做到这一点。</p>
<p>谢谢。</p>
<p><strong>更新</strong></p>
<p>我发现这是由于</p>
<pre><code>-(void) updateBlendFunc
{
NSAssert( ! _batchNode, @"CCSprite: updateBlendFunc doesn't work when the sprite is rendered using a CCSpriteBatchNode");
// it is possible to have an untextured sprite
if( !_texture || ! ) {
_blendFunc.src = GL_SRC_ALPHA;
_blendFunc.dst = GL_ONE_MINUS_SRC_ALPHA;
;
} else {
_blendFunc.src = CC_BLEND_SRC;//here
_blendFunc.dst = CC_BLEND_DST;//and here
;
}
}
</code></pre>
<p>每次CCSprite更新它的displayFrame,这个函数都会改变它自己的_blendFunc。我不知道为什么会这样,但是在我删除以下两行之后:</p>
<pre><code>//_blendFunc.src = CC_BLEND_SRC;//here
//_blendFunc.dst = CC_BLEND_DST;//and here
</code></pre>
<p>问题解决了。我可以这样修复cocos2d吗?我希望我的更改不会引起错误。
请有人告诉我一个确切的答案。非常感谢。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您的第一个代码片段将不起作用,因为您创建的 Sprite 没有任何纹理,如果没有关联的纹理,CCSprite 不会更新 blendFunc。你应该做的是这个。</p>
<blockquote>
<pre><code>// add sprite frames to the sprite frame cache
CCSprite *sprite = ];
sprite.blendFunc = newBlendFunc;
;
</code></pre>
</blockquote>
<p>由于动画帧使用相同的纹理,并且我们在将纹理与其关联后在 Sprite 上设置所需的纹理,一旦动画运行,它将被正确设置和更新。</p></p>
<p style="font-size: 20px;">关于ios - 我可以在 CCAnimation 中使用 blendFunc 吗?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/22009687/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/22009687/
</a>
</p>
页:
[1]