2015年9月23日水曜日

【Swift】指定された範囲内で乱数を生成する方法

指定した範囲内でランダムな値を生成するには、以下のような関数で実装できます。


func getRandomNumber(Min _Min : Float, Max _Max : Float)->Float {        
    return ( Float(arc4random_uniform(UINT32_MAX)) / Float(UINT32_MAX) ) * (_Max - _Min) + _Min
}

使用例 : - 0.1〜9.9までの範囲で乱数を生成


getRandomNumber(Min: -0.1, Max: 9.9)

2015年9月20日日曜日

【Swift】【Spritekit】 SKSpriteNodeを継承したクラスでinitを宣言する場合

SKSpriteNodeの子クラスでコンストラクタであるinitを普通にオーバーライドしようとしたら、こんなエラーメッセージが表示されてしまった。

「must call a designated initializer of the superclass SKSpriteNode」

init()は子クラスから呼べないみたいです。
対処方法として、init(texture, color, size)を呼ぶことにします


import UIKit
import SpriteKit

class Man: SKSpriteNode {
    

    init() {
        let texture = SKTexture(imageNamed: "man")
        super.init(texture: texture1, color: nil, size: texture.size())
    }
    
    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}
    
ちなみに、init(coder aDecoder: NSCoder)はrequired initとして指定されているので、こいつもオーバーライドしてあげないとエラーになります。
基本的に呼ばれることはないので、中身はxcodeで自動生成されたエラー処理が入っています。

2015年9月16日水曜日

【Swift】Expected identifier in function declaration

Swiftのコンパイルエラー「Expected identifier in function declaration」
init()にfuncをつけてしまうとエラーになるみたいです。

まだまだswiftに慣れないなー。