1

我的代码在同一个界面控制器上随机生成 2 个单独的图像。我需要检查图像是否相互匹配,但我不确定如何处理,因为它们是随机生成的。我尝试过编写 if 语句,例如:

if blueColour.setBackgroundImageNamed("colour\(randomImage).jpg") == mainBackgroundColour.setBackgroundImageNamed("mainColour\(randomMainBackground).jpg") {

        println("they match")

    } else {

        println("they dont match")

    }

但它似乎不起作用,我收到一条错误消息,说“二元运算符'=='不能应用于两个 Void 操作数”

我的代码如下:

@IBOutlet var blueColour: WKInterfaceButton!
@IBOutlet var pinkColour: WKInterfaceButton!
@IBOutlet var greenColour: WKInterfaceButton!
@IBOutlet var yellowColour: WKInterfaceButton!

@IBOutlet var mainBackgroundColour: WKInterfaceGroup!

@IBOutlet var scoreLabel: WKInterfaceLabel!

var randomImage = UInt32()
var randomMainBackground = UInt32()

@IBAction func onePressedTest() {


    if blueColour.setBackgroundImageNamed("colour\(randomImage).jpg") == mainBackgroundColour.setBackgroundImageNamed("mainColour\(randomMainBackground).jpg") {

        println("they match")

    } else {

        println("they dont match")

    }

    randomImage = arc4random_uniform(4)
    blueColour.setBackgroundImageNamed("colour\(randomImage).jpg")
    randomImage = arc4random_uniform(4)
    pinkColour.setBackgroundImageNamed("colour\(randomImage).jpg")
    randomImage = arc4random_uniform(4)
    greenColour.setBackgroundImageNamed("colour\(randomImage).jpg")
    randomImage = arc4random_uniform(4)
    yellowColour.setBackgroundImageNamed("colour\(randomImage).jpg")

    randomMainBackground = arc4random_uniform(4)
    mainBackgroundColour.setBackgroundImageNamed("mainColour\(randomMainBackground).jpg")

}

新修订的代码 20.04.2015:

import WatchKit
import Foundation

protocol WKInterfaceComparableImage {

func getImage()->UIImage;
func equalsImage(comparableWKObject:WKInterfaceComparableImage)->Bool;
}

class WKInterfaceButtonComparable : WKInterfaceButton, WKInterfaceComparableImage {

private var image:UIImage?;

override func setBackgroundImage(image: UIImage?) {
    self.image = image;
    super.setBackgroundImage(image);
}

func equalsImage(comparableWKObject: WKInterfaceComparableImage)->Bool {
    return self.image === comparableWKObject.getImage();
}

func getImage() -> UIImage {
    return image!;
}

}

 class WKInterfaceGroupComparable : WKInterfaceButton, WKInterfaceComparableImage {

private var image:UIImage?;

override func setBackgroundImage(image: UIImage?) {
    self.image = image;
    super.setBackgroundImage(image);
}

func equalsImage(comparableWKObject: WKInterfaceComparableImage)->Bool {
    return self.image === comparableWKObject.getImage();
}

func getImage() -> UIImage {
    return image!;
}
}

class ImageProvide {


private let MAX_RANDOM_NUMBER:UInt32 = 4

static let shared:ImageProvide = ImageProvide();

var images:[UIImage];

private init() {

    images = [];

    for i in 1...MAX_RANDOM_NUMBER {

        //get image with the best way to you
        images.append(UIImage(named: "colour\(i).jpg")!);
    }
}

func getRandomImage()->UIImage {

    let randomImage = arc4random_uniform(MAX_RANDOM_NUMBER);

    return getImage(id: Int(randomImage));
}

func getImage(#id:Int)->UIImage {

    return images[id];
}

}


