2017-02-18 14 views
0

カードIのどのオブジェクトがタッチされたかを検出したい。カードは、ココススプライトを拡張するカスタムクラスです。タッチした拡張スプライトiの検出

カード上にメンバーメソッドを呼びたいと思います。このようなもの:if(target = Card)target.openCard();

は事前にありがとうございました。私にはC++のようには見えません

メイン・クラスのボディ

bool HelloWorld::init()  
{ 

... some init code, generating card arrays, shuffling 

// draw memory cards 
int count = 0; 

for (int i = 0; i < 5; i++) 
{ 
    for (int j = 0; j < 4; j++) 
    { 
     auto card = Card::createCard(); 
     card->customInit(cardsPictures[count]); 
     this->addChild(card); 

     card->setPosition(100 + i*100, 600 - j*100); 

     count++; 
    } 

} 

// register event listener 
auto touchListener = EventListenerTouchOneByOne::create(); 

touchListener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this); 
touchListener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this); 
touchListener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved, this); 
touchListener->onTouchCancelled = CC_CALLBACK_2(HelloWorld::onTouchCancelled, this); 

_eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this); 

return true; 
} 

bool HelloWorld::onTouchBegan(Touch* touch, Event* event) 
{ 
    auto target = event->getCurrentTarget(); 

    if (target is Card) target.openCard(); // not working 

    return true; 
} 

答えて

0
(target is Card) 

。それは何ですか ? :D

最初に: ターゲットはポインターですか?もしそう:

target->openCard(); // instead of target.openCard(); 

をとにかく、あなたはタイプのカードであるあなたが特定されているオブジェクトのメソッドを呼び出したい場合は、おそらくあなたは実行する必要があります。

Card* myCard = static_cast<Card*>(target); 
myCard->openCard(); 

を正直に言うと、あなたがない限り、実際のポスト関連するコードは誰でもあなたを助けることが難しいでしょう。カードはどのように見えますか? (私は気にしない!XD)

関連する問題