質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

3026閲覧

Swift2 半透明なSKSpriteNodeにaddChildしたSKLabelNodeを不透明にするには

doumeishi

総合スコア52

iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2015/12/19 08:09

自作のRPGを作成しています。
主人公が村人に話しかけた時、画面の下から半透明なSKSPriteNodeがニョキッと
現れて、会話文がその上に表示されます。
このSKSpriteNodeは、alpha = 0.5にして背景が半透明に見えるエフェクトに
したいです。
しかし、このSKSpirteNodeに、SKLAbelNodeを乗せると、文字も半透明に
なって見えづらいです。
SKSpriteNodeのalpahaは0.5でも、SKLabelNodeのalphaは1のままという
ことはできるでしょうか。
ソースコード上で

let messageBoad = SKSpriteNode()
messageBoad.name = "mb"
messageBoad.anchorPoint = CGPointZero
messageBoad.size = CGSize(width: 1024, height: 120)
messageBoad.position = CGPoint(x: 0, y: 0)
messageBoad.color = SKColor.blackColor()
messageBoad.zPosition = 6
messageBoad.alpha = 0.5

let message = SKLabelNode(fontNamed: "AmericanTypewriter-Bold")
message.name = "abc(loopNumber)"
message.text = str
message.horizontalAlignmentMode = .Left
message.fontSize = 30
message.fontColor = SKColor.whiteColor()
message.position = CGPoint(x:0, y:currentY)
message.alpha = 1.0
messageBoad.addChild(message)

としましたが、meessageの文字もやはり半透明になってしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

実際に試していませんが、.alphaを0.5にするのではなく、.colorのalphaを0.5ではどうでしょうか?

投稿2015/12/19 12:25

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

既にfuzzballの兄貴が回答されている通りで、UIViewの背景色のみを透過する方法ですね。
それだけではなんなので、Playgroundで書いてみました。お試しあれ。

XCPShowView(identifier: String, view: UIView)が廃止されていて、びっくり。

swift

1//: Playground - noun: a place where people can play 2 3import UIKit 4import SpriteKit 5import XCPlayground 6 7let width: CGFloat = 640 8let height: CGFloat = 480 9let skView = SKView(frame: CGRectMake(0, 0, width, height)) 10 11// 作成したSKViewをタイムラインに表示 12// Swift 2 : XCPShowView("Live View", view: skView) 13// Swift 2.1: XCPlaygroundPage.currentPage.liveView = skView 14//XCPShowView("Live View", view: skView) 15XCPlaygroundPage.currentPage.liveView = skView 16 17let scene = SKScene(size: CGSizeMake(width, height)) 18skView.presentScene(scene) 19 20let messageBoard = SKSpriteNode() 21messageBoard.name = "mb" 22messageBoard.anchorPoint = CGPointZero 23messageBoard.size = CGSizeMake(480, 240) 24messageBoard.position = CGPoint(x: 0, y: 0) 25//messageBoard.color = SKColor.orangeColor() 26messageBoard.zPosition = 6 27//messageBoard.alpha = 0.5 28 29let color = SKColor.orangeColor() 30let alphaColor = color.colorWithAlphaComponent(0.5) 31messageBoard.color = alphaColor 32 33 34let message = SKLabelNode(fontNamed: "AmericanTypewriter-Bold") 35message.name = "msg" 36message.text = "Hello, world!" 37message.horizontalAlignmentMode = .Left 38message.fontSize = 50 39message.fontColor = SKColor.whiteColor() 40message.position = CGPointMake(50, 100) 41 42messageBoard.addChild(message) 43scene.addChild(messageBoard)

投稿2015/12/19 13:47

izkn

総合スコア1698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doumeishi

2015/12/19 14:17

ありがとうございます、期待通りのエフェクトになりました。 Swiftは奥が深いですね!! これからも楽しく勉強していきます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問