cocos2d-x 3.2 关闭按钮点击立马销毁自己报错

cocos2d-x 3.2 Button点击事件里调用移除当前层报错

http://www.th7.cn/program/ios/201408/271227.shtml

诡异的错误,点击关闭按钮,居然进入

void Widget::onTouchEnded(Touch *touch, Event *unusedEvent)
两次,第二次报错。

修改下这个函数:调换一下位置就行了

void Widget::releaseUpEvent()
{
    if (_touchEventListener && _touchEventSelector)
    {
        (_touchEventListener->*_touchEventSelector)(this, TOUCH_EVENT_ENDED);
    }
    if (_touchEventCallback) {
        _touchEventCallback(this, TouchEventType::ENDED);
    }
}

ShopPanel类:

#include "ShopPanel.h"
#include "ui/CocosGUI.h"
#include "Global.h"

using namespace CocosDenshion;
using namespace cocos2d;
using namespace ui;

ShopPanel::ShopPanel()
{

}
ShopPanel::~ShopPanel()
{

}
bool ShopPanel::init()
{
    if (!Node::init())
    {
        return false;
    }
    auto s = Director::getInstance()->getWinSize();
    Layout* la = static_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("ui/shopPanel.json"));
    this->addChild(la);

    closeBtn = static_cast<Button*>(Helper::seekWidgetByName(la, "closeBtn"));
    closeBtn->addTouchEventListener(CC_CALLBACK_2(ShopPanel::closeEvent, this));

    return true;
}
void ShopPanel::open(Node* parent)
{
    if (parent != nullptr && !isopen)
    {
        isopen = true;
        parent->addChild(this);
        this->setScale(0);
        ScaleTo *scale1 = ScaleTo::create(0.2f, 1.0f);
        EaseBackOut *tween = EaseBackOut::create(scale1);
        this->runAction(tween);

    }
}
void ShopPanel::close()
{
    if (isopen){
        isopen = false;
        this->removeFromParent();
    }
}
void ShopPanel::closeEvent(Ref *pSender, Widget::TouchEventType type)
{
    switch (type)
    {
    case Widget::TouchEventType::ENDED:
        this->close();
        break;
    default:
        break;
    }
}
void ShopPanel::onExit()
{
    Node::onExit();
}

调用打开函数:

void FirstScene::openShop(Ref *pSender, Widget::TouchEventType type)
{
    switch (type)
    {
    case Widget::TouchEventType::ENDED:
        ShopPanel* shop = ShopPanel::create();
        shop->open(this);
        break;
    }
}
时间: 2024-08-09 00:47:17

cocos2d-x 3.2 关闭按钮点击立马销毁自己报错的相关文章

解决实现注册功能点击注册的时候报错问题

解决办法:重新新建项目就可以了,为什么呢?下面总结会说 总结:1:我是查看我的~/.homestead下的Homestead.yaml文件才发现有ssh认证的问题,而我修改了ssh密钥,但是我的项目是之前密钥生成的项目,现在知道问题出现在哪了吧!!! 2:如果你是新建相同的项目那你最好清除下缓存,以防万一,php artisan cache:clear

Eric6 右键点击生产对话框代码报错

问题没有解决,属于菜鸟级别的孩子~~~~ 求助啊,求助!!!!!! 报告如下: Warning:An unhandled exception occurred. Please report the problemusing the error reporting dialog or via email to .A log has been written to “C:\Users\ASUS\_eric6\eric6_error.log”. Error information:——————————

vue-router点击菜单栏同一个模块报错 ———— Uncaught(in promise) NavigationDuplicated error .......

