2013-05-24 2 views
1
, 나는 내 프로젝트의 작동 방식이하지 못했다 구 깔끔한 그림을 만들어

데미지가 올라갔습니다. 배열에서 해당 오브젝트를 삭제하고 싶습니다! checkForDamage에서 삭제하려고 시도했지만, ccTime으로 호출되면 모든 객체가 삭제됩니다 (처음 사용시 removeObjectAtIndex:0을 사용할 때). stopCheckDamage에 넣을 수 없습니다. 첫 번째 공격의 데미지가 확인되는 동안 플레이어는 다른 폭탄을 내려 놓을 수도 있기 때문입니다.나는 내 문제를 설명하기 전에

checkForDamage은 사용자가 쳤을 때 잘 작동하며 I break;이며 stopCheckDamage를 호출합니다. 내 문제는 사용자가 히트를 치지 않을 때입니다. 존재하지 않는 스프라이트가 배열에 머물러 있기 때문입니다. 나는 내가 아는 모든 방법을 생각해 왔고 플레이어가 공격을받지 않으면 3 초 후에 특정 오브젝트를 지우는 방법을 찾지 못하는 것 같습니다.

는 또한 당신은 모든 객체의 배열을 가지고 당신이 그냥 생각입니다 here

+1

Aw 4 views 내 끔찍한 그림이 모두를 깜짝 놀라게했다. ( –

+3

아, 코드를 숨기고, 잘 했어.;) 많은 중복을 볼 수 있는데, 처음에는 그걸 정리할 수 있을까? 그리고 포맷팅도. – LearnCocos2D

+0

@ LearnCocos2D 코드를 개선하여 코드를 더욱 효율적으로 만들 수는 있지만 at 블록을 제거하면 아마 싫증나게 될 것입니다. http://pastebin.com/6mJnQJ8Y –

답변

1

찾을 수있는 관련 코드에 대한 페이스트 빈,

했다. 삭제할 항목을 알아야합니다. 그래서 각 객체에 배열에 추가되는 tag을 부여하지 마십시오. 해당 개체를 삭제하려면 태그를 테스트하고 삭제하십시오.

//Say your array has 10 objects in it, 
//There will be 10 objects each with a tag 1-10. 
//When you want to delete an object, 

편집

//Before you add each object to the array, use a `for` loop 

for (int i = 0; i < theMaxNumberOfTagsYouWant; i++) 

{ 
self.myObject.tag = i; 
[self.myArray addObject:self.myObject]; 
//This will loop thru as many times as you want, specify using the 
//maxNumberOfTagsYouWant variable. and it will give it a tag, which'll be the value of `i` 
//which gets increased for each object you insert into the array, Then when you want to  
//remove the object, use the below code to remove the object using it's tag. 
} 

-(void)deleteObjectFromArray{ 
[self.myArray removeObjectAtIndex:myObject.tag]; 
} 

희망이 조금 도움이됩니다. :)

+0

태그를 사용하는 것에 대해 생각했지만 길을 찾지 못했습니다. –

+0

내가 위에 게시했던 것처럼 그것을하십시오. 방금 내 대답을 편집했습니다 – LAMBORGHINI

+0

이 코드를 적용 할 방법을 찾을 수 없습니다. 제가 게시 한 코드 샘플을 읽었습니까? 가능한 경우이를 구현할 수있는 방법을 찾을 수 있는지 확인하십시오. :) –

관련 문제