2013-01-24 1 views
0

Cocos2d 신참 여기에 있습니다. 나는 스프라이트와 5 개의 버튼이 펼쳐진 게임을 만들고 있습니다. 클릭 한 방향으로 스프라이트를 옮기고 싶습니다. 그런 다음 방법Cocos2d 스프라이트 클릭 한 버튼으로 이동 하시겠습니까?

goHere1=[CCMenuItemImage itemWithNormalImage:@"goToBut.png"selectedImage:@"goToBut.png" target:self selector:@selector(imHere:)]; 
goHere1.position=ccp(70, 650); 

:

- (void) imHere:(id)sender { 
    NSLog(@"I'm Here"); 
    [mole runAction:[CCMoveTo actionWithDuration:1.5 position:????????)]]; 
} 

답변

0

당신이 트리거되는 CCMenuItemImage에 액세스 할 수 있습니다 CCMenuItemImage의 선택 조치로 전달하는 방법을 내 초기화에서

: 나는 다음과 같은 코드가 있습니다 sender 메소드 매개 변수 사용 따라서 당신은 내가이 당신을 도울 것입니다 희망이 코드

-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event 
{ 
CGPoint touchLocation=[touch locationInView:[touch view]]; 
touchLocation=[[CCDirector sharedDirector] convertToGL:touchLocation]; 
touchLocation=[self convertToNodeSpace:touchLocation]; 

self.moveaction=[CCSequence actions:[CCMoveTo actionWithDuration:0.5f position:touchLocation],[CCCallFunc actionWithTarget:self selector:@selector(moveend)],nil]; 
[sprite runAction:moveaction]; 
} 

을 시도 ((CCMenuItemImage*)sender).position (A CCMenuItemImage 첫째로 sender 변수를 캐스팅 필요)를 사용하여 위치

- (void) imHere:(id)sender { 
    NSLog(@"I'm Here"); 
    [mole runAction:[CCMoveTo actionWithDuration:1.5 position:((CCMenuItemImage*)sender).position]]; 
} 
+0

그러나 나는 다음과 같은 오류가 : – Figgy

+0

"유형 'ID'의 개체에없는 속성 '위치' '은'* CCMenuItemImage'에 sender' 캐스트'(편집) – Lukman

+0

그것은 일 ...정말 고맙습니다!!!!!! – Figgy

0

알고 있듯이 moveTo 메서드를 사용하여 스프라이트를 애니메이션화하면 안됩니다. 'moveto'를 사용할 때 움직임이 부드럽지 않다는 것을 알지 못했습니까?

나는 이런 방식으로, 아마도 완벽하지는 않을 것이다.

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch *myTouch = [touches anyObject]; 
    CGPoint location = [zoombase convertTouchToNodeSpace:myTouch]; 
    self.destinationLocation = loaction; 
} 
-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *myTouch = [touches anyObject]; 
    CGPoint location = [zoombase convertTouchToNodeSpace:myTouch]; 
    self.destinationLocation = loaction; 
} 

-(void)update:(ccTime)dt { 

    //that will do until your sprite reach you destination point 
    if(!CGPointEqualToPoint(self.spriteToMove,self.destinationLocation)) { 
     CGPoint *stepToMove = ccp(0.2/destinationLocation,0.2/destinationLocation); //some piece of orginal destination 
     [self.spriteToMove setPosition:ccpAdd(stepToMove,self.spriteToMove.position)]; // add that pice to your sprite current location 
    } 
} 
나도 그 생각