2016-04-29 10 views
0

makeBackgroundという関数を持つGameSceneというクラスがあります。私はそれのインスタンス(GameScene)を作成し、新しいクラスのdidMoveToViewに次のようにmakeBackgroundと呼ばれると呼ばれる別のクラスでは:別のクラスの関数へのアクセス

var gameSceneInstance:GameScene = GameScene() 
gameSceneInstance.makeBackground() 

しかし、私はそれを実行すると、何も起こりません!

これは、関数makeBackgroundです:

func makeBackground() 
    { 
     let bgTxt  = SKTexture(imageNamed: "bg.png") 
     let moveBg  = SKAction.moveByX(0, y: -bgTxt.size().height, duration: 5) 
     let replaceBg = SKAction.moveByX(0, y: bgTxt.size().height, duration: 0) 
     let moveBgAnimation = SKAction.repeatActionForever(SKAction.sequence([moveBg, replaceBg])) 

     //-----background----- 
     for var i:CGFloat = 0 ; i<3; i++ 
     { 
      bg = SKSpriteNode(texture: bgTxt) 
      bg.position = CGPoint(x: CGRectGetMidX(self.frame), y: bgTxt.size().height/2 + bgTxt.size().height * i) 
      bg.size.width = self.frame.width 
      bg.runAction(moveBgAnimation) 

      movingObjects.addChild(bg) 
     } 
    } 

は、私はそれを動作させるために、新しいクラスにmakeBackground機能をコピー&ペーストする必要がありますか?

同様に、GameSceneクラスのdidMoveToViewには、いくつかのスプライトがあります。この新しいクラスで使用できますか?

ありがとうございます!

+0

私は何かが起こることを確信しています。メソッドが呼び出され、実行されます。いくつかの些細な間違いがあります。 'GameScene'はSKViewですか?これを階層に追加しましたか? – Sulthan

答えて

0

GameSceneオブジェクトのインスタンスを作成してmakeBackground関数を呼び出したときに何も起こらなかった場合、makeBackground関数にコードに問題があります。

また、別のトピックでは、クラス内で作成されたインスタンスオブジェクトは互いに等号であり、特に渡されない限り他のメソッド内では使用できません。おそらく、GameScenオブジェクト内で、スプライトのリストまたは個々のスプライトとしてこれらのスプライトを渡すことができます

+0

makeBackground関数に何か問題があった場合は、GameSceneクラスで正しく動作しませんか?しかし、それはそこで完璧に動作します。 – user3369038

+0

私はGameSceneを静的クラスまたはインスタンス化クラスと完全に混同していますか?内部的にどこに呼び出されていますか?また、インスタンスオブジェクトを作成した他のクラスで定義されていないmakeBackgroundが呼び出されている場所で、clas内に定義されているビューポートなどの出力デバイスがありますか? –

関連する問題