0
我有一個類,cocos2d-x是否強制多重繼承?
class Ticket : public cocos2d::CCNode, public cocos2d::CCTargetedTouchDelegate { ... };
當我註冊觸摸事件的節點上使用的正常工作:
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(ticket_, 0, true);
但是,如果我改變我的課,以便它使用組成,而不是繼承爲CCNode位:
class Ticket : public cocos2d::CCTargetedTouchDelegate {
private:
cocos2d::CCNode* node_;
public:
Ticket() { node_ = new CCNode(); node_->init(); }
cocos2d::CCNode* node() { return node_; }
...
};
然後將以下的打擊了一個SIGSEGV 11:
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(ticket_, 0, true);
我已經添加票_-> node()到當前層,但我想知道如果觸摸調度器不知道如何不喜歡節點和委託是不同的東西。或者換句話說,觸摸調度程序期望節點和代表是同一件事情嗎?
因此,簡而言之,我的代碼在使用多重繼承時起作用,但在使用組合時不會發生。沒有深入研究框架,誰能說這是真的,還是我錯過了一些明顯的東西?我正在使用cocos2d-2.1rc0-x-2.1.2
至少在cocos2d-iphone中,touch調度程序與非節點類一起工作。 – LearnCocos2D 2013-05-04 22:32:50