2009-03-15 5 views
2

私はスプライトクラスを使用していくつかのスプライトを作成し、それらを配列にロードしました。私のアプリでは、特定の条件(位置など)をチェックしながら配列をループします。私は、これらのオブジェクトの1つを渡すことができる爆発メソッドを作成し、ポインタを使用して、画面上のオブジェクトの位置を引っ張り、そこで爆発を表示したいと思います。私はどのように使用するメソッドに私の配列にあるポインタ/オブジェクトを渡すか分からない。ここでオブジェクトを指すObjective-Cのメソッド

は、私が考えていたもの、本質的である:

for (int i=1; i<4; i++) { 

    EnemySprite *currentenemy = [enemies objectAtIndex:i-1]; 

    //Blow this guy up 
    [self explosion:currentenemy] 
} 


-(void)explosion someobject { 

    explosion.position = someobject.position 

    someobject.setHidden=YES; 

} 

答えて

3

あなたは1つのparam物事はもう少し関与している2つのparamsのために

// definition 
-(void) explosion:(EnemySprite*) someObject 
{ 

} 

// usage 
[self explosion: object]; 

のために、このようにそれを記述します。検討してください。

// definition 
-(void) explosion:(EnemySprite*) someObject radius:(float)explosionRadius 
{ 
    ... 
    if (pos < explosionRadius) 
    ... 
} 

// usage 
[self explosion: object radius:10.0f]; 

:の前にあるすべては外部名に使用され、すべてが関数の内部名です。

あなたは多くの場合、最初のタイプの名前で終わる関数名で書かれたObjective-Cの機能が表示されます理由です:

-(void) explodeSprite:(EnemySprite*) sprite radius:(float)radius; 

スプライトと半径のparamsの両方が続いたときに、「命名」しているように見えます関数が書き込まれます。

[self explodeSprite:sprite radius:10.0f]; 
0

なぜあなたのオブジェクトを爆発の受信機にしないのですか?

for (id currentenemy in enemies) 
{ 
    [currentenemy explode]; 
} 
関連する問題