C++的知识的确不用都忘了。
写德州扑克想要写一个扑克类Card,继承自Spirite,并且额外添加些自己的属性,比如说牌面大小及花色。那么我在card.h中定义这个类。并且重载Sprite::create(filename)方法。
//Card.h
#pragma once
#include "cocos2d.h"
#include "define.h"
USING_NS_CC;
/*
we name the card such as "card_clubs_2.png"
Clubs = 1, 1 ~ 13
Diamonds,2 14~ 26
Hearts, 3 27~ 39
Spades, 4 40~ 52
we get a random number from 0 ~ 47 as num, we rename the pic_name as a number;
*/
class Card :public Sprite
{
public:
static Card* create(const char*);//重载
void setCardID(int);
void setCardName(char *);
void setCardFace(int);
void setCardSuit(int);
int getCardID();
int getCardFace();
int getCardSuit();
char * getCardName();
private:
int cardID; // 0~51
char * cardName;
int cardFace; //2 ~ 14
int cardSuit; //0~3
};
是如何重载create(filename)方法的呢?
Card * Card::create(const char* picFileName){
Card * sprite = new Card();
if (sprite&& sprite->initWithFile(picFileName))
{
sprite->autorelease(); return sprite;
}
CC_SAFE_DELETE(sprite);
return nullptr;
}
在代码中使用Card类,创建对象。并在CCLOG中调试,得到log
auto my_testCard = Card::create("roomgirl.png"); // auto == Card
my_testCard->setPosition(screenSize.width / 2, screenSize.height - 200);
my_testCard->setScale(0.6);
my_testCard->setCardID(23);
this->addChild(my_testCard);
CCLOG("my_testCard->ID = %d .", my_testCard->getCardID());//会得到log:my_testCard->ID = 23 .
参考文章: http://blog.csdn.net/fanzhang1990/article/details/40328297 (文章提供了2种方法,并且对原理进行了详细的分析)
8191

被折叠的 条评论
为什么被折叠?



