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

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

ただいまの
回答率

90.48%

  • Swift

    7480questions

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

  • iOS

    4089questions

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

  • Swift 2

    1334questions

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

  • SpriteKit

    113questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,171

ponyota

score 28

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

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

import SpriteKit

class GameScene: SKScene {

    //ラベル等の設定
    let myLabel = SKLabelNode()
    let mySprite = SKSpriteNode(color: SKColor.blueColor(), size:CGSizeMake(100,100))
    let action = SKAction.rotateByAngle(CGFloat(60 * M_PI / 180), duration: 1)
    let wait = SKAction.waitForDuration(3)
    let action2 = SKAction.scaleTo(2, duration: 1)
    let action3 = SKAction.scaleTo(3, duration: 1)

    var backgroundDate: NSDate!
    var timerCount:Float = 2
    var timer:NSTimer = NSTimer()
    var timerLabel = SKLabelNode()

    override func didMoveToView(view: SKView) {
        mySprite.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
        startTimer()
        addChild(mySprite)
        addChild(timerLabel)

        }

    //SKAction
    func Question1(){
        mySprite.runAction(action)

    }

    func Question2(){
        mySprite.runAction(action2)

    }
    func Question3(){
        mySprite.runAction(action3)

    }

    //タイマー
    func startTimer(){
        if timer.valid {
            timer.invalidate()
        }
        timer = NSTimer(timeInterval: 0.1, target: self, selector: #selector(GameScene.countDown2(_:)), userInfo: nil, repeats: true)
        NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
    }

    func countDown2(timer: NSTimer) {
        timerCount += 0.1
        let str = "Time:".stringByAppendingFormat("%.1f",timerCount)
        timerLabel.text = str
        timerLabel.fontColor = UIColor.blackColor()
        timerLabel.fontSize = 50
        timerLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)+100)

        //1つ目のSKActionが10秒で終わるなら、次の時間を10秒にすれば次のアクションが始まる
        if timerCount < 5 {
            Question1()

        } else if timerCount < 10 {

            Question2()

        } else if timerCount < 15 {
            Question3()
        }
    }

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

class GameScene: SKScene {

    let myLabel = SKLabelNode()


    override func didMoveToView(view: SKView) {


        //Finishを表示する準備
        myLabel.text = "Finish"
        myLabel.fontSize = 45
        myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
        myLabel.alpha = 0
        self.addChild(myLabel)

      //1.音を鳴らす
        let playSound = SKAction.playSoundFileNamed("sound.mp3.wav", waitForCompletion: true)

      //2.音を鳴らしてから次のアクションまで停止する時間
        let wait = SKAction.waitForDuration(3)

      //3.文字を表示する
        let action = SKAction.fadeAlphaTo(1,duration: 0.5)

      //1.2.3の動きをまとめて順番に実行するアクション
        let actionX = SKAction.sequence([playSound, wait, action])

      //アクションを実行
        myLabel.runAction(actionX)
        }}

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/06 22:36

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

    キャンセル

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

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Swift

    7480questions

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

  • iOS

    4089questions

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

  • Swift 2

    1334questions

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

  • SpriteKit

    113questions

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

閲覧数の多いiOSの質問