lua开发/ 腾讯 Bugly / 截屏 / 遮罩

腾讯 Bugly<是个SDK>,是腾讯公司为移动开发者开放的服务之一,面向移动开发者提供专业的 Crash 监控、崩溃分析等质量跟踪服

类似小程序数据分析的SDK阿拉丁,只不过是分析闪退,异常的


lua 中的assert 与loadstring 问题
在这里插入图片描述

删除元素方式:(下标变化)
 tab[i] = nil  
 table.remove(tab, i) 

--------------------------- tolua 一些可以用的函数
tolua 提供几个 C++ 与 Lua 进行数据交换的工具函数
在这里插入图片描述

在这里插入图片描述


黑科技原理:为啥require类。修改函数…<package.loaded>
常见lua报错类型https://blog.csdn.net/yuanfengyun/article/details/78001988

-------参考热更
包内资源、本地缓存资源和临时资源
在开发者的游戏安装到用户的手机上时,它的游戏是以 .ipa(iOS)或者 .apk(Android)形式存在的,这种应用包在安装后,它的内容是无法被修改或者添加的,应用包内的任何资源都会一直存在。所以热更新机制中,我们只能更新本地缓存到手机的可写目录下(应用存储空间或者 SD 卡指定目录),并通过 FileUtils 的搜索路径机制完成本地缓存对包内资源的覆盖。同时为了保障更新的可靠性,我们在更新过程中会首先将新版本资源放到一个临时文件夹中,只有当本次更新正常完成,才会替换到本地缓存文件夹内。如果中途中断更新或者更新失败,此时的失败版本都不会污染现有的本地缓存。这一步骤在上一章节的流程图中有详细介绍:
在这里插入图片描述
在长期多次添加链接描述更新的情况下,本地缓存会一直被替换为最新的版本,而应用包只有等到用户在应用商店中更新到新版本才会被修改。

------遮罩------------------参考文章—https://blog.csdn.net/while0/article/details/43850749(写的好)
在这里插入图片描述

如新手引导制作
在这里插入图片描述
1、原理

ClippingNode(裁剪节点)可以用来对节点进行裁剪。ClippingNode是Node的子类,可以像普通节点一样放入Layer,Scene,Node中。

主要是根据一个模板(Stencil)切割图片的节点,生成任何形状的节点显示。

ClippingNode是利用模板遮罩来完成对Node区域裁剪的技术。

------------------------------------------------------------------截屏
1 scrollview截屏如何截取缩率图 ? <把node用指定正交相机渲染>
2 截屏后为什么右边是空白的 ? <因为cocosstudio中裁剪未勾选>
在这里插入图片描述
3 普通截图用官方3.2版本提供的cc.utils:captureScreen与cc.RenderTexture等效

子龙山人引擎元老16-05-3
@rabeechen
你要截的屏幕中含有 ClippingNode 或者 ScrollView, ListView 等控件?
需要在创建 RenderTexture的时候指定 stencil
(var tex = new cc.RenderTexture(winSize.width, winSize.height, cc.Texture2D.PIXEL_FORMAT_RGBA8888, gl.DEPTH24_STENCIL8_OES);)
function TeamPictureScrollView:_drawTeamPicture(rect)
	self._camera = cc.Camera:createOrthographic(1136, 640, 0, 1)
    self._camera:setCameraFlag(cc.CameraFlag.DEFAULT)
    self._scroll:addChild(self._camera)
	self._scroll:setCameraMask(1)

	-- self._rt = cc.RenderTexture:create(rect.width, rect.height, cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888, 0x88F0)
	-- self._rt = cc.RenderTexture:create(rect.width, rect.height, cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888, gl.DEPTH24_STENCIL8_OES)
	-- self._rt = cc.RenderTexture:create(rect.width, rect.height, cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888, gl.DEPTH24_STENCIL8_OES)
	self._rt = cc.RenderTexture:create(rect.width, rect.height)
    self._rt:beginWithClear(0, 0, 0, 0)
    self._scroll:visit()
    self._rt:endToLua()
	self._rt:retain()
	
	local texture = self._rt:getSprite():getTexture()
    self._spr = cc.Sprite:createWithTexture(texture)
    -- self._spr:setAnchorPoint(0.5, 0.5)
    self._spr:setAnchorPoint(0, 0.5)
    self._spr:setFlippedY(true)
    self._spr:setScale(0.3)
    -- self._spr:setScale(0.24)
    -- self._spr:setPosition(1136 / 2, 640 / 2)
    self._spr:setPosition(0, 640 / 2)

    self:_performWithDelay(function()
        self._camera:removeFromParent(true)
        label:removeFromParent(true)
	end, 0.1)
	
	return self._spr
end

-----------

--人物面板点击     <截图解释:为什么要判断偏移量>
function GuildDungeonMonsterNode:_onPanelClick(sender)
	local offsetX = math.abs(sender:getTouchEndPosition().x - sender:getTouchBeganPosition().x)
	local offsetY = math.abs(sender:getTouchEndPosition().y - sender:getTouchBeganPosition().y)
	if offsetX < 20 and offsetY < 20  then
		self:showStageDetail()
	end
end

在这里插入图片描述
------------------bugly 异常处理: 定位错 死活不回
分析:不是回调函数"_onClick"空, 是temView回调函数中存在空(已走到TeamView 不在TeamHeroPageItem类)
在这里插入图片描述
bug:已判空why还报错 ?不会处理…求助…
在这里插入图片描述
bug:调用堆栈, 上层上层函数(不是当前类or上层类)
在这里插入图片描述

--------------------基本知识
C语言:指针传递、引用传递、 值传递(实参 形参不同内存)
lua pytho js C#:引用类型(内存在栈) 值类型(内存分配在堆)

void swap(int a, int b)
void swap(int *a, int *b)
void swap(int &a, int &b)

猜你喜欢

转载自blog.csdn.net/u013321328/article/details/108593251