是否有任何可能的方式在SpriteKit中創建漸變填充框?我試過用這個填充一個形狀節點,但是它注意到只有純色可以用於skshapenode。如何在Spritekit中創建漸變?
回答
目前SKShapeNode
我不認爲這是可能的,目前勉強處理其基本功能。如果不想使用預先存在的精靈漸變圖像,一個好方法是創建一個SKTexture
,將CIFilter
(如在這種情況下可能爲CILinearGradient
)應用到基本框圖像,然後從該SKTexture
創建SKSpriteNode
。
Matt的回答是正確的,但我無法添加漸變。這是我的嘗試,如果有人知道如何使其工作,請更新爲線程。
CIFilter *gradientFilter = [CIFilter filterWithName:@"CILinearGradient"];
//[gradientFilter setDefaults];
CIColor *startColor = [CIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
CIColor *endColor = [CIColor colorWithRed:0 green:0 blue:0 alpha:1.0];
CIVector *startVector = [CIVector vectorWithX:0 Y:0];
CIVector *endVector = [CIVector vectorWithX:0.21 Y:0.31];
[gradientFilter setValue:startVector forKey:@"inputPoint0"];
[gradientFilter setValue:endVector forKey:@"inputPoint1"];
[gradientFilter setValue:startColor forKey:@"inputColor0"];
[gradientFilter setValue:endColor forKey:@"inputColor1"];
SKEffectNode *effectNode = [SKEffectNode node];
effectNode.filter = gradientFilter;
effectNode.shouldEnableEffects = YES;
[self addChild:effectNode];
//effectNode.position = CGPointMake(200, 200);
來測試您的過濾器的另一種好方法,是從2013年WWDC
我能夠創建一個漸變我們CAGradientLayer和創建一個UIImage上下文,渲染層,並從UIImage創建紋理,速度很快,而且我沒有經歷任何減速(但我只需要爲按鈕創建一個)。 – AwDogsGo2Heaven
@ AwDogsGo2Heaven您可以添加該代碼作爲答案。 – DogCoffee
我在上面添加了答案。 – AwDogsGo2Heaven
下載演示程序CIFunHouse這裏是一個解決方案。 (請注意,我用的Rubymotion,紅寶石的目標C/iOS的結合,但邏輯是完全一樣的。如果有人想編輯這個並把客觀等價的C,繼續
size = CGSizeMake(50,50)
scale = options[:scale] || UIScreen.mainScreen.scale
opaque = options.fetch(:opaque, false)
UIGraphicsBeginImageContextWithOptions(size, opaque, scale)
context = UIGraphicsGetCurrentContext()
gradient = CAGradientLayer.layer
gradient.frame = CGRectMake(0,0,50,50)
gradient.colors = [SKColor.blackColor.CGColor,SKColor.whiteColor.CGColor]
gradient.renderInContext(context)
image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
texture = SKTexture.textureWithCGImage(image.CGImage)
node = SKSpriteNode.alloc.initWithTexture(texture)
謝謝,但這不適用於OSX:Sprite Kit。它僅限於iOS。 – Jonny
反正理由呢? – AwDogsGo2Heaven
UIGraphicsBeginImageContextWithOptions不存在。 – Jonny
確定這裏是我現在正在使用的東西,我將它基於AwDogsGo2Heaven的解決方案,但是適用於Mac,這對於一個完全兼容的解決方案來說是甜蜜的,我很難確定如何創建上下文,但似乎工作,並且我不確定這個規模。在視網膜mac和非視網膜mac上運行,但看不到任何問題,但上下文是使用scale 2創建的,所以對於非視網膜mac可能是矯枉過正,我把它放在SKTexture上的一個類別中
爲了使用它,只需撥打+(SKTexture*)gradientWithSize:(const CGSize)SIZE colors:(NSArray*)colors
。
編輯:更新後的代碼和更多的討論在這裏:Gradient texture has wrong scale on retina Mac
- 1. 如何在Opera中創建CSS3漸變?
- 2. 如何創建漸變
- 3. 在SpriteKit中繪製漸變線?
- 4. 如何在spritekit中創建風效果
- 5. 如何創建紋理/漸變背景
- 6. 如何創建專業漸變背景
- 7. 如何創建漸變顏色
- 8. 如何爲TChart Bar創建漸變?
- 9. 如何創建彎曲的漸變?
- 10. 如何創建UIBezierPath漸變填充?
- 11. 如何爲LinearLayout創建漸變背景?
- 12. 在HTML/CSS中創建漸變圓環
- 13. 在HTML中創建漸變背景
- 14. 在CSS/Jquery中創建漸變網格
- 15. contourf,colormap,colorbar在matlab中創建漸變
- 16. 在android中創建漸變邊框?
- 17. 如何在iOS中的UITableViewCell中創建漸變背景?
- 18. 爲圖像創建漸變
- 19. CSS創建顏色漸變
- 20. 創建放射漸變
- 21. 如何在android中創建自定義漸變?
- 22. 如何在flex中創建垂直漸變
- 23. 如何在我的邊框中創建徑向漸變?
- 24. 如何在Windows窗體中創建「銳利」漸變?
- 25. 如何在Firemonkey中創建徑向漸變
- 26. 如何在Python中創建顏色漸變?
- 27. 如何在OpenGL中創建深度漸變效果?
- 28. 你如何在CSS中創建漸變背景?
- 29. 如何在svg背景中創建漸變顏色
- 30. 如何在iOS中使用漸變創建疊加顏色
我回來了..並發現這一點:https://gist.github.com/Tantas/7fc01803d6b559da48d6 – Jonny
參見本https://開頭計算器/我的問題/ 18894493/making-a-skscenes-background-transparent-not-working-is-this-a-bug/24494346#24494346 – Suresh