2011-01-22 2 views
2

나는 사용자가 탭을 터치 할 때까지 버튼이 화면을 가로 질러 움직이는 게임을 만들고 있습니다. 지금까지 내가 가지고있는 것은 버튼이 무작위로 생성되는 것입니다. 내 문제는 새 단추가 만들어지고 마지막 단추가 움직이지 않을 때입니다. 나는 그들을 배열에 집어 넣으려고 노력하고 있지만, 실제로 움직이는 지 확신하지 못합니다.목표 C : 변경 가능한 배열 내에서 버튼 작동

-(void) generateStickFig:(NSTimer *)timer { 

int x = random() % 100; 
NSMutableArray *enemies = (NSMutableArray *)timer.userInfo; 
if (x == 1) { 
    stickFig = [[UIButton alloc] initWithFrame:CGRectMake(0, 650, 50, 50)]; 
    [stickFig setBackgroundColor:[UIColor blackColor]]; 
    [stickFig addTarget:self action:@selector(tapFig:) forControlEvents:UIControlEventTouchUpInside]; 
// [enemies setObject:object forKey:[NSString stringWithFormat:@"object%i",i]]; 
    [enemies addObject:stickFig]; 
    int b = [enemies count]; 
    [self.view addSubview:stickFig]; 
    arrayNum++; 
} 



CGPoint oldPosition = stickFig.center; 
stickFig.center = CGPointMake(oldPosition.x + 1 , oldPosition.y); 


} 

답변

1

버튼을 움직이는 것은 중요하지 않습니다. 애니메이션을 만드는 루틴이 필요합니다. 당신은 타이머 틱에 대한 응답으로 그것들을 조금씩 움직여 이것을 손으로 할 수 있습니다. 가장 쉬운 방법은 배열에 대한 빠른 열거입니다.

성명서에있는 생성 루틴, 이동 루틴 및 배열에서 단추를 제거하는 터치 IBAction 처리기를 사용할 수 있습니다. 생성 루틴과 이동 루틴은 모두 타이머 틱 핸들러에서 호출됩니다. 난 그냥 시스템을 제공하는 애니메이션으로 받고 있어요

//tick handler 
handleTick: 
    one out a hundred times, make a new button 
      give it a random starting location 
      store it in the buttons array 
    every time: 
    for button in buttons: 
     move button a few pixels 

//button touch handler 
buttonWasTouched:button : 
    [buttons removeObject: button]; 

, 나는 돈 때문에 :이 같은 것 높은 수준의 사이비 - 코드에서

(나는 그 방법 "handleTick"을 호출하는 경향이있다) 당신의 버튼이 움직이는 동안 터치를 받아 들일 수 있는지는 모르겠지만 놀라지 않을 것입니다.

+0

하지만 내가 가지고있는 같은 문제. 어떻게하면 별개의 단추인지 알 수 있습니다. – Chris

+0

내 편집 내용이 더 명확하게 보이는지 확인하십시오. –

-2

배열에서 감동 무슨 단추를 알고하기 위해, 당신은 버튼의 태그 옵션을 사용할 수 있습니다

- (IBAction) buttonTouched:(id) sender withEvent:(UIEvent *) event 
{ 
UIButton *btn = (UIButton *)sender; 
// in my case, I store the position on the array as a tag for the button 
NSUInteger index = btn.tag; 
UIControl *control = sender; 
// Now you know what button was touched 
// Apply actions on to it: remove from superview, animate explosion... 
} 

건배를

내가 운동을위한 초 타이머를 설정