在做移动端底部导航时,鼠标双击各个选项会报如下错误,但是单击时不会出现任何问题. 出现这个bug的原因就是vue-router版本问题,vue-router 3.0版本以上的回调形式是promise api的形式,返回的是一个promise,如果没有捕获到错误,控制台始终会出现上图的警告: 解决方法之可以是安装低版本的vue-router或者捕获抛出放入错误: 解决方法大概包括以下3种解决方法: 1)删除node_modules文件夹,然后使用“cnpm install”重新安装依赖(ps:尝试

解决Ext4.2.3中propertyGrid修改后点击排序报错

Ext4.2.3中PropertyGrid修改后点击排序报错,具体错误信息如下: 一开始还怀疑是自己哪里配置错了,各种尝试结果还是一样.查遍百度和谷歌,无果,只有一篇帖子说是4.2.4修正了.还是自己动手吧,自己动手丰衣足食. 点开报错地方(如下图所示),原来是me.field.column没有定义. 然后继续找,找啊找啊找到Ext.grid.property.Grid的getCellEditor方法.此方法有参数column,可在方法体内,column就没有被用到过,于是就感觉问题出在这里.

Exchange 2010 OWA点击任何按钮报错

随着Exchange版本的发展,现在的邮件服务可以说无处不在,我们可以通过多种方式在任意地点进行邮件的收发,通过多种接入方式,如:outlook.手机.平板.网页等.越来越多的用户,特别是非IT专业的员工,喜欢使用简单方便的浏览器方式,通过Exchange 的 Outlook Web Access(Exchange 2013的OWA全称改为了Outlook Web App) 来进行接入及应用.网页版的OWA应用可以满足用户大部分的邮件功能,虽然没有Office Outlook客户端的功能那么完善

weblogic发布项目使用myeclipse正常启动,点击startWeblogic.cmd报错的解决办法

今天在做项目的时候碰到一个问题,用weblogic发布的项目,使用myeclipse能正常启动,但点击startWeblogic.cmd就会报错,提示我的一个class not found.刚开始不清楚是什么问题,后来想了想,应该是jdk版本不一致的问题.后来试了一下,还真是的.我项目中使用的jdk是本机安装的1.7的版本,而使用的weblogic10自带的jdk是1.5的版本.这样的话,使用startWeblogic.cmd启动时,默认加载的就是weblogic自带的jdk.有两种解决办法,一

Oracle Enterprise Manager 11g 输入用户名和口令 点击“登录”按键后没反应,也不报错,是什么原因?

在tnsnames.ora文件中检查设置好像没什么问题,用sqlplus也可以正常操作orcl 问题找到了,其实可简单,https://localhost:1158/em/console/logon/logon#,我用的是IE8打开这个地址,后来注意到左下角的状态栏里显示有“网页上有错误”的提示,于是改用Firefox打开,输入用户名和密码,登录就正常了.原因是IE8在解析这个页面时,部分js代码解析错误,我想这个跟微软的垄断霸王标准有关,他的很多规则不符合国际标准.所以电脑上还是多装个浏览器比

uiautomatorviewer连接机器点击报错Unexpected error while obtaining UI hierarchy

方法一: 参考:https://www.cnblogs.com/lucky0425/p/10955252.html 运行开安卓自带的uiautomatorviewer.bat,打开后连接手机,报错如下: 纠结了很长时间最终用一位大神的方法得到解决,虽然不太懂原理但是已解决了我的问题,原理以后慢慢研究 1.在E盘根目录下创建app.png文本文件 2.在E盘根目录下创建app.uix文本文件 3.执行以下adb命名: adb shell uiautomator dump /sdcard/app.u

【ImageView】ImageView点击事件报错空指针

今天在使用自定义圆形imageview的时候,想利用其点击事件来实现查看个人资料功能,但是该空间在Activity中的onCreate方法中调用点击事件总是出现空指针异常,每次程序都进不去主页面,到处查,和同学商量,还是没有解决,最后还是看到了网友的一句话: 控件A是在子布局中使用的控件,如果子布局未能成功加载,A也无法使用 意思也就是,如果 子布局在初始化界面的时候没有加载,但是你要用子布局中的控件,肯定是行不通的,所以要先在加载子布局之后实例化控件,然后定义各种操作: 下面给出我的例子: 这