如何制作一个使用" self"的全局变量在斯威夫特

时间:2015-04-22 21:56:40

标签: ios swift sprite-kit global-variables

Hello我目前在xCode中使用swift,我有一个随机数生成器,在视图中生成一个随机点。

        func randomInRange(lo: Int, hi : Int) -> Int {
            return lo + Int(arc4random_uniform(UInt32(hi - lo + 1)))
        }
        // x coordinate between MinX (left) and MaxX (right):
        let randomX = randomInRange(Int(CGRectGetMinX(self.frame) * 2), Int(CGRectGetMaxX(self.frame)))
        // y coordinate between MinY (top) and MidY (bottom):
        let randomY = randomInRange(Int(CGRectGetMinY(self.frame) * 2), Int(CGRectGetMaxY(self.frame)))
        let randomPoint = CGPoint(x: randomX , y: randomY)

我想全局使用这个变量,所以我可以多次使用这个随机点,而不是每次都要写出整个代码块。现在我知道你可以通过在GameScene类之上声明它或者在类和viewDidLoad之间声明它来创建一个全局变量

class GameScene: SKScene , SKPhysicsContactDelegate {


func randomInRange(lo: Int, hi : Int) -> Int {
    return lo + Int(arc4random_uniform(UInt32(hi - lo + 1)))
}
// x coordinate between MinX (left) and MaxX (right):
let randomX = randomInRange(Int(CGRectGetMinX(self.frame) * 2), Int(CGRectGetMaxX(self.frame)))
// y coordinate between MinY (top) and MidY (bottom):
let randomY = randomInRange(Int(CGRectGetMinY(self.frame) * 2), Int(CGRectGetMaxY(self.frame)))
let randomPoint = CGPoint(x: randomX , y: randomY)


 override func didMoveToView(view: SKView) {
    /* Setup your scene here */

然而,当我把它放在相同的场景类上面时,我得到错误信息...... "使用未解析的标识符self" 当我把它放在gameScene类和viewDidLoad之间时,我得到错误... gameScene没有名为self的成员。 如果可能的话,有一种方法可以用视图中的其他内容替换self,如果有,请回答。 谢谢!

2 个答案:

答案 0 :(得分:1)

在GameScene类之上声明全局函数,并将self.frame替换为UIScreen.main.bounds

答案 1 :(得分:0)

你可以使用这样的单身:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Redirect to https" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>