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

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

新規登録して質問してみよう
ただいま回答率
85.50%
SpriteKit

SpriteKitは、iOSやOS Xで使用できるApple社製の2Dゲーム開発フレームワークです。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

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

Q&A

解決済

2回答

3104閲覧

SKActionが終わった後に何か動作をさせたい時

ponyota

総合スコア38

SpriteKit

SpriteKitは、iOSやOS Xで使用できるApple社製の2Dゲーム開発フレームワークです。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

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

0グッド

1クリップ

投稿2016/04/06 03:25

編集2016/04/06 12:55

SKActionが実行され、そのアクションが終わった時に呼ばれる関数というものは存在しますか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

すみません。今の私ですと、timerを使った方法しか思い浮かびません。
他に良い回答がありましたら、よろしくお願いします。

swift

1import SpriteKit 2 3class GameScene: SKScene { 4 5 //ラベル等の設定 6 let myLabel = SKLabelNode() 7 let mySprite = SKSpriteNode(color: SKColor.blueColor(), size:CGSizeMake(100,100)) 8 let action = SKAction.rotateByAngle(CGFloat(60 * M_PI / 180), duration: 1) 9 let wait = SKAction.waitForDuration(3) 10 let action2 = SKAction.scaleTo(2, duration: 1) 11 let action3 = SKAction.scaleTo(3, duration: 1) 12 13 var backgroundDate: NSDate! 14 var timerCount:Float = 2 15 var timer:NSTimer = NSTimer() 16 var timerLabel = SKLabelNode() 17 18 override func didMoveToView(view: SKView) { 19 mySprite.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)) 20 startTimer() 21 addChild(mySprite) 22 addChild(timerLabel) 23 24 } 25 26 //SKAction 27 func Question1(){ 28 mySprite.runAction(action) 29 30 } 31 32 func Question2(){ 33 mySprite.runAction(action2) 34 35 } 36 func Question3(){ 37 mySprite.runAction(action3) 38 39 } 40 41 //タイマー 42 func startTimer(){ 43 if timer.valid { 44 timer.invalidate() 45 } 46 timer = NSTimer(timeInterval: 0.1, target: self, selector: #selector(GameScene.countDown2(_:)), userInfo: nil, repeats: true) 47 NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes) 48 } 49 50 func countDown2(timer: NSTimer) { 51 timerCount += 0.1 52 let str = "Time:".stringByAppendingFormat("%.1f",timerCount) 53 timerLabel.text = str 54 timerLabel.fontColor = UIColor.blackColor() 55 timerLabel.fontSize = 50 56 timerLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)+100) 57 58 //1つ目のSKActionが10秒で終わるなら、次の時間を10秒にすれば次のアクションが始まる 59 if timerCount < 5 { 60 Question1() 61 62 } else if timerCount < 10 { 63 64 Question2() 65 66 } else if timerCount < 15 { 67 Question3() 68 } 69 }

投稿2016/04/07 14:15

masayuki07

総合スコア51

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

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

0

こんばんわ。初めての回答になります。
私自身も初心者の為、参考になれば幸いです。
間違っている記載があるかもしれませんが、ご容赦下さい。

Swift

1 2class GameScene: SKScene { 3 4 let myLabel = SKLabelNode() 5 6 7 override func didMoveToView(view: SKView) { 8 9 10 //Finishを表示する準備 11 myLabel.text = "Finish" 12 myLabel.fontSize = 45 13 myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)) 14 myLabel.alpha = 0 15 self.addChild(myLabel) 16 17 //1.音を鳴らす 18 let playSound = SKAction.playSoundFileNamed("sound.mp3.wav", waitForCompletion: true) 19 20 //2.音を鳴らしてから次のアクションまで停止する時間 21 let wait = SKAction.waitForDuration(3) 22 23 //3.文字を表示する 24 let action = SKAction.fadeAlphaTo(1,duration: 0.5) 25 26 //1.2.3の動きをまとめて順番に実行するアクション 27 let actionX = SKAction.sequence([playSound, wait, action]) 28 29 //アクションを実行 30 myLabel.runAction(actionX) 31 }}

sound.mp3の再生時間が20秒だとした場合、待ち時間を20秒に設定しておけば、
再生の終了と同時にFinishが表示されます。

投稿2016/04/06 13:04

編集2016/04/06 13:08
masayuki07

総合スコア51

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

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

ponyota

2016/04/06 13:36

ご丁寧にどうもありがとうございます。 ラベルノードを透明にしてSKActionの中にある、透明度を変えてラベルを見えるようにするアクションを使うという方法でご回答を頂きましたが、SKAction以外の動作につなげていくことはできませんか?例えば、あるSKActionが終わった後に呼び出される関数を作ることは可能ですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問