2009-03-15 5 views
2

스프라이트 클래스를 사용하여 몇 가지 스프라이트를 만들고 배열로로드했습니다. 내 응용 프로그램에서는 특정 조건 (위치 등)을 검사하는 배열을 반복합니다. 나는이 객체 중 하나를 전달할 수있는 폭발 방법을 만들고 포인터를 사용하여 화면상의 객체 위치를 가져 와서 폭발을 보입니다. 내 배열에있는 포인터/개체를 사용할 메서드로 전달하는 방법을 모르겠습니다. 여기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

당신은 상황이 조금 더 복잡 두 PARAMS를 들어 하나의 PARAM

// 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]; 

: 앞의 모든 것은 외부 이름으로 사용되며 이후의 모든 것은 기능 내부의 이름입니다. 당신은 종종 첫 번째 유형의 이름으로 끝나는 함수 이름 작성 오브젝티브 C의 기능을 볼 이유

입니다 "라는"할

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

스프라이트와 반경 모두 PARAMS 다음 표시를 할 때 함수가 작성됩니다.

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

왜 당신의 물건을 폭발의 수신자로 만들지 않겠습니까?

for (id currentenemy in enemies) 
{ 
    [currentenemy explode]; 
} 
관련 문제