void LoginLayer::login(Ref* pSender,ui::TouchEventType type){
if(type == TouchEventType::TOUCH_EVENT_ENDED){
CCLOG("LOGIN NEXT");
std::string username_str = username->getText();
std::string password_str = password->getText();
CCLOG("%s",username_str.c_str());
!FLPU3.jpg)
!FLPU3.jpg)
!FLPU3.jpg)
!FLPU3.jpg)
!FLPU3.jpg)
!FLPU3.jpg)
!FLPU3.jpg)
LoginService* service = LoginService::getInstance();
service->checkUserLogin(username_str,password_str,=](bool result){
Director::getInstance()->replaceScene(MainScene::create());
});
}
}
```
这个函数主要是负责登录功能的,service->checkUerLogin除了传递账号密码之外,还传入一个回调函数,用于当验证完时调用
问题来了,我在这个回调函数里面写什么都可以成功调用,唯独调用replaceScene时会出现错误,
MainLayer的init函数是通过GUIReader从json文件中读入一个Widget再addChild
debug一下,发现能够进入MainLayer的init函数,但是到了GUIReader::widgetFromJsonFile的时候就中断了,到最后发现
!FLPU3.jpg)
!FLPU3.jpg)
void Sprite::setTexture(const std::string &filename)
{
Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(filename);
setTexture(texture);
Rect rect = Rect::ZERO;
rect.size = texture->getContentSize();
setTextureRect(rect);
}
这里找不到对应的texture然后setTexture的时候出错
问题是:
1。如果我调用的另一个不是用Cocostudio配置的Scene时(就是没有通过GUIReader去加载JSON文件) 却成功跳转了。。。
2。不把replaceScene的调用放在回调函数里面去跳转时可以的,证明我MainScene本身没有问题
3。综上,我个人觉得要么是GUIReader有点问题,要么就是我利用回调函数去跳转这种思路有问题。
求大神指导
C++11的语法真的好吊。。。