2014-02-21 118 views
5

因爲我得到了進一步的更新我的問題。用cocos2d覆蓋圓形的精靈3

我想用一個圓圈來掩蓋一個精靈,用它下面的代碼似乎工作。

// Create the clipping node 
    self.clippingNode = [CCClippingNode clippingNodeWithStencil:[CCSprite spriteWithImageNamed:@"Home Scene/top-circle-mask.png"]]; 

    self.clippingNode.alphaThreshold = 0; 

    // Add the image 
    [self.clippingNode addChild:self.maskedImage]; 

    // And add the clipping node to the tree 
    [self addChild:self.clippingNode]; 

我也不得不加入到我的AppDelegate:

[cocos2dSetup setObject:@GL_DEPTH24_STENCIL8_OES forKey:CCSetupDepthFormat]; 

然而,「第一幀」渲染圖像東窗事發,這樣看起來有點醜,我怎麼能解決呢?我製作了一個顯示問題的小視頻。 http://cl.ly/U3QF

我打算去看看這個:

Masked image

感謝

+0

我相信面具必須是一個圖像(精靈)本身。 – LearnCocos2D

+0

是的,這看起來似乎是問題之一,我也必須啓用STENCIL,但現在第一幀仍然未被屏蔽。我怎麼能阻止這一點。 – Matthijn

回答

1

在CCSprite你不能直接設置圈妖精形象。所以你可以查看並將其添加到CCScene中。

首先你下載AGMedallionView類並添加到你的項目中。

進口該類場景中的

#import "AGMedallionView.h" 

在現場

-(id) init 
{ 
    if((self=[super init])) 
    { 
     AGMedallionView *view1 = [[AGMedallionView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)]; 
     [view1 setImage:[UIImage imageNamed:@"[email protected]"]]; 
     view1.borderColor = [UIColor redColor]; 
     view1.borderWidth = 5.0; 
     [[[CCDirector sharedDirector] view] addSubview:view1]; 
    } 
} 

顯示的init方法如下

enter image description here

+3

這不是'科科斯的方式'。 我想,主題啓動器可以使用CCMask類。 –

+0

是的但你可以用cocos2d整合視圖。 –

0

感謝您的初始工作後,我能夠將漸變放在風景背景之上這樣的:

CCSprite* spriteStencil = [CCSprite spriteWithImageNamed:stringSceneryfilename]; 
spriteStencil.anchorPoint = ccp(0, 0); 
CCClippingNode* crop = [CCClippingNode clippingNodeWithStencil:spriteStencil]; 
crop.alphaThreshold = 0; 
CCNodeGradient* nodegradient = [CCNodeGradient nodeWithColor:[CCColor colorWithRed:0 green:0 blue:0 alpha:0] fadingTo:[CCColor colorWithRed:0 green:0 blue:0 alpha:1] alongVector:ccp(0, 1)]; 
nodegradient.contentSizeInPoints = CGSizeMake(spriteScenery1.contentSizeInPoints.width, WINSIZE.height); 
nodegradient.anchorPoint = ccp(0, 0); 
[crop addChild:nodegradient]; 
[spriteScenery1 addChild:crop]; 

梯度僅涵蓋那裏的風景文件具有風景阿爾法0以上的風景有很多完全透明的區域(天空......)請注意,我使用的是即興創造梯度( CCNodeGradient),所以你不需要精確地使用將被裁剪的CCSprite。在我的情況下,作物梯度,然後我把梯度原始圖像的頂部(這是相同的圖像源作爲模板!)

當然,我也是在應用程序委託使用

[cocos2dSetup setObject:@GL_DEPTH24_STENCIL8_OES forKey:CCSetupDepthFormat]; // for stencils to work? aka CCClippingNode 

+0

cocos2dsetup未聲明的錯誤 –