【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

cocos2d-js 把JS错误打印到屏幕上

原创 2016年08月30日 10:29:41

在编程或者QA测试过程中,把debug的包中JS错误打印在屏幕上可以增加开发效率,降低定位bug时间成本。

修改ScriptingCore.cpp文件:

void ScriptingCore::reportError(JSContext *cx, const char *message, JSErrorReport *report)
{
    js_log("%s:%u:%s\n",
            report->filename ? report->filename : "<no filename=\"filename\">",
            (unsigned int) report->lineno,
            message);

	// xiaohei add error layer
	ScriptingCore::getInstance()->showErrorLayer();
};

void ScriptingCore::showErrorLayer()
{
	int delv = 0;
	auto isDelv = localStorageGetItem("xh_error");
	if (!isDelv.empty()) {
		delv = atoi(isDelv.c_str());
	}

	if (_js_log_buf && delv > 0) {
		auto winSize = Director::getInstance()->getWinSize();
		auto errLayer = LayerColor::create();
		errLayer->initWithColor(Color4B(0, 0, 0, 0), winSize.width, winSize.height);
		errLayer->setAnchorPoint(Point(0.5f, 0.5f));
		errLayer->setPosition(Point(0, 0));
		errLayer->setOpacity(200);
		Director::getInstance()->getRunningScene()->addChild(errLayer, 10000000, 952700);

		auto listener = EventListenerTouchOneByOne::create();
		listener->onTouchBegan = CC_CALLBACK_0(ScriptingCore::onErrorLayerTouchBegin, this);
		listener->setSwallowTouches(true);
		Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, errLayer);

		std::string errlog = _js_log_buf;
		auto errorLabel = Label::createWithTTF(errlog, "common/font/DFGB_Y7_0.ttf", 18);
		errorLabel->setColor(Color3B::WHITE);
		errorLabel->setAnchorPoint(Point(0.5f, 0.5f));
		errorLabel->setPosition(Point(winSize.width / 2.0, winSize.height / 2.0 + 150));
		errLayer->addChild(errorLabel, 10);

		std::string path = "res/ui/common/common_close.png";
		auto swapMenuItem = MenuItemImage::create(path, path, CC_CALLBACK_0(ScriptingCore::removeErrorLayer, this));
		auto swapMenu = Menu::createWithItem(swapMenuItem);
		swapMenu->setPosition(winSize.width - 100, winSize.height - 100);
		errLayer->addChild(swapMenu, 100);
	}
}

bool ScriptingCore::onErrorLayerTouchBegin()
{
	return true;
}

void ScriptingCore::removeErrorLayer()
{
	Director::getInstance()->getRunningScene()->removeChildByTag(952700);
}


重写reportError把错误展示在屏幕上,并支持关闭操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

cocos2d-js 系列[1] 屏幕的适配

屏幕的适配 与Cocos2d-js第一次亲密的接触!

Cocos2d-JS加速度计与加速度事件

在很多移动设备的游戏使用到了加速度计,Cocos2d-JS引擎提供了访问加速度计传感器的能力。本节我们首先介绍一下加速度计传感器,然后再介绍如何在Cocos2d-JS中访问加速度计。加速度计加速度计是一种能够感应设备一个方向上线性加速度的传感器。广泛用于航空、航海、宇航及武器的制导与控制中。线加速度计的种类

cocos2d-JS 监听屏幕大小改变函数

第一个 : 可以监听到safari浏览器 网址栏弹出情况window.onresize = function () { //可以监测safari浏览器 网址栏弹出情况 alert...

文章收录1

3.Hive Metastore 代码简析 <td width="760" class=

JavaScript强化教程 —— Cocos2d-JS的屏幕适配方案

1. 设置屏幕适配策略(Resolution Policy) 如果你还没有用过Resolution Policy,只需要在游戏载入过程完成之后(cc.game.onStart函数回调中),调用下面的...

cocos2d-js hello world

一. 工具准备 1. cocos2d-js 3.x 2. android ndk 3. android sdk 4. python 5. ant 二. 环境设置 1. 到cocos2d-js下执行 setup.py 2. 创建工程 //创建一个同时包含Cocos2d-html5和Cocos2d-x JSB的项目 cocos new -l js //创建一个仅包含Cocos2d-html5的项目, --no-native 表示不需要支持Native平台(IOS,Android,Mac,Windows等),只支持浏览器就可以了。 cocos new -l j

cocos2d-js 3.0 屏幕适配方案 分辨率适应

首先介绍一个api和相应的参数: cc.view.setDesignResolutionSize(1024, 768, cc.ResolutionPolicy.FIXED_WIDTH); ...

cocos2d-js 环境搭建mac

1.现在cocos-js引擎包 <a style="line-height: 1.125; font-family: 'Helvetica Neue', Helvetica, STheiti, Arial, Tahoma, 微软雅黑, sans-serif, serif; color: #0070c0; text-decoration: underline; margin: 0px 3px;" href="http://cn.cocos2d-x.org/do

深入分析Cocos2d-x 2.0中的“纹理”

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier] 红孩儿Cocos2d-X学习园地:249941957 加群写:Cocos2d-x 本章为我的<span

cocos2d-js 新手入门 2.屏幕适配

准备出系列文章,绝不是官网那种很正式的语言,还是从一个开发者角度来描述采用cocosjs所遇到的一些问题,然后怎么去解决这些问题。如果你不想对着官网那一段段的描述发呆,我觉得可以看看我所说的。
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)