自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 多边形碰撞检测(判断点在多边形内)

点与规则的矩形或者等边、等腰三角形等的碰撞检测很简单,本文主要是介绍“点与多边不规则图形的碰撞检测”。如图,这个多边形已经相当复杂,包含凸和凹,该如何解决呢?结论:使用交点数判断。即从碰撞点发射出一条水平射线,计算这条射线和多边形的交点数,如果是奇数说明点在多边形内部,反之则在外部。代码如下:/** * JS 代码 * 判断点是否在多边形内 * 求解通过该点的水平线与多边形...

2019-09-23 10:58:12 1602 2

原创 Unity3D SmoothDamp函数实现原理

// current: 当前的位置// target: 我们试图接近的位置// currentVelocity: 当前速度,这个值由你每次调用这个函数时被修改// smoothTime: 到达目标的大约时间,较小的值将快速到达目标// maxSpeed: 选择允许你限制的最大速度// deltaTime: 自上次调用这个函数的时间。默认为 Time.deltaTimep...

2019-09-02 21:46:56 2453

原创 Unity3D中Vector3.SmoothDamp原理,适用于CocosCreate、LayaBox等引擎

写在最前:本文已将Unity3D中的Vector3.SmoothDamp翻译为CocosCreate(TS语言)版本,并将三维向量更改为二维,三维运算方式相同。private _currentVelocity : cc.Vec2 = new cc.Vec2(0, 0);private doSmoothDamp(){ let nowTime = new Date().getTi...

2019-09-02 21:44:50 3743

原创 Lua热更原理以及加载规则

要实现Lua的热更新,首先要了解Lua的模块加载机制,热更新的核心就是替换package.loaded中的模块。加载规则:包管理库提供了从Lua中加载模块的基础库。只有一个导出函数直接放在全局环境中:require。所有其他的部分都导出在表package中。require(modname)查询全局缓存表package.loaded:这个函数首先查找package.loaded表,...

2019-08-29 19:54:28 2185

原创 JS问题整理

JS中迭代器和生成器for..in迭代的是对象的键的列表,而for..of则迭代对象的键对应的值。JS中的闭包https://www.jianshu.com/p/26c81fde22fbJS中的事件循环机制https://blog.csdn.net/qq_39207948/article/details/81671304JS promisehttps://www.c...

2019-08-28 16:36:51 92

转载 一套图 搞懂“时间复杂度”

时间复杂度的意义究竟什么是时间复杂度呢?让我们来想象一个场景:某一天,小灰和大黄同时加入了一个公司......一天过后,小灰和大黄各自交付了代码,两端代码实现的功能都差不多。大黄的代码运行一次要花100毫秒,内存占用5MB。小灰的代码运行一次要花100秒,内存占用500MB。于是......由此可见,衡量代码的好坏,包括两个非常重要的...

2019-03-07 14:04:49 234

转载 GooglePlay各种权限AndroidManifest.xml权限配置及说明

问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 获取精确位置 android.p...

2018-11-30 10:26:54 7080

原创 Lua 二分法查找

-- 二分法查找function ClientTestPage:binarySearch( value, t ) local d = {} -- 默认数组,请使用(t),请注意数组必须为有序数组,不支持hash表查询 for i = 1, 100 do d[i] = i end local minIndex = 1 -- 数组最小下标,lu...

2018-11-26 18:02:52 1613

转载 【转载】Lua中实现类的原理

原文地址http://wuzhiwei.net/lua_make_class/不错,将metatable讲的很透彻,我终于懂了。------------------------------------------------------------Lua中没有类的概念,但我们可以利用Lua本身的语言特性来实现类。下文将详细的解释在Lua中实现类的原理,涉及到的细节点将拆分出...

2018-11-26 16:23:12 190

原创 Error:Compilation failed; see the compiler error output for details.

我就是借鉴他找错的经历找到错误的在命令行中进入项目的根目录,或者可以在Android studio的Terminal中直接操作也可以,然后敲入一个命令: gradlew compileDebug --stacktrace 就可以输出较详细的信息,然后根据命令行给出的提示,还可以在后面加上-info或者-debug的选项得到更详细的信息,于是这个命令可以这样写:gradlew ...

2018-08-30 16:31:18 1154

转载 C++ Vector 删除符合条件的元素

C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换。1.std::vector::erase()  函数原型:iterator erase (iterator position);  //删除指定元素       iterator ...

2018-08-06 10:25:35 994

原创 Lua 中,将全局函数声明为local的优缺点

在openresty框架下面进行开发,lua语言的技巧 1.如果是一些经常用到的全局函数,可以申明为local局部变量,这样可以提升效率。 例如ipairs,pairs申明成local的,原因是local变量是存放在lua的堆栈里面的是array操作,而全局变量是存放在_G中的table中,效率不及堆栈 如果被多次执行调用的全局变量,就需要考虑用local来申明 2.loadfile()只会

2017-11-13 12:03:50 9618

原创 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-11-13 12:01:56 148

原创 lua 小技巧

lua 小技巧把常用的工具函数添加到 _G 里面,所有的文件都可以直接调用:-- 在 a 文件中将工具函数添加到 _G:_G.IsEmptyStr = function(str) return str==nil or type(str) ~= "string" or str == "" end _G.PrintObjPos = function(prefix,

2017-11-13 11:57:42 427 1

原创 Lua格式化字符串中的空格

[plain] view plain copy函数传入字符串,根据正则去掉字符串两侧的空格  [plain] view plain copy-- 去除字符串两边的空格  function trim(s)       return (string.gsub(s, "^%s*(.-)%s*$

2017-11-13 11:56:55 2207 1

原创 关于Cocos2d-x使用webView加载html视频问题

先来说下现象吧。三部测试手机    1号 Note2  N7100   Android系统版本4.3          2号 三星9100    Android系统版本4.0.3     3号 HTC Desire  Android系统版本 2.3.5  注意2.3.5系统没有强制GPU渲染选项测试1  首先工程内Manifest.xml文件其中

2017-05-07 15:13:08 1496

转载 Lua 深入浅出 遍历

当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是:for key, value in pairs(tbtest) do   XXX  end  for key, value in ipairs(tbtest) do   XXX  end  for i=1, #(tbtest) do      

2017-04-06 17:26:10 219

转载 游戏引擎Unity中的单线程与多线程

由 peter dong 于 星期五, 2017-01-13 10:55 发表因为工作的原因,第一次接触到Unity3D游戏引擎,开拓了眼界,学到不少新知识。今天与大家聊一聊我觉得在Unity3D中最基础也是最重要的概念:Unity3D的单线程与多线程。最近项目中,有一个网络操作的小需求,我按照其他移动端的研发经验,使用Unity的网络库Unit

2017-03-21 20:34:00 4098 1

翻译 cocos2dx 错误笔记01

错误笔记1在添加新的层在原背景上面时候(模态窗口),在cocosbuilder中 应该新建为node格式 而不是layer 否则 会弹出 CCNodeLoaderMap::iterator ccNodeLoadersIterator =this->mCCNodeLoaders.find(pClassName); assert(ccNodeLoadersIterato

2017-03-10 11:12:21 310

转载 适合C\C++程序员的书籍

http://blog.csdn.net/walkinginthewind/article/details/13000431找工作是一个长期准备的过程,突击是没什么效果的。准备时间越长,准备就越充分,就越容易拿到好的offer。我基本上从研究生一入学就一直在准备找工作的东西,看书、研究研究笔试面试题、在线编程训练、参加实习招聘等等。当然,其实主要还是研二开始准备的,也算不上多认真,反正

2017-03-09 19:57:45 323

转载 Unity 3D引擎:十大最火的插件推荐

作为当前最主流的3D游戏引擎之一,Unity拥有大量第三方插件和工具帮助开发者提升工作效率。我们摘选了十款最受欢迎的工具推荐给大家,类别包括2D开发、UI设计、原型制作、着色、特效等,涉及了游戏开发最主要的十个方面。1. 2D Toolkit如果过去你一直从事3D游戏开发,最近想转做2D游戏,最好尝试一下2D Toolkit。2D Toolkit是一款2D开发组件,它具有很强的

2017-03-08 14:31:39 659

原创 cocos2d.x getVisibleSize 和 getContentSize 和 getWinSize 区别

getVisibleSize:获得视口(可视区域)的大小,若是DesignResolutionSize跟屏幕尺寸一样大,则getVisibleSize便是getWinSize。getVisibleOrigin:获得可视区域的出发点坐标,在处理相对位置时,确保节点在不同分辨率下的位置一致。在cocos2d-x里CCNode对象有缩放的方法setScaleX和setScaleY。所以在获取

2017-02-27 17:32:26 1320 1

转载 实时动作游戏同步方式和传输协议选择

http://www.gameres.com/478430.html6 天前 上传下载附件 (88.33 KB)  GameRes游资网授权发布 文 / 韦易笑  实时动作游戏在近年来得到迅猛的发展。而游戏同步问题,成为大家继续解决的核心问题之一。早在 2004年,国内游戏开发还处于慢节奏 RPG满天飞的情况下,我就开始实时动作游

2017-02-27 11:16:21 755

转载 开发者需知的10类工具

作为一个软件开发者,你不可避免地需要用到各种工具来设计、理解、编辑任何程序,本文作者按类型总结了10类开发者须知的工具。CSDN摘译如下:免责声明:“最好”的软件工具通常属于主观看法,也许你并不同意我的观点,但是也可以从中获取所需。1. 版本控制工具无论你是在100人的团队,还是一个人做设计、开发,版本控制工具都能让你从中获益。通过版本控制工具,你可以保留同一文件中

2017-02-27 11:15:06 273

原创 cocos2dx实现全局游戏公告

版权声明:本文为博主原创文章,未经博主允许不得转载。最刚开始分平台调用原生的提示,但是由于项目之后要显示的内容变的复杂,只好研究一下全局的游戏公告该怎么显示了。直接addChild的是行不通的,或者处理起来比较繁琐,因为每次切换scene都会清空。研究了一下cocos2dx的渲染机制。入口:[cpp] view plain copy 

2017-02-09 20:22:30 357

转载 Cocos2d-x3.2与OpenGL渲染总结(一)Cocos2d-x3.2的渲染流程

 最近几天,我都在学习如何在Cocos2d-x3.2中使用OpenGL来实现对图形的渲染。在网上也看到了很多好的文章,我在它们的基础上做了这次的我个人认为比较完整的总结。当你了解了Cocos2d-x3.2中对图形渲染的流程,你就会觉得要学会写自己的shader才是最重要的。    第一,渲染流程从2.x到3.x的变化。    在2.x中,渲染过程是通过递归渲染树(Rendering tre...

2017-02-09 20:18:59 322

原创 uv纹理坐标设定与贴图规则

1.什么是UV?  对于三维模型,有两个最重要的坐标系统,一是顶点的位置(X,Y,Z)坐标,另一个就是UV坐标。什么是UV?简单的说,就是贴图影射到模型表面的依据。 完整的说,其实应该是UVW(因为XYZ已经用过了,所以另选三个字母表示)。U和V分别是图片在显示器水平、垂直方向上的坐标,取值一般都是0~1,也 就是(水平方向的第U个像素/图片宽度,垂直方向的第V个像素/图片高度)。那W呢?贴...

2017-02-09 20:03:09 1936

转载 设计模式(十二)享元模式

享元模式定义享元模式是结构型设计模式的一种,是池技术的重要实现方式,它可以减少应用程序创建的对象,降低程序内存的占用,提高程序的性能。定义:使用共享对象有效的支持大量细粒度的对象要求细粒度对象,那么不可避免地使得对象数量多且性质相近,这些对象分为两个部分:内部状态和外部状态。内部状态是对象可共享出来的信息,存储在享元对象内部并且不会随环境的改变而改变。而外部状态是对象依赖的一个标记是随...

2017-02-06 10:35:18 183

转载 设计模式(十一)策略模式

前言当我们写代码时总会遇到一种情况就是我们会有很多的选择,由此衍生出很多的if…else,或者case。比如我们根据学生的成绩来评级,60分是及格,90分是优秀,这就会用到很多if…else或者case。当然很多个算法集中在一个类的时候就会使得这个类变得臃肿,维护的成本也会加大。关于学生评级的例子,如果我们新增一种情况比如70分是一般,就需要修改算法的代码,而且还是在一堆if…else或者ca...

2017-02-06 10:31:31 157

转载 设计模式(十)工厂方法模式

前言在此前的设计模式(四)简单工厂模式中我们介绍了简单工厂模式,在这篇文章中我们来介绍下工厂方法模式,它同样是创建型设计模式,而且又有些类似,文章的末尾会介绍他们之间的不同。1.工厂方法模式简介工厂方法模式定义定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。工厂方法模式UML图找了下网上的UML图,都画的丑丑的,自己画吧,结果就出来...

2017-02-06 10:30:09 195

转载 设计模式(九)模版方法模式

1.模版方法模式简介模版方法模式介绍在软件开发中,有时会遇到类似的情况,某个方法的实现需要多个步骤,其中有些步骤是固定的,而有些步骤并不固定,存在可变性。为了提高代码的复用性和系统的灵活性,可以使用模板方法模式来应对这类情况。模版方法模式定义定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。模版方法模式结构图...

2017-02-06 10:28:48 169

转载 设计模式(八)外观模式

1.外观模式简介外观模式介绍当我们开发Android的时候,无论是做SDK还是封装API,我们大多都会用到外观模式,它通过一个外观类使得整个系统的结构只有一个统一的高层接口,这样能降低用户的使用成本。外观模式定义为系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更加容易使用。外观模式结构图Facade:外观类,知道哪些子系统类负责处理请求...

2017-02-06 10:27:33 138

转载 设计模式(七)装饰模式

1.装饰模式简介装饰模式介绍装饰模式是结构型设计模式之一,不必改变类文件和使用继承的情况下,动态地扩展一个对象的功能,是继承的替代方案之一。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。定义动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式结构图Component:抽象组件,给对象动态的添加职责。 ConcreteComp...

2017-02-06 10:25:59 201

转载 设计模式(六)代理模式

1.代理模式简介代理模式介绍代理模式也叫委托模式,是结构型设计模式的一种。在现实生活中我们用到类似代理模式的场景有很多,比如代购、代理上网、打官司等。定义为其他对象提供一种代理以控制这个对象的访问。代理模式结构图Subject:抽象主题类,声明真实主题与代理的共同接口方法。 RealSubject:真实主题类,定义了代理所表示的真实对象,客户端通过代理类间接的调用真实...

2017-02-06 10:24:25 146

转载 设计模式(五)观察者模式

1.观察者模式模式简介定义观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。观察者模式结构图Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都...

2017-02-06 10:22:23 160

转载 设计模式(四)简单工厂模式

1.简单工厂模式简介定义简单工厂模式属于创建型模式又叫做静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式结构图Factory:工厂类,简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。 IProduct:抽象产品类,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共...

2017-02-06 10:20:35 142

转载 设计模式(三)建造者模式

相关文章设计模式(一)建造者模式1.建造者模式简介定义建造者模式(builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。简介建造者模式(builder)是创建一个复杂对象的创建型模式,将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示分离开来。例如我们要DIY一个台式机电脑,我们找到DIY商家,我们可以要求这台电脑的cpu或...

2017-02-06 10:15:40 205

转载 设计模式(二)单例模式的七种写法

面试的时候,问到许多年轻的Android开发他所会的设计模式是什么,基本上都会提到单例模式,但是对单例模式也是一知半解,在Android开发中我们经常会运用单例模式,所以我们还是要更了解单例模式才对。定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式结构图:单例模式有多种写法各有利弊,现在我们来看看各种模式写法。1. 饿汉模式public class Si...

2017-02-06 10:13:26 184

转载 设计模式(一)设计六大原则

1. 单一职责原则(SRP) 定义:就一个类而言,应该仅有一个引起它变化的原因。 从这句定义我们很难理解它的含义,通俗讲就是我们不要让一个类承担过多的职责。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到破坏。 比如我经常看到一些Android开发在Activity中写B

2017-02-06 10:10:20 141

原创 真随机数&&伪随机数

大部分程序和语言中的随机数(比如 C 中的,MATLAB 中的),确实都只是伪随机。是由可确定的函数(常用线性同余),通过一个种子(常用时钟),产生的伪随机数。这意味着:如果知道了种子,或者已经产生的随机数,都可能获得接下来随机数序列的信息(可预测性)。直观来想,计算机是一种可确定,可预测的的设备,想通过一行一行的确定的代码自身产生真随机,显然不可能。但是,我们或许可以迂回一下……

2017-01-12 19:50:38 341

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除