2016-08-19 6 views
1

最近、構造体を使用して達成度を定義する変数を保持し、アクセスしやすくしました。下図のように:変数を使用してSKSpriteNodeイメージを変更しようとしています

struct Achieve { 

var aName:String = "" 
var aDes:String = "" 
var aImage:String = "" 
var aAmount:Int = 0 
var aRequired:Int = 0 

} 

をだから私はそうのような 'ACH1' と呼ばれる変数に定義:

var Ach1 = Achieve(aName: "No. Games", aDes: "Games Played", aImage: "locked", aAmount: 0, aRequired: 10) 

、その後、私は以下の機能を使用してSKSpriteNodeを作成しました:

func generateShopItems (location: CGPoint, page:SKSpriteNode, tex: String) -> SKSpriteNode { 

     let node = SKSpriteNode(imageNamed: tex) 
     node.position = location 
     page.addChild(node) 
     return node 
} 

それから私を次のような別の関数でSKSpritenodeを定義するとき、Ach1変数のaI​​mageプロパティをtex文字列として使用しました。

Achievements.append(generateShopItems(CGPointMake(-120, 200), page:(page1ScrollView), tex: Ach1.aImage)) 

初めてゲームを実行したときにテクスチャがきれいに出ますが、Ach1変数のaI​​mageプロパティを変更したときに画像が変化することはありません。

} else if (node == Achievements[7]) { 

     Ach1.aImage = "diamondicon" 
     print("working") 

} 

私はゲームをプレイしている間SKSpriteNodeの画像を変更できるようにする必要があります。誰かが私が間違っていることを教えてもらえますか?

EDIT

var Ach1 = Achieve(node: SKSpriteNode?, aName: "No. Games", aDes: "Games Played", aImage: "locked", aAmount: 0, aRequired: 10) 

答えて

1

これが最初の私の心に来るソリューションです。それは最高ではないかもしれませんが、どちらも悪くありません。あなたのAchieve構造体で

nodeというプロパティを追加:

var node: SKSpriteNode? 

をそして、このような何か見てaImageプロパティを変更します。

var aImage: String = "" { 
    didSet { 
     node?.texture = SKTexture(imageNamed: aImage) 
    } 
} 

をあなたはノードを生成したときに今、これを置き換えます。

Achievements.append(generateShopItems(CGPointMake(-120, 200), 
    page:(page1ScrollView), tex: Ach1.aImage)) 

とtあなたがAch1aImageプロパティを変更したときに、彼

var node = generateShopItems(CGPointMake(-120, 200), 
    page:(page1ScrollView), tex: Ach1.aImage) 
Achievements.append(node) 
Ach1.node = node 

さて、ノードの質感も同様に変更する必要があります。

+0

Ach1変数を定義する際にエラーが発生するのは、SKSpriteNodeを除いて何を置くべきか分からないノードに何かを設定するように求めているからです。私はその答えを編集しました。 – Astrum

+0

@Astrumああ私はそれを忘れていました。ちょうど 'nil'を入れてください。 – Sweeper

+0

ありがとうございました。ノード変数を作成せずにそれを行う別の方法がありましたか?画像を変更するために更新機能を使用するようなのでしょうか? – Astrum

関連する問題