2015-01-20 2 views
1

Мне нужно разместить функциональность, где CCButton можно перетащить в нужное положение, где бы пользователю не было нужды размещать их.CCButton не работает, пока touchMoved реализован

У меня есть пользовательский класс для этого, но проблема click Метод кнопки не вызывается, когда пользователь нажимает на кнопку.

touchyButton.h

#import "cocos2d.h" 
#import "cocos2d-ui.h" 

@interface touchyButton : CCButton { ... } 
@property (nonatomic, assign) BOOL touchMoved; 
@end 

touchyButton.m

#import "touchyButton.h" 


@implementation touchyButton 

- (void) touchMoved:(UITouch *)touch withEvent:(UIEvent *)event { 
    NSLog(@"touchMoved...", nil); 
    self.touchMoved = YES; 
    self.anchorPoint = ccp(0.5, 0.5); 
    CGPoint touchLoc = [touch locationInNode:self.parent]; 
    //CGPoint inTouchLoc = [self convertToNodeSpace:self.anchorPoint]; 
    //CGPoint touchP = ccpAdd(touchLoc, inTouchLoc); 
    //self.position = [self.parent convertToNodeSpace: touchP]; 
    self.position = touchLoc; 
} 

- (void) touchEnded:(UITouch *)touch withEvent:(UIEvent *)event { 
    self.touchMoved = NO; 
    NSLog(@"touchEnded...", nil); 
} 

@end 

Как объясняет код, мы просто пытаемся переместить кнопку, где на экране, когда пользователь перетаскивает на кнопку.

Вызов кнопки в главном коде, где она должна отображаться.

 touchyButton *btnRight = [touchyButton buttonWithTitle: @"" spriteFrame:[[CCSprite spriteWithImageNamed: @"arrR.png"] spriteFrame]]; 
     [btnRight setBackgroundOpacity:0.5f forState: CCControlStateNormal]; 
     [btnRight setAnchorPoint: ccp(1, 0.5)]; 
     [btnRight setPosition: ccp(viewS.width - 10.f, viewS.height/2)]; 
     [self addChild: btnRight]; 
     [btnRight setTarget:self selector: @selector(performRightJump:)]; 

Теперь, когда пользователь нажимает на кнопку, кнопка переходит в выбранное состояние, но performRightJump никогда не срабатывает. Может ли кто-нибудь предложить любую альтернативу, как я могу реализовать кнопку с перетаскиванием поведения с целевым действием? Любой намек был бы оценен также.

Еще одна вещь: в текущем коде я могу только перенести опорную точку кнопки в новую точку касания. Любая идея, как я могу переместить кнопку в реальном режиме? Текущий метод вызывает проблему нажатия первого раза для перемещения, нажатия кнопки привязки точки на точку переключения.

+0

Я не могу решить эту проблему, и мне нужно закрыть вопрос. –

+0

Невозможно решить проблему и оставить ее разработку. –

ответ

1

этот код cocos2dx, но полезный для вас

создать новый класс CLASSA и ClassB

добавить этот код classA.h

{ 
//here implement 
CC_SYNTHESIZE_RETAIN(classB *, _ classB, _ ClassB); 
} 

classA.cpp

bool classA::init() 
{ 
set_classB(classB::initwithclass()); 
    this->addChild(get_ClassB(),0); 


//here create button 
    return true; 


} 
bool classA:: onTouchBegan (Touch *touch ,Event *event) 
{ 

_classB->setposition(touchLoc); 
    return true; 
} 
void classA:: onTouchMoved(Touch *touch, Event *event) 
{ 
} 
void classA:: onTouchEnded(Touch *touch ,Event *event) 
{ 


} 
//as well as this code use in cocos2d 
+0

Я попробую код на этой неделе и дам вам знать ответ. Вы не дали никаких разъяснений для классов A и класса B. Класс A должен быть CCButton? И что должно быть в классе B? Кстати спасибо за ваш ответ. –

+0

classA-реализация CCButton и classB - это перемещаемый класс, вы меняете позицию класса в соответствии с касанием. –

+0

@ Himandhu-kalal: спасибо Himanshu. Я проведу это на этой неделе и дам вам знать. –

Смежные вопросы