【cocos2dx】如何创建自己定义的精灵类Sprite

前端之家收集整理的这篇文章主要介绍了【cocos2dx】如何创建自己定义的精灵类Sprite前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


C++的知识的确不用都忘了。


写德州扑克想要写一个扑克类Card,继承自Spirite,并且额外添加些自己的属性,比如说牌面大小及花色。那么我在card.h中定义这个类。并且重载Sprite::create(filename)方法


  1. //Card.h
  2.  
  3. #pragma once
  4.  
  5. #include "cocos2d.h"
  6. #include "define.h"
  7.  
  8. USING_NS_CC;
  9. /*
  10. we name the card such as "card_clubs_2.png"
  11.  
  12. Clubs = 1,1 ~ 13
  13. Diamonds,2 14~ 26
  14. Hearts,3 27~ 39
  15. Spades,4 40~ 52
  16.  
  17. we get a random number from 0 ~ 47 as num,we rename the pic_name as a number;
  18.  
  19. */
  20. class Card :public Sprite
  21. {
  22. public:
  23.  
  24. static Card* create(const char*);//重载
  25.  
  26. void setCardID(int);
  27. void setCardName(char *);
  28. void setCardFace(int);
  29. void setCardSuit(int);
  30.  
  31. int getCardID();
  32. int getCardFace();
  33. int getCardSuit();
  34. char * getCardName();
  35. private:
  36. int cardID; // 0~51
  37. char * cardName;
  38. int cardFace; //2 ~ 14
  39. int cardSuit; //0~3
  40. };

是如何重载create(filename)方法的呢?
  1. Card * Card::create(const char* picFileName){
  2. Card * sprite = new Card();
  3.  
  4. if (sprite&& sprite->initWithFile(picFileName))
  5.  
  6. {
  7. sprite->autorelease(); return sprite;
  8. }
  9.  
  10. CC_SAFE_DELETE(sprite);
  11. return nullptr;
  12.  
  13. }


代码中使用Card类,创建对象。并在CCLOG中调试,得到log

  1. auto my_testCard = Card::create("roomgirl.png"); // auto == Card
  2. my_testCard->setPosition(screenSize.width / 2,screenSize.height - 200);
  3. my_testCard->setScale(0.6);
  4. my_testCard->setCardID(23);
  5. this->addChild(my_testCard);
  6. CCLOG("my_testCard->ID = %d .",my_testCard->getCardID());//会得到log:my_testCard->ID = 23 .


参考文章http://blog.csdn.net/fanzhang1990/article/details/40328297 文章提供了2种方法,并且对原理进行了详细的分析)

猜你在找的Cocos2d-x相关文章