class InterfaceController: WKInterfaceController {



@IBOutlet var blueColour: WKInterfaceButtonComparable!
@IBOutlet var pinkColour: WKInterfaceButtonComparable!
@IBOutlet var greenColour: WKInterfaceButtonComparable!
@IBOutlet var yellowColour: WKInterfaceButtonComparable!

@IBOutlet var mainBackgroundColour: WKInterfaceGroupComparable!

@IBOutlet var scoreLabel: WKInterfaceLabel!


var randomImage = UInt32()
var randomMainBackground = UInt32()

var score:Int = 1


@IBAction func onePressedTest() {

    if blueColour.equalsImage(mainBackgroundColour) || pinkColour.equalsImage(mainBackgroundColour) || greenColour.equalsImage(mainBackgroundColour) || yellowColour.equalsImage(mainBackgroundColour) {

        println("they match")
        scoreLabel.setText("\(score)")
        score++

    } else {

        println("they dont match")

    }

    blueColour.setBackgroundImage(ImageProvide.shared.getRandomImage())
    pinkColour.setBackgroundImage(ImageProvide.shared.getRandomImage())
    greenColour.setBackgroundImage(ImageProvide.shared.getRandomImage())
    yellowColour.setBackgroundImage(ImageProvide.shared.getRandomImage())
    mainBackgroundColour.setBackgroundImage(ImageProvide.shared.getRandomImage())
4

1 回答 1

0

我举了一个例子,我认为可以帮助您找到解决问题的方法,我创建了具有可比性的类自定义来帮助您的工作。我做的很快,我没有办法为你测试,但你可以看到这个概念来帮助你创建一个解决方案。我希望我的例子对你有所帮助。

ComparableImage是比较的关键,这个协议可以完成你的任务。

WKInterfaceButtonComparable扩展WKInterfaceButton,这样你就可以保存当前图像以进行比较,我对WKInterfaceGroupComparable.

ImageProvide很重要,因为这将管理您的图像,您需要编写有关图像的逻辑代码,并且使用此单例,您可以预加载图像并发送到 WK 组件。我希望它也有帮助。

protocol WKInterfaceComparableImage {

    func getImage()->UIImage;
    func equalsImage(comparableWKObject:WKInterfaceComparableImage)->Bool;
}

class WKInterfaceButtonComparable : WKInterfaceButton, WKInterfaceComparableImage {

    private var image:UIImage?;

    override func setBackgroundImage(image: UIImage?) {
        self.image = image;
        super.setBackgroundImage(image);
    }

    func equalsImage(comparableWKObject: WKInterfaceComparableImage)->Bool {
        return self.image === comparableWKObject.getImage();
    }

    func getImage() -> UIImage {
        return image!;
    }

}

class WKInterfaceGroupComparable : WKInterfaceButton, WKInterfaceComparableImage {

    private var image:UIImage?;

    override func setBackgroundImage(image: UIImage?) {
        self.image = image;
        super.setBackgroundImage(image);
    }

    func equalsImage(comparableWKObject: WKInterfaceComparableImage)->Bool {
        return self.image === comparableWKObject.getImage();
    }

    func getImage() -> UIImage {
        return image!;
    }

}

class ImageProvide {


    private let MAX_RANDOM_NUMBER:UInt32 = 4

    static let shared:ImageProvide = ImageProvide();

    var images:[UIImage];

    private init() {

        images = [];

        for i in 1...MAX_RANDOM_NUMBER {

            //get image with the best way to you
            images.append(UIImage(named: "colour\(i).jpg")!);
        }
    }

    func getRandomImage()->UIImage {

        let randomImage = arc4random_uniform(MAX_RANDOM_NUMBER);

        return getImage(id: Int(randomImage));
    }

    func getImage(#id:Int)->UIImage {

        return images[id];
    }

}


class InterfaceController: WKInterfaceController {


    @IBOutlet var blueColour: WKInterfaceButtonComparable!
    @IBOutlet var pinkColour: WKInterfaceButtonComparable!
    @IBOutlet var greenColour: WKInterfaceButtonComparable!
    @IBOutlet var yellowColour: WKInterfaceButtonComparable!

    @IBOutlet var mainBackgroundColour: WKInterfaceGroupComparable!

    @IBOutlet var scoreLabel: WKInterfaceLabel!


    var randomImage = UInt32()
    var randomMainBackground = UInt32()

    var score:Int = 1


    @IBAction func onePressedTest() {

        if blueColour.equalsImage(mainBackgroundColour) {

            println("they match")

        } else {

            println("they dont match")

        }

        blueColour.setBackgroundImage(ImageProvide.shared.getRandomImage())
        pinkColour.setBackgroundImage(ImageProvide.shared.getRandomImage())
        greenColour.setBackgroundImage(ImageProvide.shared.getRandomImage())
        yellowColour.setBackgroundImage(ImageProvide.shared.getRandomImage())
        mainBackgroundColour.setBackgroundImage(ImageProvide.shared.getRandomImage())
    }
}
于 2015-04-17T00:35:01.640 回答