Когда вы вызываете Button::create, он фактически ссылается на метод create в CCMenuItemImage, поэтому вы получаете обратно CCMenuItemImage (а не кнопку).
Вам нужно будет создать статический метод создания в вашем классе кнопок. Вы все еще можете ссылаться на инициализаторы в своем суперклассе, так что это должно быть довольно просто. Итак, в вашем методе создания класса Button сделайте что-то вроде:
Button* Button::create(const char* normalImg, const char* selectedImg) {
Button *button = new Button ();
if (button && button->CCMenuItemImage::initWithNormalImage(normalImg, selectedImg, NULL, NULL, NULL) {
button->autorelease ();
return button;
} else {
delete button;
button = NULL;
return NULL;
}
}
(Отказ от ответственности: я на самом деле не тестировал это, просто немного кода здесь.)
Если вы используете этот метод создания, он вернет объект Button, а это именно то, что вы ищете.
Инициализатор, который вы ищете, это:
bool CCMenuItemImage::initWithNormalImage(const char *normalImage, const char *selectedImage, const char *disabledImage, CCObject* target, SEL_MenuHandler selector);
Возможно, вы захотите, чтобы ваш конструктор создания для вашего класса Button вмещал больше значений инициализатора CCMenuItemImage. Вам решать.
Проследите файл CCMenuItem.cpp; сам CCMenuItemImage является подклассом CCMenuItem, так что это должно дать вам довольно сильную точку отсчета того, как все это должно быть настроено. (И CCMenuItem, и CCMenuItemImage определены в файлах CCMenuItem.cpp/.h.)
Надеюсь это поможет!!
person
So Much Drama Studios
schedule
07.12.2012