版本:cocos2d-x 3.3final
貌似发错版了,请斑竹转到2dx版吧
把字体文件丢到resources目录下
把两个代码文件覆盖一下(重新上传了代码,但是字体太大无法上传,请自己搞一个字体吧,代码里用的xxx.ttf要对应字体文件修改一下)
直接跑起来之后关闭程序,就会闪退
错误是FontFreeType析构的时候,_fontRef会野指针
大体上是把widget做成单件,然后在appdelegate析构的时候,删除它
widget里面如果包含了ui::text并且用了字体(如果不用字体就没事),就会悲剧
无法上传附件怎么回事呢
testcode.zip (3 KB)
测试程序,随便建个demo,把代码搞到helloworld里
然后找个字体文件丢到Resources里,
加一个调用函数,在启动的时候调用test()
void HelloWorld::test()
{
TestWidget *widget = TestWidget::getInstance();
if(widget->getParent())
{
widget->removeFromParent();
}
this->addChild(widget);
widget->setPosition(Vec2(300, 300));
}
这是类定义
class TestWidget : public ui::Widget
{
public:
static TestWidget *getInstance();
static void destroy();
virtual bool init();
CREATE_FUNC(TestWidget);
static TestWidget *m_hInstance;
};
这是类实现
///////////////////////////////////
//TestWidget
TestWidget *TestWidget::m_hInstance = NULL;
TestWidget *TestWidget::getInstance()
{
if(!m_hInstance)
{
m_hInstance = TestWidget::create();
m_hInstance->retain();
}
return m_hInstance;
}
void TestWidget::destroy()
{
if(m_hInstance)
{
CC_SAFE_RELEASE_NULL(m_hInstance);
}
}
bool TestWidget::init()
{
if(!ui::Widget::init())
{
return false;
}
ui::Text *text = ui::Text::create("123", "HYShuHunJ.ttf", 30); ~!!!!!这里要修改一下字体文件
this->addChild(text);
return true;
}
AppDelegate析构里析构一下TestWidget:
AppDelegate::~AppDelegate()
{
TestWidget::destroy();
}
传授了你一个掉渣天的技能居然一句鸣谢也木有。。。T T 伤心