在UIImage和UIButton的图像之间创建标识符

时间:2016-01-08 16:24:06

标签: ios uibutton uiimage

我正在制作一个游戏,一个角色会有一个气球思想和一堆上面的按钮。每隔五秒,气球的图像就会改变,因此按钮的组织也会改变。

我设法创建代码来制作图像的类型,但是我很难创建将按钮链接到气球的逻辑。想法是当显示气球的新图像时,用户必须单击与图像对应的按钮。

这是一张更好地说明的图片:

enter image description here

我尝试使用Enums,但对我不起作用。这是我的代码:

enum PontuacaoJogo {

    case toddynho
    case coxinha
    case sushi
    case coracao
    case netflix


    case ballonToddynho
    case ballonCoxinha
    case ballonSushi
    case ballonCoracao
    case ballonNetflix

    var imagemNecessidades: UIImage {
        switch self {
        case .toddynho: return UIImage(named: "toddy_.png")!
        case .coxinha: return UIImage(named: "coxinha_.png")!
        case .sushi: return UIImage(named: "sushi_.png")!
        case .coracao: return UIImage(named: "coracao_.png")!
        case .netflix: return UIImage(named: "bedflix_1.png")!

        default: ()
        }
   return imagemNecessidades }

    var imagemBaloes: UIImage {

        switch self {
        case .ballonToddynho: return UIImage(named: "toddy_.png")!
        case .ballonCoxinha: return UIImage(named: "coxinha_.png")!
        case .ballonSushi: return UIImage(named: "sushi_.png")!
        case .ballonCoracao: return UIImage(named: "coracao_.png")!
        case .ballonNetflix: return UIImage(named: "bedflix_1.png")!

        default: ()
        }

   return imagemBaloes }


}

之后我尝试创建一个If else语句,将UIButton的图像与气球的图像进行比较,但我找不到通用的东西,例如:

if imgBtn1.imageView.image == ballon.image {
    // makes point
}

因为按钮的图像和气球的图像有不同的名称。那么,我该如何做到这一点呢?

2 个答案:

答案 0 :(得分:0)

我建议两个选项:UIViews可以有一个标签,因此你可以用枚举ID标记你的按钮。在不知道您的应用程序如何设置的情况下,一些相关部分看起来类似于:

// Declare enums in some header
typedef NS_ENUM(NSInteger, PontuacaoJogo)
{
    PontuacaoJogoSushi,
    PontuacaoJogoNetflix
};

// When you create the thought bubble with the image needing to match
-(void)createThoughtBubble
{
   //logic to choose image
    self.thoughtBubbleID = PontuacaoJogoSushi;
    //self.someImageView.image = [UIImage imageNamed:@"sushi"];
}


-(UIButton*)imagemBaloes:(PontuacaoJogo)buttonID
{
    UIButton* someButton;
    someButton.tag = buttonID;
}

//Tap delegate for the three buttons
-(IBAction)buttonTapped:(id)sender
{
    UIButton* buttonTapped = (UIButton*)sender; //if typeof class etc....
    if( buttonTapped.tag == self.thoughtBubbleID )
    {
        //Match
    }
}

如果要进一步扩展这些按钮,另一个是子类UIButton并为你的枚举添加属性; (可能是大多数游戏制作中的情况)。

@interface SimonSaysButton : UIButton
    @property (nonatomic) PontuacaoJogo imageID;
@end

无论哪种方式,我都不会比较图像相等性,而是测试数据,在您的情况下是枚举值。

答案 1 :(得分:0)

我设法工作:

我使用的解决方案是创建两个数组,一个用于气球图像,另一个用于按钮图像。所以,在if else语句中,我比较了两个数组的索引并且工作了!