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种方法,并且对原理进行了详细的分析)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。