<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CoderXZ的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CoderXZ</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CoderXZ]]></copyright><item><title><![CDATA[在App中打开URL]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/123904716</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/123904716</guid><author>CoderXZ</author><pubDate>Fri, 01 Apr 2022 18:27:47 +0800</pubDate><description><![CDATA[不废话，直接上代码！

ios：


+(void)openURL:(NSString*)url{
    //需要注意 url不能带有中文。
NSLog(@"openURL!!!!!");
NSLog(url);

if([[[UIDevicecurrentDevice]systemVersion]floatValue]&gt;=10.0){
//设备系统为IOS10.0或者以上的
[[UIApplicationsharedAp...]]></description><category></category></item><item><title><![CDATA[打开Cocos Creator 编辑器，报错property uuid of null]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/120737861</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/120737861</guid><author>CoderXZ</author><pubDate>Wed, 13 Oct 2021 09:56:48 +0800</pubDate><description><![CDATA[我发现最近很多开发者都碰到了这个问题，我就来分享下我是排查这种错误的。
如图

这好像也看不到 是哪里uuid错误了！！！
解决方案：
那我们用命令行方式打开Cocos Creator，这时候，命令行就会报出报错信息了。看到报错信息，这里它指出了某个meta文件出错了，你可以直接去看看这个meta文件，很容易就解决了。

...]]></description><category></category></item><item><title><![CDATA[突然发现xcode更新下载不了？？？]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/116244915</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/116244915</guid><author>CoderXZ</author><pubDate>Wed, 28 Apr 2021 22:26:21 +0800</pubDate><description><![CDATA[请留意，是否需要先更新Mac OS，有的xcode版本（尤其是最新版）需要系统支持。一般Mac OS为最新版的话，xcode不会下载不下来。

]]></description><category></category></item><item><title><![CDATA[初识Promise]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/115151272</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/115151272</guid><author>CoderXZ</author><pubDate>Tue, 23 Mar 2021 23:31:58 +0800</pubDate><description><![CDATA[一、Promise是啥？
Promise是异步编程的一种优雅的解决方案。它相比于回调和事件交互，更加合理和强大。它改善了深度回调的问题。 回调里面还有回调，层级较深的，代码看起来特别凌乱。而通过事件交互会多做一些工作，比如发送事件，监听事件，事件回调等操作。而Promise能够获取异步操作的结果，这样的话，方便进一步处理接下来的逻辑。
Promise，简单来说，他就是一个容器，里面保存着某个未来才会结束的事件（通常是一个异步操作）的结果。ES6将其写进了语言标准，并原生提供了Promise对象。
Promi]]></description><category></category></item><item><title><![CDATA[JS 插入排序]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/114241584</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/114241584</guid><author>CoderXZ</author><pubDate>Sun, 28 Feb 2021 22:38:03 +0800</pubDate><description><![CDATA[算法描述
插入排序的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列，对于未排序数据，在已排序序列中从后向前扫描，找到相应位置并插入。
一般来说，插入排序都采用in-place在数组上实现。具体算法描述如下：

从第一个元素开始，该元素可以认为已经被排序；
取出下一个元素，在已经排序的元素序列中从后向前扫描；
如果该元素（已排序）大于新元素，将该元素移到下一位置；
重复步骤3，直到找到已排序的元素小于或者等于新元素的位置；
将新元素插入到该位置后；
重复步骤2~5

代码
写法一：
func]]></description><category></category></item><item><title><![CDATA[JS 冒泡排序]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/114241559</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/114241559</guid><author>CoderXZ</author><pubDate>Sun, 28 Feb 2021 22:36:44 +0800</pubDate><description><![CDATA[算法简介
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列，一次比较两个元素，如果它们的顺序不符合要求就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换，也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端（数组的最前面）。
代码
第一种写法
function bubbleSort(arr) {

    if (!Array.isArray(arr)) {
        return;
    }

    let sortedFlag = ]]></description><category></category></item><item><title><![CDATA[在Cocos Creator Store中下载的插件和代码存放在哪里呢？]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/113865246</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/113865246</guid><author>CoderXZ</author><pubDate>Fri, 19 Feb 2021 15:48:49 +0800</pubDate><description><![CDATA[我们从Cocos Creator Store中下载插件或者代码/资源，放在哪里呢？有时候找还真有点费时间，现在记录下吧。
下面是Mac版的截图

无论是Mac版还是Windows版，文件夹路径是用户主目录/.Cocos Creator。
例如：
Mac：Umbrella1024/.Cocos Creator
Windows：C:/用户/Umbrella1024/.Cocos Creator
其中download是存放代码项目、资源，packages是插件目录，所有的插件都放在这里。
还需要注意的地方是，Ma]]></description><category></category></item><item><title><![CDATA[JS 深拷贝与浅拷贝]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/113845765</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/113845765</guid><author>CoderXZ</author><pubDate>Thu, 18 Feb 2021 14:02:24 +0800</pubDate><description><![CDATA[其实在工作写代码和面试中，会经常碰到这两个概念：深拷贝，浅拷贝。但今天的重点是深拷贝。
下面我将简单介绍下什么是深拷贝，浅拷贝？
浅拷贝就是直接将一个Object对象所有的属性和属性值复制给另一个Object对象。这样导致的后果是，新对象和老对象相同的Object类型的属性值在内存中的指向是一样的，也就是新对象和老对象的Object类型的同一属性值指向的是同一块内存。因此修改新对象或者原对象，都会互相干扰。
深拷贝是将一个Object对象的内容完全拷贝一份给新对象。修改原对象的属性或者属性值，都不会影响新对]]></description><category></category></item><item><title><![CDATA[WebGL坐标系、Canvas坐标系和浏览器客户区坐标转化]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/113777183</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/113777183</guid><author>CoderXZ</author><pubDate>Tue, 09 Feb 2021 23:25:15 +0800</pubDate><description><![CDATA[WebGL坐标系、Canvas坐标系和浏览器客户区坐标转化

1.Canvas坐标系
Canvas坐标系的原点在左上角，X轴向右为正，y轴向下为正
2.WebGL坐标系
WebGL坐标系的原点在绘图区域的中心点。X轴向右为正，Y轴向上为正，Z轴向外为正。
3.浏览器客户区坐标与Canvas坐标和WebGL坐标的转换
鼠标在浏览器客户区点击的位置为：(event.clientX,event.clientY)
那么在canvas中的坐标（x,y）就是：
var rect = ev.target.getBound]]></description><category></category></item><item><title><![CDATA[Mac有网络，却访问不了网站？？？]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/111570181</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/111570181</guid><author>CoderXZ</author><pubDate>Wed, 23 Dec 2020 00:17:55 +0800</pubDate><description><![CDATA[Mac有网络，却访问不了网站？？？
我的Macbook Pro今天更新了下系统，突然发现在有网络的情况下，不能访问网站了。www.baidu.com也访问不了。
解决方案：
进入偏好设置—&gt;网络—&gt;对应联网方式中的高级—&gt;DNS

然后添加114.114.114.114

然后点击好，应用即可。
解决啦！！！
Windows下的解决方案类似，查看DNS地址，修改为114.114.114.114。

...]]></description><category></category></item><item><title><![CDATA[Js如何遍历嵌套的Object对象]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/109829711</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/109829711</guid><author>CoderXZ</author><pubDate>Thu, 19 Nov 2020 23:21:15 +0800</pubDate><description><![CDATA[如何遍历嵌套的Object对象
嵌套不深的话，可以选择用递归的方式去遍历。在这里写一下递归遍历的方式。
下面举个栗子：
let obj = {
    x: 10,
    y: 20,
    children: [
        {
            x: 1,
            y: 2,
            children: [
                {
                    x: 3,
                    y: 4
       ]]></description><category></category></item><item><title><![CDATA[Js实现Object按照值的某些字段（数值类型）的大小进行排序]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/109787447</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/109787447</guid><author>CoderXZ</author><pubDate>Wed, 18 Nov 2020 21:41:49 +0800</pubDate><description><![CDATA[最近，有个需求：将一个Object对象，按照值的某个字段（数值型）的大小来进行排序。感觉这个需求也算是有点用，也有点意思吧！就记录分享一下。
看代码，写的很挫，将就着看吧。能用就行，哈哈！
var objs = {
    "aaa": { name: "小明", age: 30 },
    "bbb": { name: "小红", age: 20 },
    "ccc": { name: "小花", age: 40 }
}

/**
 * 
 * @param {*} obj 对象
 * @param]]></description><category></category></item><item><title><![CDATA[TypeScript中的命名空间—namespace]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/109561600</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/109561600</guid><author>CoderXZ</author><pubDate>Sun, 08 Nov 2020 17:03:43 +0800</pubDate><description><![CDATA[TypeScript中的命名空间—namespace
什么是命名空间？在很多语言中都有这个概念。
命名空间是为了解决命名冲突。比如你在代码的不同地方，都定义了同名但是不同含义的函数、变量等，虽然不提倡这么做，但是有时候需要这么做。那怎么办呢？可以选择将同名但是不同含义的函数、变量等分别写在不同的命名空间中，就不怕有冲突报错啦！
命名空间的关键字是namespace
namespace tsNamespace {
​    let ownerName: string = "tsNameSpace";
​   ]]></description><category></category></item><item><title><![CDATA[如何编写d.ts文件？（1/2）]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/109551171</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/109551171</guid><author>CoderXZ</author><pubDate>Sat, 07 Nov 2020 19:36:47 +0800</pubDate><description><![CDATA[如何编写d.ts文件？（1/2）
​		在很多项目中，会看到一些d.ts文件，比如Cocos Creator工程中，在创建工程后，会默认会创建一个creator.d.ts文件，它是用于为Cocos Creator中所有接口提供代码智能提示的。
​		那么，d.ts文件有什么作用呢？它是typescript写的用于类型声明的文件，它的主要作用是为js、ts添加智能提示。在项目中添加了对应的d.ts，并且在其中添加对应的变量、类型、函数等的声明，就可以在编写代码时，编辑器会提供d.ts声明文件中的提示。**当然]]></description><category></category></item><item><title><![CDATA[Mac下安装cnpm]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/109501373</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/109501373</guid><author>CoderXZ</author><pubDate>Wed, 04 Nov 2020 23:06:09 +0800</pubDate><description><![CDATA[npm安装一些东西比较慢，安装cnpm加快速度，安装方法：
打开终端，复制下面代码：


sudo npm install -g cnpm --registry=https://registry.npm.taobao.org --verbose


1
这一行使用的淘宝镜像来进行安装cnpm，安装完成后输入以下代码检测是否安装成功：


cnpm -v


1
出现如下示例即可：
...]]></description><category></category></item><item><title><![CDATA[Cocos Creator中脚本组件的生命周期]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/108722621</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/108722621</guid><author>CoderXZ</author><pubDate>Tue, 22 Sep 2020 00:31:20 +0800</pubDate><description><![CDATA[Cocos Creator中脚本组件的生命周期
在Cocos Creator中cc.Component有以下几个生命周期。
onLoad、start、onEnable、onDisable、onDestroy、update、lateUpdate。
那么他们的执行顺序是怎样的呢？并且他的作用分别又是什么？
我们来做一个测试：

写一个脚本，然后挂载在一个节点node上。然后将节点node初次显示，并且destroy掉。调用的顺序如图。

至于这几个回调函数分别是什么作用，请看官方文档哦！
https://doc]]></description><category></category></item><item><title><![CDATA[Creator | 2.3.3及后续版本浏览器无法断点和控制台不显示错误代码路径的解决方案]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/108672982</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/108672982</guid><author>CoderXZ</author><pubDate>Fri, 18 Sep 2020 21:03:49 +0800</pubDate><description><![CDATA[在2.3.3正式版的官方介绍中有这么一项：



提升网页预览时的加载速度

为了进一步提升开发效率，我们优化了网页预览时的脚本加载速度。不论是对引擎还是项目中的代码，载入速度都获得了提升。特别是在开启自定义引擎，或者使用手机扫码预览时，开发者都能得到更顺畅的体验。

实际体验：

预览的时候，加载速度提升多少没感觉出来，但手抖写出bug后，定位出错代码的时间却是增加了不少





随手写个bug（写bug小能手）：







预览时报错如下：





增加断点也会被无视：





然...]]></description><category></category></item><item><title><![CDATA[关于android中的armeabi、armeabi-v7a、arm64-v8a及x86等]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/108505288</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/108505288</guid><author>CoderXZ</author><pubDate>Thu, 10 Sep 2020 00:11:56 +0800</pubDate><description><![CDATA[Android 设备的CPU类型(通常称为”ABIs”)

armeabi-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
arm64-v8a: 第8代、64位ARM处理器，很少设备，三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM处理器，早期的手机用的比较多。
x86: 平板、模拟器用得比较多。
x86_64: 64位的平板。

1.armeabi：默认选项，将创建以基于

ARM* v5TE 的设备为目标的库。 具有]]></description><category></category></item><item><title><![CDATA[Mac如何在Finder中将隐藏文件显示出来]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/108328010</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/108328010</guid><author>CoderXZ</author><pubDate>Mon, 31 Aug 2020 19:50:33 +0800</pubDate><description><![CDATA[在Windows中，想要显示隐藏文件，我们知道只需要勾一勾 显示隐藏文件的选项就可以做到。但是在Mac中，系统似乎并没有界面化的设置显示隐藏文件的入口。今天我就查阅了相关的资料，整理了下。



如何让 Finder 显示隐藏文件和文件夹

第一步：打开「终端」应用程序。

第二步：输入如下命令：


defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder

并且回车。可以看到隐藏文件就显示出来了。..]]></description><category></category></item><item><title><![CDATA[文件夹中含有空格，终端命令访问出现问题解决方案]]></title><link>https://blog.youkuaiyun.com/CoderXZ/article/details/108158254</link><guid>https://blog.youkuaiyun.com/CoderXZ/article/details/108158254</guid><author>CoderXZ</author><pubDate>Fri, 21 Aug 2020 21:38:22 +0800</pubDate><description><![CDATA[在访问名称有空格的文件夹时，直接输入文件夹名（有空格），会报不存在该文件夹。因为默认空格后就是结束。



那么在终端中，访问文件夹时，要在空格后加上\，然后再加空格和后续的字符即可。
...]]></description><category></category></item></channel></rss>