哈喽,小伙伴们好,那说到我们 gs 中的 b 包啊,有同学总是感觉很头疼,因为 b 包总是有一些引起奇异的地方,比如说 b 包他一定会有 return 吗?那 b 包一定会有内存泄漏吗?哎,现在呢评导师给小伙伴去分析一下, 其实在很多其他的语言里面也会有 b 包的存在,那到底什么是 b 包呢?来看一下官方解释。哎,这个官方解释我都不想看,因为他介绍的太灰色,难懂了,请说人话。 其实我们可以简单理解,臂包是这么一种形式,那这一段大码呀,也是我们非常常见的一段大码,一个大函数里面包含了一个变量,还有一个内部的函数,其实我们的臂包呢,是这个样子,同学们有人听他就是里层这个函数加上,哎外层函数这个变量,他们两个一起就构成了我们的臂包。 好,那到底有没有呢?我们一起来看一看,我们可以到我们的代码调试工具里面去瞧一下,然后我们只需要找到我们的 soss, 可以看到这个代码,我们发光标啊,哎,定到第十七行,打一个断 断点,重新刷新一下页面,在我们的右边呢,我们看到一个 scope, scope 呢有个可 logo, 这其实可 logo 就是 b 包的意思,我们发现确实是存在了 b 包的形式。好了,这就是一个最简单的一个 b 包的基本格式了,那我们经常喜欢呀,拿一个函数呢,把这个 b 包啊给它包起来,这样就保证我 b 包里面这个 啊变量起到一个保护性的作用。所以我讲到这,小伙伴们你来看一下,如果赞为你哎,我们的 b 包他一定有 return 吗?我们刚才的函数里面有没有 return 是没有的,那 b 包一定会有内存泄漏吗? 答案是 no 的,所以说小伙伴们要注意这两点。讲到这,小伙伴们可能非常好理解,只不过呀,对我们来说, b 包最难的地方,那就说,那我什么时候使用 retard 呢?我看到很多 b 包它都有 retard 呢,而且人家也会说 b 包会内存泄漏吗? 哎,其实啊,你要了解这个地方,那我们先明白,那我们什么情况下会在 b 包里面使用 retard 呢?来,我们一起来看一下。那刚才我们说过,我们的 b 包啊,经常喜欢拿一个大函数给他 包含起来,那这个变量给它包住了,就是一个局部变量,我们外边人是不能直接使用这个变量的,但是外部啊,如果想要使用我们这个 b 包里面的变量怎么办呢?因为你会发现这个变量是包含在函数里面的,是一个局部变量,外边人不能直接使用。 哎,那如果你想非得想要使用,那此时我们可以采取一种方法,就是用 return 的方式。哎,把我们这个纸啊给它返回出来,我就可以使用了。 所以说呢,我们必包的话,有同学会见到,会经常见到这个 return 了,测水称的主要目的啊,就是把哎,我们这个局部变量呀,返回到外面来,这样外面人也可以使用这个纸了。好了,那么我明白什么时候是 return 了,我给小伙伴举个例子,通过代码来给你们演示一下。 好,那我们呢,有这么一个需求,统计一下函数的吊用次数,你看一下,这有这么一段代码,首先呢赖的 i 等于零,也说我在外面声明了一个全局变量,写了一个小函数,函数里面呢,爱加加,哦,我函数掉用一次了,就加加,然后说出我被掉用多少次, 那这样没有使用背包的形式,哎,那爱呢,也是个全局变量,所以说呢,我可以这么写,写上 fn, 加上一个小括号,就掉用一次,哎,按下会车被掉用了一次,然后呢我再 fn, 再按一下会车,哎,这样呢,掉用两次,这个看上去是非常好的,但是呢会有问题,因为 i 是个全局变量,那如果此时呢,我给 i 做了一个修改,比如说,哎,等于了一千,好, 然后呢,现在呢,我再进行调用 fn 的话,你说他会变成多少? s 十会变成一千零一次, 因为呢,这时候呢就会出了一个问题了,因为我爱是与全局变量,那所以说呢,我在外面修改的话,有影响我们统计的次数了,那此时我应该怎么办呢?哎,我们可以采取第二种形式,是 b 包的形式,因为 b 包里面最典型的一个应用就是可以实现我们 数据的私有啊,让我们变量做一个私有化好了。那同样道理,还首先呢有一个函数,然后呢我们想使用这个 i am, 所以说我 return 的一下, 把这个想要的这个数据啊给他返回出来了,那现在呢,我们通过 fn 调用过来,那此时呢,我如果保存一下,我们重新刷新页面看一下,那现在呢,还是统计我这个函数调用次数上,那我再输入的是 fun, 加上一个小括号,敲一下回车是调用了一次,我在 fun 加小回车,哎,跳用了两次,这个没问题, 那此时呢?我如果修个 i 等于一千,会有影响吗?哎,他结果就不会影响了,你看 fun 再加个小符号敲回车走着是不是被吊用了三次, 他不会有影响,因为我们这个爱呢,是一个私有变量,也说在函数里面包着的,我们在外面是无法修改的,所以 说我们会发现 b 包它有一个非常非常显著的作用或者特点,叫做实现了数据的私有。第一,哎,我外面人啊,可以使用我这个爱,这个变量是没问题的,你能用,但是外面呢,是没有办法去做修改的,因为这个数据是我私有的,所以说这就解决了我们 b 包的 一个主要作用或者主要应用,可以实现数据的私有。如果你按照以前的写法呀,这个炕的这个选举变量很容易被修改,而如果你使用我们背包的形式的话,实现数据的私有,因为外面的人呢,可以用,但是无法直接修改,是不就是私有的了? 其实 b 包啊,在我们开发中也非常常见,比如说我们开发中用的节流和方斗里面就有这种 b 包形式,再比如说我们 vo 三里面,或者更不用去 react 了, rex 后色里面大部分用的都是这种 b 包的形式。 好了,那讲完这个之后呢,很多小伙伴会关心的,那闭包会引起内存泄漏是怎么引起的呢?来我给小伙伴讲解一下关于这个闭包引起可能引起内存泄漏的问题了。 那在这里面我们可以借助垃圾回收机这里面的标记清除法可以来看出,比如说还是这段代码,我给小伙伴们分析一下,那我们可以看到代码方块式呢,是不执行的,我们先看 cost resalt 好了,那 resilt 一看,指导是一个全局的变量,那全局变量,哎,我们代码执行完是不销毁的,除非你关 页面受销毁。那么我们利用我们的啊,标记清除法呀,就知道是能够我们这个温度啊,是能找到他的好,找到他之后呢,我们会发现他呢啊,又引用了 fn 这个函数,好,那 fn 函数是不是上面的函数了,所以我要执行这个函数。 fn 这个函数里面是不是发现了一个 return, 那 return 呢?也说 fn 的函数呢,是能找到 fun 这个函数的,喏,是能找到他的,好,那我们继续根据标记往里面去找。那 fun 里面是不是又用到了我们的 count, 发现 f u n 呢,又能引用这个 ct, 所以说呢,既然我能找到 ct, 我就不会会受垃圾,所以说呢,它是一直存在着的,所以啊,啊,正常情况下,一般的局部变量,那函数执行完了就销毁,而我们这个呢,因为 cons 的瑞萨他一直没销毁啊,所以说这个 conta 呢,也不会销毁,所以这就引起了我们 conta 这个变量的一个啊,内存泄漏了,好,这个小伙伴明白了吗?好,那只不过呢,不是所有人的 都要手动回收的,也没有必要说我为了专门办哪一个变量了,做一个销毁也没有必要啊,比如说在我们 reax 里面,很多的 b 包啊,是不能来进入回收和销毁的,所以说啊,也没有必要啊,遇到了一个内存泄漏就要去销毁,哎, b 包就是一个 里层函数加上一个变量一起构成了我们的背包,那背包啊,他不一定会内存泄露,背包啊,不一定会到 return。 但是呢,如果有一种情况啊,那我们想使用这个背包里面这个变量,因为他是个局部变量,外边人呢,不能直接使用, 那这个时候呢,我们可以通过 retard 的形式把它返回出来,这样我外边的人呢就能使用我这个变量了,这就是构成了我们必包的典型应用变量的私有,因为外边的人呢,能使用这个变量,但是外边的人 无法直接修改这个变量,因为这个变量是属于内部变量的。好,这个小伙伴们明白了吗?当然最后一点呢,我们必爆呢,可能会引起这种内存泄漏,哎,只不过我们不是所有内存泄漏都需要回收的。
粉丝11.9万获赞109.0万

大家好,我是小艺,你的最佳灵敏度是多少你知道吗?无论你是 pubgcs、 go 或是 cudapecs 玩家,你都会有一个长期用起来最舒服的灵敏度吧,但你是不是经常会更换 dpi 或者灵敏度来找手感?今天教大家如何使用 psakq later 这个灵敏度计算网站来帮你计算你的完美灵敏度。 请大家务必注意模仿你的偶像或是某位职业选手的灵敏度。这种方式并不可取,要相信你自己的手感,因为操作的人是你。 开始之前,我们先使用参照物瞄准法来寻找一个适合自己的常规灵敏度。不同游戏自行寻找参照物。这里我拿 party 举例, 在训练场内的射击训练室内寻找参照物,遵照先准后快的原则,将准星移动到参照物上,从左到右,从右到左,反复直到获得一个能够让你又准又快的数值即可。切记,这个数值有个标准,就是游戏内转动一圈时,鼠标在鼠标垫上移动的距离不可以超过鼠 标店本身,同时最低不能低于十五厘米,最高不能高于六十厘米,否则你会得到一个激情灵敏度。然后我们进入正题,打开 psakq later 网站,在 starting sensitivity 选项内输入你最顺手的常规灵敏度,七次计算后得出 perfect sensitivity, 这就是你的最佳状态灵敏度。 当你某一天开始琢磨改变手感了,那么你可以按照上下不超过百分之十五的数值来改变灵敏度,获得新手感。希望各位切记,不是我们去适应灵敏度,而是要让灵敏度适应我们。

各位好兄弟,大家好啊,今天这期视频呢,是教大家如何寻找自己最适合的 dpi, 也就是灵敏度。 每次直播的时候呢,都有很多小伙伴问,就是主播你的低标要多少,灵敏度多少?或者是你是手臂流还是手腕流,或者是我该设置多少的灵敏度比较合适,吧啦吧啦各种问题,这里呢我统一说一下 灵敏度这个东西啊,因人而异的,手臂流,手腕流也是因人而异的,没有最好的,只有最适合你的,不要一味的去抄别人的,也许别人的并不适合你。 那么今天这个视频呢,就教大家如何去寻找自己最适合的 dpi, 也就是灵敏度,时间比较长,大家耐心看。呃,需要用到的是什么呢?用到的是一个网址,还有一个梯子,具体 我都放在学文件里面了,有兴趣的话可以到群里来下载一下。那首先我们打开这个网址, 这个网址你往下拉,拉到这个地方啊,这里就有一个工具,就是等我们用到的。在此之前呢,我跟大家讲一下 dpi 是什么东西, 这个 dpi 呢,有四百,有八百,有一千六,有三千啊,巴拉巴拉,各种不同不一样,但是他并不是咱们所谓的游戏灵敏度。灵敏度是什么?是你的 dpi 乘以 乘以你在游戏里面的灵敏度,举个例子,我在游戏里面,对吧,我是二,那么那么我的一 dpi 就是二,乘以八百一千六。那么有句话问,那我可不可以我的 dpi 是一千六, 我的游戏灵敏度是一,可以的,这样也是可以的,总体的 etpi 也是一千六,但是我建议如果你觉得一千六这个 etipi 你觉得很舒服,那么我建议你把你的 dpi 调低, 把你的这个游戏内调高。为什么?因为在游戏内你可以甚至的就是比如说二点零,一点九,一点八五,一点八九,对吧?你可以甚至去微调,但如果你把你的游戏温度调高以后,你的微调的空间就很小了,大家想一想是不是这个道理啊?那么 我们介绍完这个地标,我们开始 这个网址,我先出一个中间值, 我先输一个七或者八,都可以随便多少,然后他就会给你一组数据, logo, 三点五,海尔十点五,中间就不用看了, 终于不用看了,那么我们就进游戏。好,我现在换一下十点五,操,特别的快,你看到没有?很明显太快,但是你也要稍微玩一下, 你会发现压不住枪,太快了啊,这明显就不行了。好了,那么我们再试下他的低的三点五 啊,会慢很多,对吧?但是对我来说还是有点快了,再试一下, 还是有点不太稳。正常来说,每一个测试你都要做,最起码十分钟,就是你换了灵敏度以后,你要最起码打枪一分钟,无论是打枪,转身定, 对吧,跟着都试一下。好吧,那么我觉得这个还是高了,怎么办?我们出来,我们选择这个低一点的,让我更舒服,因为十点五肯定不行吗?十点五太高了,我直接就不玩了,转圈了,那么低一点的,他又又给你一组数据, 二点六三,七点八八,依然我们先从高的开始,是七点八八,还是很快,这个我都,我都瞄不准了, 你看我都瞄不准了,不用讲了,这肯定不行,那二点六三,我们是二点六三, 二点六三,还可以,还可以,还,还是我能一个能控制的一个范围内啊,那么我就就一带而过,好吧,我们依然选择低的,这个 又给你组数据,二点三六,五点五五,然后你就以此类推,去尝试他给你的各个数据,尝试到最后不用选了,我肯定觉得二点三六我很合适,对吧?我会再选低的,那么二点零,四点一一,四点一,我再试试看这个四点一, 四点一零不灵,还是很快,快的,我直接就就转圈了,你看我就直接瞄不动人了, 对吧?那么我依然是选这个低的,因为低的我更舒服吗?又给你走数据,二点一四,三点二一,对吧?那我再试试看三点二一, 感觉一下,感觉好像也还行,能接受,能控制的住,对吧? 看看冰箱,冰箱也还行,看看定位,定位会有一点, 有点拉过枪,因为速度有点快了,对我来说,那么他这个二点一四我们再试一下,因为我本来就是二点零,所以我不用试了,肯定是二点一四更适合我。我继续选这个低的,又给你组数据,那么以此类推,他会让你重复尝试十遍, 最后到最后给出你的数据,你看,我再选低的,我再选低的,最后给你个数据,二零二三 啊,二点二三,二点二三,那这个就已经比较舒服了,我是二点零吗?对吧?就比较舒服了, 好吧,就利用这个,利用这个网站的他的他,他其实就是个二分法,你就可以找到你最适合你的一个游戏灵敏度,然后,然后怎么办?然后拿这个二零二三 去乘以你的这个灵敏度,对吧?二点二三乘以我的灵敏度,八百得到 一七八四,这就是我的 edpi, 你只要知道这个 edpi, 基本上其他所有的游戏基本上你大概就知道自己的区间了,现在是玩的 ipax, 你包括你以后玩 cs go, 玩 cs, go 不讲,因为 cs go 跟这个游戏不是一个类型的,玩 ow 守望先锋跟他就很像,他是一个需要上下左右都大幅度拉枪的游戏, 那么我只要把我的 etpi 控制在一千八左右,应该就是我一个比较舒服的一个灵敏度了,好吧。然后还有就最后要重强调一下,就是什么呢?就是你确定好你的 etpi 以后 一千八,对吧?有人说,哎,我,我的,我的,我的鼠标,我的 dpi 是一千六,那么我乘以一点五,多少乘以我,或者我乘以零点九,或者乘以一点一这种一千八乘以一点一,对吧?那我差不多也是,就是一千一千一千二,对,一千六,一千六乘以一点一, 那么差不多也是这个,这个,这个数值啊,对不对?我建议你把 dpi 降低,把游戏灵敏度提高,那样你的这个微调的空间会大很多, 有的时候就是那么一点点让你觉得不舒服。好吧,今天这期教程就做到这里,希望对大家有帮助, 拜拜各位。

好,那么这里面强调的呢,今后大家在使用这个菜单的时候,尽量使用这个快捷键啊,比如啊,新建文档应该怎么着啊,关闭啊, ctrl w, 还有保存 ctrl s 啊,有很多快捷键啊,对于一个熟练的这个程序员,程序员来说呢,肯定会大量的使用这个快捷键的,那么我们一开始啊,这个学习的时候记不住啊,记不住的话你可以使用菜单,但是使用两次之后呢,最好记下来, 不行的话拿个本给他记下来啊。好,我们来看一下具体有哪些东西,这个刚才说了这个左侧工具栏啊,等会再说,我们先看一下,他底下有一个状态了啊,底下有个状态了, 这个状态来呢啊,非常重要,那么在他的左侧呢,有各种标签啊,各种标签,比如我在里面随便输入一个东西啊,输一个屁, 保存一下 pass, 当我的插入点放在这,甚至在设计师图啊这个地方插入到这,那么在状态栏上呢啊,状态栏左侧就会显示该标签,单击 就会选择了这个标签,比如我还可以选择他的负极标签包的啊,这是选择标签的啊,经常会用的。那么这个绿色的是 代码检查啊,代码检查,刚才呢大家也看到了啊,这个软件并不是完全是那个,呃,并不完全 那么智能啊,往下拉了啊,往上提一下吧啊,我怕我这个录的录不上录,录不到这个地方,那么这个点 这个是什么呢?这个来设置我们的这个代码环境的,因为我们这个代码检查器啊,他会根据我们这个代码环境来进行检查,比如啊, 我们是 htmi 了啊,甚至有加瓦啊,加瓦斯贵吧啊,还有 padp 啊,还有这个 c 刹等等等等啊,从这里能看出来呢, 我们中中药啊,干的活还挺多的啊,非常多啊,爬山都可以啊,很多还有乳壁啊 等等等等。那么对于我们来说呢,我们在新建文件的时候就已经决定了该页面是什么类型的页面了,所以说很少呢在这里面进行切换。这个呢表明了啊,我们当前啊,这个视图 啊,我们要做的这个这个这个页面啊,要适配我们什么样的这个终端,每一种终端他的尺寸是不一样的啊,将来呢,我们用追尾物还要 这个设计我们的移动的页面啊,比如,哎,我在 i 七,哎,这个 iphone 七,还有 iphone 八等等等等啊,我想 看他们的效果,就或者说制作那样的页面,就可以在这里面选择一个尺寸,因为这些尺寸呢相对于这些设备来说都是固定的啊,如果没有 编辑,编辑大小,自己新建啊,自己新建编辑大小,比如添加一个啊,比如这里面没有 iphone 八,我记得 iphone 八好像是宽度是五百八十 还是多好,我记不住了啊,我就随便写了啊啊,高度呢,我记得好像是幺二,我随便写啊随便写啊,我是记不住了,然后我们给他输入一个标签,比如 iphone 啊,八 plus 啊,我现在用的就是这款手机啊。另外呢,呃,顺便提一下,呃,虽然我们 这里面用的是温度式平台,今后呢,大家在这个开发这个页面的时候啊,最好要有一些这个增肌来进行测试 啊,那么如果有条件的话啊,买一个苹果的这个笔记本,再买一个这个苹果的这个手机 啊,因为我们现在用苹果的这个终端啊,越来越多了啊,我们做的东西呢要在各个平台啊,各个终端下要进要兼容啊,登机应用啊,关闭啊,我们看一下这里面 啊就有啊,八 plus, 那么这个是什么?这个是那个是插入,就是我们键盘上银色啊,还是这个 opra 还是 写就键盘上那个啊,我记得有一次上课的时候键盘出现问题了,怎么老把我后面的代码该写了,实际上是当时我不小心 按住这个了啊,好,一般呢是银色的。好,这个呢是显示我们当前的代码在第几行第几列啊?比如我放到这第八行,一二三四五六啊,第八行啊,第六列 啊,也许你说这个有什么用啊?有用啊,特别有用,因为将来我们写代码的时候会里面非常多啊, 你自己都绕了不知道在哪个地方啊,这个是干嘛呢啊?这个就是我们的预览啊,预览我们做这个页面啊,最终需要在 浏览器里面啊来进行查看,那么可以看到呢,我们中文网已经识别出啊我机器里面装的这些浏览器了啊,有这个口啊,有安逸还有微软的爱着, 还有这个啊,发货凤还有个啊,呃 siri 啊 sorry 啊 sorry, 应该这么读, 那么这里面后面有一个 f 十二什么意思呢?也就是我们预览的时候默认启用的就是阿姨,当然了你可以使用其他的 啊,使用其他的在里面等会我们还会讲到啊好,这是状态栏,那么还有个属性栏,属性栏啊, 从哪打开呢?默认情况下你这里面有可能没有在窗口啊,找这个属性栏,快捷键是 ctrl f 三啊,在哪呢啊?在这啊, ctrl f 三,那么打开的他是像浮动面板一样啊,浮在上面的 啊,这个属性来很重要的啊,那么怎么样让他贴下去呢啊,像其他软件一样啊,按住这往下拖拖拖拖拖拖动,然后再往这怎么倒 右侧去了啊,我这个有有可能是我这个录屏软件啊,把它这个遮住了嘿,上不去了,麻烦了。好, 那么我看怎么弄的啊,那么或者是停靠在左侧啊,停靠在左侧也行啊,一般呢都是停靠在这个右侧啊 啊,乱了怎么办?单击我们的标准里面的重置标准啊,怎么打开 ctrl f 三 啊,就让他这么着就行了,他有什么作用?当我们选择不同的对象标签的时候啊,他就会显示该标签的一些属性 啊,那么他这里面属性呢有两个,一个是 att m 属性,一个是 css 属性啊,他俩是不一样的,那么使用 h t m l 他也有一些内置的一些这个属性,但是不提倡啊,不提倡大家使用 css 呢,就是会生成我们的 css 代码啊,用它来定义我们对象的显示效果啊, 今后呢我们我们会经常遇到啊,会经常用到啊,好在我们的右侧就是浮动面板了 啊,浮动面板非常多,使用的频率也非常高,每个面板呢都集成了不同的这个功能,我们 我们可以根据需要呢啊来显示和隐藏不同的互动面板。主要就在窗口啊,比如档啊,大家可以看到这里面有个档, 然后呢到然后呢把它勾掉就不显示了,我们再把它显示出来啊又显示出来啊,并且每个都有快捷键啊。那么对于这个浮动面板他的使用 啊呃非常多,比如我直接给他拖出来呀啊他的浮动面板右侧有这个小小叉号呀啊给他擦掉啊,我还想给他打开啊,按 ctrl f 七 右侧呢还有一个菜单啊,我们称之为这个浮动面板快捷菜单啊,也可以关闭 等等等等啊这个呢我们今后学到的时候会慢慢说啊,然后他们还有一个叫做面满主。什么叫面满主呢?你看在这一块有资源有代码 啊,我再把我刚才这个 ctrl f 七再把这个呢再吸上去啊。鼠标往这拉出现一个蓝色的框松开啊,又跑到右侧了,我再往左侧啊,随便你组合像搭积木一样。 那么盗墓资源代码片段他们就组成了一个面板主啊,在右侧有个菜单啊右侧有个菜单 来啊,这是里面有个什么关闭标签组啊,是叫标签组面板组都对啊,这个看一下自己,大家呢自己随便随便拉啊随便动,无所谓啊 啊随便弄啊随便关闭,然后呢呃弄乱了点标准重置标准啊,又回到 初始状态了好,那么对于这个面板还有一些操作啊,比如有时候哎,这个呃可可操作的空间比较小啊,怎么办呢?有时候我们需要拖动啊,这样拖动啊, 双击的话他就折叠到最底部了,再双击呢啊又展开了啊这些小功能啊,大家自己去试去吧,我就不多说了啊。好,我们再看一个最重要的啊我们的工作台啊,工作台 就是我们的这个这一点了,试图的切换啊,试图的切换,我们知名沃呢提供了几种试图,一个是代码试图,一个是设计试图 啊,提供了这两种试图啊,其实还有第三种试图啊,实时试图,主要呢是这两种试图,什么叫代码试图 啊?整个工作台全是写代码的区域啊,单击上方的这个代码啊代码,那么这就是代码师徒,那么还有个设计师徒 啊,供这个设计师用的单吉他啊,在这里面啊,并且还显示标尺,看见了吗?啊,显示标尺, 那么有时候呢我们需要边写代码边看一些效果,那么就可以单击拆分啊,上面呢啊是可视化,下面呢是代码区啊,大家呢可以任意的来组合,实际上在窗口当中呢 啊,我看一下这里面有没有啊,没有了,没有,那就算了吧,那就不多说了。那么还有一种呢叫做实时试图,也就是设计试图呢,提供了两种 啊,一种是设计,一种是实时,他们有什么区别呢啊,大家看一下啊,有什么区别?我这个地方 点一下实施试图,实施试图呢会在我们这个页面当中啊,那么用一些 提示的一些线和框啊,还有一些这个标签来进行提示,比如这个地方有个包的意思呢,那么我们这个这一段文本 啊,就在包的内部,我们可以单击后面的加号,添加一些 css 的类或者是 id 啊,比如我添加一个叫 vip 啊,一回车 我们可以看到呢。呃,如果啊有下一步操作的话,他肯定还会提示,如果没有的话,那就没有,不管有没有,我们可以看到呢,在代码区域 那么自动的会产生了一个代码,比如我再往下来,这个制作好啊, 就是网易,哎,就是这个在页面当中定义吧。好的啊,好,再次回测啊,我们可以看到呢啊, css 代码就产生了,那么 他实际上不仅仅如此,因为我们如果使用一些脚本来进行控制的话,在这里面也能够显示这个实时试图,他就类似于 我们使用这个真实的浏览器来预览一样啊,但是我们用的非常少啊,原因呢?就是有时候操作起来还不是太方便。

这是美团的购物页面,我们如何来实现这么一个购物车的效果呢?当然你不要仅关注这个动画的实现啊,整个的页面逻辑该如何来实现呢? 他有很多的数据,而且这些数据之间呢还有很多的关联,这里有配送费总价,商品的选择数量,这些选择数量跟这些数据也是关联的。然后呢,还有起送标准,达到三十元就起送,否则的话是不会出现结账界面的,你看这里还会计算还差多少元。 我们在平时开发的时候啊,有可能会出现一种感觉,就是拿到一个效果,不知道该如何下手,信息量太大了,我到底先做哪一块呢?好像总是顾此失彼,那么面相对象就给我们提供了一个非常好的思维,他告诉我们一个程序该从什么样的角度去入手进行开发。 那么到底怎么开发呢?你就找一找整个效果里边有哪些对象,我们可以分为哪几类。虽然这个界面看上去信息很大,但是 你一旦用对象分类,他的信息一下就变少了,就两个东西,一个东西是商品,一个东西呢是购物车,购物车里边包含很多商品,所以很快的我们就可以写出这么一个类结构。有一个商品类,它里面有各种各样的属性和方法。有一个购物车的类,它里边也有各种属性和方法。 你看第一步先找类,就给你指明了一个开发的方向了。好,找到类之后,接下来他告诉你,你要去找每一个类的属性和方法, 开发就能下手了呀。就对初学者而言,面相对象最大的作用就在于此,能下手干活了不是头脑一片空白, 我们来分析一下商品有哪些属性呢?那你可能会有分析出来有很多,对吧?比如商品的标题,商品的描述,商品的月销量,以及他的好评率,商品的单价。我这里呢就简单的记录一下啊,有商品的标题,商品的单价,商品选中了几个 啊,那么他就对应到这里好。写了属性之后呢,我们可以接着写构造函数,你把这些信息呢给我传递过来,我就可以帮你创建好一个商品对象。对于某一些属性呢,你还可以给他赋予默认值,对吧?利用 es 六的参数默认值。 有人说这个玩意是不是可以不写啊?是可以不写,只是你在初学面相对象的时候啊,我还是建议你写上,写上之后呢,比较容易阅读啊,你可以一目了然的看到这个商品里边有各种各样的属性。那有的人说我将来呢,可能会动态的给他加一些属性,比方说你去溜了一个 goods, 然后将来呢,给他加了一些乱七八糟的属性。尽管呢,既然是允许你这么干,但是我不建议你这么干, 因为你在使用面相对象。在面相对象的世界里边,属性是不能新增和删除的,你可以改动他的属性值是没问题,但是呢,你不能去新增和删除属性。为啥呀?他不符合逻辑。一个苹果颜色是他的属性,他的颜色可能变化,昨天是青苹果,放了一天,放熟了,变成红苹果了,颜色可以变化没问题,但是 不能第二天颜色消失了,他没这个颜色这个属性了,这叫啥事啊?所以呢,在面相对象的世界里边不会去新增和删除属性的啊,你这么干了,你脑袋里边肯定就不是面相对象了。因此呢,我们可以把他所有的属性呢罗列在此,便于观察好。那么这个商品有没有什么方法呢?我们可能会需要计算这个单件商品的总价,对吧?单价乘以数量, 那么我们可以写个方法啊,叫做 get price, 得到的结果呢,就是选中的数量乘以这个价格。这里呢,可能会有些疑问,说,为什么要写成一个方法呢?为什么不把总价作为一个属性?为什么呢? 因为这样子做的话就会产生数据。种鱼啥意思啊?因为这个数据是来自于他,乘以他,对吧?也就是说,我只要记住这两个属性,就已经暗含了总价了,但是你又单独的去搞了一个总价的属性出来,就有可能会造成这三者数据不一致。比方说 price 的值呢是一,确实 number 呢是三,但是呢,你这里不知道怎么 给他复制的。五,是不是给了他这么一个漏洞,就导致了这块数据跟这两个东西看上去不一致,对吧?这个数据看上去就像多出来的一样,有了数据勇于你就要必须要考虑数据的一致性,他跟他的数据是不是一致的,这会增加我们的心智负担。所以呢,我不建议同学们, 特别是在初学变相对象的时候去这么去干啊。将来呢,可能会因为某些原因,故意的选择数据溶于,那是将来的事,因此呢,我们把它写成方法,他就不会出现溶于了,你只要一钓这个方法,他会基于这两个数据来进行计算。那么除此之外呢,我们可能还会需要一些别的方法,比方说这个商品目前有没有被用户选择,为什么要记录这个呢?是因为用户选不选他 的界面是不一样的,我们需要这样的一个数据,因此呢,我们还会去写出一些别的方法,比方说像 is choose 这个商品是否有被用户选择,那么在这里呢,我们可以通过这个 choose number 数量是否大于零,就可以非常轻松的来得到。之所以不把它做成一个属性, 原因还是一样的,避免数据用于好。那么同样的道理呢,我们还会去增加一些别的方法,比方说像商品的数量的减少和商品数量的增加,那么都很简单啊,就是就是 number 加加和就是 number 减减。有些同学可能会觉得莫名其妙,你为什么要这样干呢?你明明可以通过一个对象 啊,再传一些参数,然后呢,在对象里边通过这个属性去加加减减就完事了呀,你这么干起什么作用呢?两个作用,第一个作用呢是羽翼更好,这个羽翼他表达的感觉就不如这个 decrease 商品数量减少这么简洁,容易阅读。当然这不是最重要的原因,最重要的原因是因为 我们将来呢,可能会在商品减少或增加的时候加入一些别的逻辑,比方说商品减少的时候,我要判断一下他的选择数量是不是大于零的,大于零才减少,不等于零,那就不能减少了,不然的话就是负数了。如果说我们把它封装成方法的话,那么这样子呢, 我们只需要去改动这个方法,内部由于这个方法的参数和返回时没有任何变化,因此呢,在外部的代码不需要做任何更改,这就是封装的好处,懂这意思吧?你看边写边聊就差不多把这个商品的内这个逻辑啊,基本上都写出来了,他就不会出现我们看到一个效果完全无法下手的情况了。 那么同理呢,我们去可以完成购物车,可以去记录购物车里边有哪些属性,比方说有一些商品的数组,他里边要记录很多的商品,每个商品呢就是一个固执的实力, 也可以呢,去记录一下起送的费用,起送门槛,也可以记录一下快递费,这些属性呢,我们都可以记录。同样的,我们可以写一些方法来计算整个购物车的总价, 那么自然而然就是这些所有商品的总价之和,再加上一个起送费,你可以在这里轻松的去使用各种方式来实现,来个 reduce, 所以很轻松就实现了。当然我们也可以去做更多的信息记录,像什么 目前有没有达到其中标准啊?几个函数对吧?返回个 boar 以及呢目前总共的选择数量,这里是不是用一个累计就可以了?总之啊,我要通过这个例子告诉同学们的是,有了面相对象那个思维过后,我们就有了一个强大的武器, 将来呢,拿到任何一个效果,我们都可以用类似的方式去分析程序,然后作为一个切入点来完成整个程序结构的编写。 当然现在距离我们实现整个效果呢,还有一些距离,如果说你想要听袁老师用面相对象讲解完整的购物页面,那么就一定要来听我们的大师课,大师课免费的来领取就完事了。这个效果其实就是大师课里边其中一节课,我用一个多小时的时间带着大家从零开始,把整个页面的逻辑全部实现, 你就不会告诉你每一句代码是怎么来的,我为什么要这样子写,有没有别的做法,哪个更好,哪个更合适,而且做完这个效果不是说你以后就只能做一个购物车,你只要理解透彻了,你可以实现任何 和想要的效果都是一样的思路。当然大师课里边的东西还远远不止于此,我们有实现效果,同时有讲解,比面试题有讲解前端最重要的核心原理,还有无忧的原码剖析。所以 大师课虽然有些难度,但是你只要一周把看完,可以说你的开发能力会获得质的提升,他是真正能够让你跨越等级的这么一个课程,而且还是免费的。所以还没有领取到的同学啊,可以进咱们评论区第一条,然后加入我们的粉丝群,根据提示领取就完事了。

怎么把这样的视频变成这样?上课啦!今天我们要分享的是固定机械拍摄舞蹈时常用的一种后期技巧,就是锁定主体。 我会讲三个方法,建议收藏。最简单的方法就是在手机剪映里使用镜头追踪,再点镜头追踪选择头,这样效果就出来了。但是这个方法一要买 vip, 二是有时候效果也一般,比如动作大的时候。 针对这两个痛点,我各给一个解决方案,先看电脑版剪映,打开电脑版剪映,把素材拖进来,翻转一百八十度,再拖一遍素材,把它叠在刚才视频的上方,然后把它的不透明度设置为零,选中它点跟踪,对下方视频的这个翻转的人脸进行跟踪, 跟踪完成后,把上方的视频的不透明度恢复到百分之百,效果就出来了。他还能跟着手机剪映跟不住的这种大动 做,但自动跟踪即使是 ae, 有时候也会出现跟不住不丝滑的情况,还是要手动配真。下面我以手机剪映为例,完成这个效果。首先新增画中画,在素材库中搜索十字, 选中第一个素材,然后将它定格混合模式改为变量,这样我们就得到了一个浮在画面上的辅助线。然后找到市民需要开始稳定的位置,在这里打上关键针,然后将需要稳定的主体放在画框的中心,在之后每移动一针, 将主体的位置移动一次,以此类推。这样我们就通过手工开撑的方式完成了主体的锁定。好了,今天的分享就到这里了,关注我,教你去变得真干货,下课!

结构复制咱可以分成两种情况啊。呃,一种是数组的结构复制啊,还有一种是 对象的结构复制,数组的结构复制。这个就比如说我现在定义两个面量啊,大家想一下,我定义两个面量怎么定?定义啊? like 等于十,然后逗号 b 等于二十, 两个漂亮,对吧?啊?那如果说,那咱用结构复制怎么定义啊?等等会咱再说。如果啊,那咱们用结构复制怎么定义呢? 我可以这么定义啊,赖他,大家看啊,写赖他,然后我可以写一个数组,数组中括号,然后中括号里有两个元素,一个是 a, 一个是 b。 啊,但是这两个元素其实是一个刚刚盛名的变量,然后我等于什么呢?啊?等于什么呢?等 等于一等于十吧,等于十和二十的一个数组,大家看啊,右侧是一个数组,左侧也是一个数组,但左侧的数组里面是我刚刚声明的变量啊,赖的声明的变量,这样的话我实现了一个负值。实现一个什么负值呢?就是 ctrl a, 然后 ctrl alt b, 咱看一下七十,我就是把这个数组右侧这个数组的十和这个二十复制复制给了这个 a 和这个 b。 啊,咱们看一下是不是啊?用浏览器打开看一下 f 十二调试工具 看十和二十,这个就是数组的数组的结构复制。那这个有什么用呢?哈?七十的话,咱们这个数组的结构复制用的不多,大家记得啊,这个是用的不多的啊,对象结构复制用的比较多啊, 那那这个有什么用?比如说咱现在想想实现一个功能,我想实现 ab 两个值调换啊,那假如说咱不用那个一 s, 呃,这个,这个五的 es 六,这个九负值呢? a 等于 十,赖在 b 啊,等于二十,然后我现在让 ab 两个值调换,也就是说我,我达到什么目的呢?看是哪了?我哥, a 的时候和 b 的时候输出的是什么呢? a 应该是二十啊, a 应该是二十,输出 b 的值, b 呢?应该是 a, a 的值啊,十,那这个怎么实现呢?我需要有一个临时变量,比如叫 tomp 啊,然后我让那个 tom 来保存 a 的值,那 atm 等于 a 啊,然后呢?我把 b 的值复制给 a, a 等于 b 啊,然后再把 a 之前保存 的这个是 tmp, 负值给 b 等于 tm, 对吧?用一个中间的一个临时变量啊,实现一个调换刷新来输出了二十十,对吧?那我们现在学了结构负值,那这个就变得简单了,比如说现在 a, a 是十, b 是二十, 那怎么实现呢?负值呢? ab 啊,等于 ab 等于 b, a, 对吧?哈哈哈,这不就是把右侧的值 b 的值给这个 a, 然后 a 的值给这个 b, 对吧?然后一输出, a 和 b 是什么呀?咱看一下啊,刷新二 二十十,对吧?啊,所以说你用结构复制,你发现这个调换就特别方便,这是结构复制,数组的结构复制。好,那这个懂了之后再看对象的结构复制啊,对象的结构复制非常常用啊,咱先讲什么是对象结构复制啊?还是定一个 like? 那数组的结构复制,咱就写个数组,对吧?对象的结构复制呢?就是写一个画括号,对吧?这是一个对象,然后我可以写两个属性名啊,没有值的属性名,内蒙和 a 字啊, 等于什么呢?等于一个对象,这个对象呢,有一个内幕属性,等于小明,然后还有一个 a 字属性,比如说小明是个孩子,他只是两岁,对吧? 大家看啊,腹直的右侧是一个对象,对象有两个属性,一个叫内蒙,一个叫 a 式,但是我还可以有其他的,比如,比如说他这个就是 认的啊,这个他的朋友叫小红啊,这就无所谓了,反正这个对象里面他肯定是有内幕,有 a 制的,然后我利用这种对象的方式做了一个复制。复制给谁呀?复制给一个,哎,这个花括号包裹着内幕和 a 制, 这样的话,如果输出内输出 a a, 咱们看一下结果,刷新可以输出小名和二,对吧?小名,写这个名,小名,那这个呢?就是 结构复制对象,哪个结构复制利用对象的语法实现了一个复制的功能,就比如说我现在,我现在,呃,写一个函数,叫什么呢?叫 qreat, 十九点创建一个对象啊,创建一个对象,创建一个什么样的对象呢? like 内蒙等于 等于创建一个学生啊,小明,然后 like you 等于两岁啊,然后 like you, 这是分号啊,然后 like you 等于 小红,然后大家看啊,可瑞,他是丢的呢,他会返回一个,返回一个对象,这个对象我写全写啊,内蒙等于内蒙, a 制等于 a 制啊, strand 等于 frand 啊,大家看,我现在写了一个功能,大家看啊,我写的这个功能可瑞特使用,他可以创建一个对象,叫小明啊,那我现在就可以这样,我调用这个,比如说我现在定一个变量啊,叫 obg, 等于谁呢?等于 可瑞,他是丢灯的括号。那我现在啃瘦点, love you, 我上门代码给他隐藏起来啊,大家知道他是创建一个学生就可以了,咱现在不看他这个方法,就是创建一个学生啊,咱不看他,然后我调创建这个学生的方法,我 直接输出 obg, 我直接输出 obg, 输出的是什么?咱看一眼,刷新,他输出的是这个小明,两岁朋友是小红,对吧?这个 obg 是个对象啊, 但是现在有的时候啊,比如说咱真正开发的时候,这个可以的,石油灯的,他可能是一个很大的一个功能,他可能有几千行,几万上代码,或者是有很多模块啊,或者是一个库啊,或者些工具包啊,咱不管他是什么,反正这个可以的,石油真的他会涉及到非常非常多的属性,但是 我现在就想要这个名字,这句话能理解吗?我现在就想拿到这个史旧真诚的名字,我知道这个史旧真诚有什么,他有班级,有年龄,有性别,有等等等等,成绩有,这有,这个上了 二十年学的成绩都在里面呢。这个使用人的内容非常多,但是我都不关心,我现在只想要到这个学生的名字。按照以前在 ex 五的写法,肯定是我拿到这个 obg, 然后点内幕,然后呢?看一下刷新,我可以输出他的名字了,对吧?这是 es 五的写法啊,拿到这个 obg, 然后 obg 点内幕啊。 但其实大家想一下,我有的时候开发的时候,我都不关心你 obg 是什么,你是什么都不不重要,我就想要这个名字啊,我就拿到第一个名字就 ok 了。那这个怎么写?结构复制内, 这样是不是就像我直接声明了一个变量内幕,然后把这个值拿到了一样?这样这样做了一个结构,然后拿到了他的属性。啊,看起来这个代码就很清爽了,因为我不关心其他的什么朋友啊,什么?我只关心名字,我只想要名字啊。那就通过这种方式 刷新一下,跟刚才是一样的,拿到了这个对象,反这个方法返回对象的一个属性。就是通过这种方式啊,利用结构复制让代码干的变得更简洁。

最好用的加瓦斯佩特工具库在写 gs 代码时,我们经常要操作数组集合、字符串等,自己写会很麻烦,性能也不够高。 瑞瑞库提供了很多对 js 封装的方法,通过引入他可以用更少的代码实现同样功能。但前端技术也变态快,很多新项目都采用前端框架来开发,传统的杰瑞瑞也没有原来那么流行了。这时神器来了, 是一致性、模块化、高性能的加瓦斯佩特实用工具库,提供了这种性能极高的 gs 封装函数,项目必备。 现已开原至跟踏,坐拥四万多的 spa 面试前端的朋友一定要去研究下他的原码。关注我,每天一个脱发小技巧!

如何使用 tiper 啊,写我们自己的笔记,里面的技巧也很多,这样呢,我重点讲一下这八条。首先呢,我们先看我们第一个写的笔记啊, 如果左侧有一个大纲,那我们在看笔记的时候会非常的方便,所以啊,如何显示我们左侧这个侧边栏大纲呢?我们只需要选择仕途菜单里面的大纲仕途就可以了,这样我们点起来 滑动起来会比较的方便。第二个呢,我们说笔记啊,经常会有一些标题,所以说呢,我们想要加标题,只需要输入一个井号,加一个空格,这是一级标题哦,一级 ok, 标题输入完毕之后撬回车,那这呢就是一级标题,二级标题呢哎,输入两个井号加一个空格,那这个呢是我们的二级标题,二级标题撬回车。前面呢,我已经交给小伙伴安装我这一个主题了,所以二级标题是这种形式来展示的。三级标题,那同学们就明白了,一二三, 三个井号打一个空格,这个呢是三级标题,三级标题敲回车,你会发现是二点一,它也是自动编号的,我们写的大码呢,直接这么做看起来并不好看,你要想生成 h 码,大码的话,只需要这么做,三个波浪线,一个二个,三个波浪线,然后输入 atmr, 这会有提示, 可以首选也行,然后敲下回车,然后看加 v, 哎,怎么样,是不是又把我们的大马片段放在这个地方了?同样道理,如果你只有 css 部分呢,哎,你可以只把 cs 选中, 我们可以选择波浪线啊,一二三三个波浪线输入 css 敲回车,哎,这个粘的是 css 部分, 那你如果有 js 呢?同样道理,不让线不让线不让线,然后呢? javascript, 哎,然后呢,教会车就可以把我们的啊 js 给它粘贴进去,哎,然后呢,看加微粘贴,小伙伴会发现啊, 他们里面的颜色呢,是稍微有些不同的。那有了这个之后呢,还有一个我需要给大家讲的,就是,哎,我们这个代码呢,带个编号是会看起来很漂亮一些呀,那可以选择文件菜单里面有个偏号设置,然后呢,我们去找里面一个叫代码块的,然后选择你们的显示行号,打个对勾,把对勾给他选上去。 好,这样呢,改完抽我们再去写的时候就会看到有行号的了,来,我们再次把他们选中 x 解气,走啊,这个我们就不要了,哎,我们把它去掉,走,你走,你看好了啊,布朗线布朗线布朗线 atml 输完之后敲回车卡上加 v 一展贴,怎么样子,我们的左侧呢,会带上我们对应的这个喊号呀。

来吧,学前段同学,我的页面上有一头驴,这个驴呢不是很好看,我把它调整一下啊, 这样就好多了啊,这个效果是如何实现的呢?我们先暂且放一边,我们再看第二个效果,这个效果呢是一个动画啊, 两个小东西在那里转来转去,那么这个效果又如何来实现呢?再看第三个效果,这个效果呢是一个开关, 那么这个开关又该如何来实现呢?看上去啊,这是三个完全不相干的效果,但是呢,他们都用到了同一个技术,叫做 css 变量。我们用一个简单的案例,现在把这个东西认识清楚,这里呢有一段 css 代码,外边呢是一个宽高三百的矩形,然后里边呢是一个宽高一百五的矩形,出来了这么一个效果 没问题吧?效果没问题,但是这个代码的写的并不好,因为既然是一个正方形的话,那么他的宽高一定是一样的。我们这里呢出现了重复的代码, 重复的代码一定会带来维护上的不变,当然这里的代码比较少啊,所以说你还觉得没啥,但是如果说代码一多了,重复的东西一多了,那就会出各种各样的问题, 所以呢把它改造一下。怎么改造呢?使用变量,我们可以像 gs 那样子啊,去定立一个变量,不过呢定的语法是那样的,两个横杠,然后写上变量的名字,比方说 size 后边冒号写上变量的值,比方说我们这里写了三百 px, 这就定立好了这么一个变量, 这下边呢,我们就可以读取变量的值,如何读呢?哇,这是一个函数,里边写上变量的名字,这就把变量的值读出来了,然后下边也是一样,好看一下,效果没问题,是吧? 这就是一个简单的变量定义和变量的使用。其实在 c h 里边呢,这个变量啊,你可以把它理解为就是一个 c h 属性,它的很多特点都跟属性是一样的,比方说呢,这个变量是可以继承的,举个例子啊,假设呢,我们把这个变量呢写到八的里边,哎,那这里能不能用呢?能用啊, 为啥?因为这块还要会继承过来,对吧?所有包体里边的后代元素都可以使用这个变量,保存试一下是不是也没问题?那么我们继续往上写呢,比方说写到这个 atmar 里边呢,他也是一样,表示整个网页都可以使用这个变量好,保存也没问题。 如果说你一个变量需要整个网页都使用的话,你写 atmar 可以也可以用另外一种比较常见的语法啊,叫做冒号入,它的作用跟我们这里写个 atmar 完全一样啊,没有什么差别啊,不过我们习惯上呢,是这样写,保存试一下也没问题。 变量除了继承之外,其他的特点呢,也跟那个普通 cs 属相是一样的。比方说吧,那你全局有了一个 size, 那我们在这里再定义一个 size 呢,那他到底听谁的呢? 说两百个像素,你就把它当成 c s s 属性,你想吧,这是一个普通的 c s 属性,他自己有了,他还需不需要继承,就不需要继承了,对吧?用自己的,所以呢,结果就是两百个像素了, 正常写。那如果说这里写了一个两百个像素,但是呢,我们在 atm 里边呢,用了 style, 又给他写了一个五百个像素,那又听谁的呢啊,你把它当成事业设置属性,完事了,如果说这是一个普通的事业设置属性,你在 style 里边写了,那一定是看这里是吧,这里的优先级是最高的,所以呢,就是五百个像素,懂这意思吧, 没什么困难的啊,非常的简单。那么另外一方面呢,这个变量他除了可以在需要的时候拿出来使用,他还可以参与计算, 比方说吧,这个 pant, 这个 pant 的值呢,要保持是这个尺寸的百分之十,就是尺寸乘以零点一,那么我们这里呢,就可以根据这个变量的值啊来进行计算,比方说我们这里可以写个 call c 啊 cut, 这是个计算函数, 里边写上来自于一个变量 size 的值,然后乘以零点一,下边呢,也是一样啊,保存,保存,你看一下是不是还是没问题。那么这样子呢,我们将来去改动这个 size, 比方改成五百,这些地方是不是全部就跟着改了,不用一个一个去动了,保存,你看一下是吧,盆底和毛巾都跟着改了,当然我们也可以呢,把这个值呢,再弄一个变量出来,比方说盖,那么后边呢,我们可以使用这个盖啊,这样子也没问题,保存,你看没问题。 而且下边这个 it 呢,我们也可以根据这个变量的值算出来,比方说是变量的值除以二,那么我们可以使用 kfc 啊,注意这些运算符之间啊,要有空格啊,然后下边也是一样保存,你看一下,那么这样子一来的话,我们以后啊要更改我们的样式就非常简单了,比方说我们改一个变量二百五十,那么这边所有的东西就跟着改了,这就是变量的用法以及它的作用。 那么我们基于这样的知识呢,来看一些例子啊。好,首先我们看这个例子,这个例子呢是做了一个开关,当然呢你可以用各种 cs 动画过渡,然后呢一些围内去把它完成,但是你做好了之后呢,你就祈祷吧,这个样式千万别改, 因为在这些样式里面涉及到很多的尺寸位置,一旦你动了这个样式啊,就麻烦了,比方说我要把宽度给他改成五百啊,那你看很多东西呢都要出问题了,你看 就出问题了,但是呢,你把它弄成变量就不一样了,比方说啊,我把这些代码呢可能会变化的部分全部用变量来提取,什么按钮的宽度啊,按钮的高度啊,开关直径啊这些乱七八糟东西全部用变量来提取, 那么后续呢,都基于这个变量的值进行计算啊,具体怎么做不是我们这节课的重点,但是是不是应该这么做,那么这样做了之后啊,我们再去改,用这个宽度改成五百,你看一下他就能够很好的适应,然后改成八百,你看是不是很好的适应呢?然后然后开关的颜色我们给他变一下,关闭的时候是红色,打开的时候是绿色 保存,所以非常方便后续对代码的维护啊,对吧?这就是变量的一个好处,怎么样现在清楚了吧?如果说我每天 短视频都对你有帮助的话,那么我要强烈推荐你一定要来看一看我们的大师课,和短视频一样,大师课呢,也是免费的,来领就完事了。但是和短视频不一样的是,短视频呢,讲解的是零散的知识点,而大师课呢,讲解的是成体系的,完整的知识面, 打击的范围是不一样的,像那些最重要,最核心,最值钱,成体系的支持,我没有办法通过短视频来传递。 所以呢,我花了一周时间啊,给大家录制了这么一套课程,这套课程呢,已经帮助了很多同学完成了就业和涨薪,而你要做的,一来免费领取, 第二呢,花一周的时间,把它认认真真的看完,这应该是你职业生涯中最重要的事,你千万不要错过了。所以呢,还没有领到的同学啊,可以进咱们评论区第一条,然后加入我们的粉丝群,根据提示领取,完事了。好,这是第一个例子啊,再看第二个例子,好,这个例子里边呢,出现了两个动画,这两个动画呢,你其他啥也别管,就看这个 小球,他的运动,哎,他的运动都是差不多的,是吧,都是这样子这样子,这样子,这样子也运动的。但是呢,你写动画的时候,那就麻烦了, 因为你写这个 id max 的时候啊,你要定关键针是吧?那每一个关键针里边呢,你是要对它的圈式缝呢进行调整, 那么你写这个代码的时候就麻烦了,因为两个动画的尺寸不一样,就导致了他这个偏移的距离是不一样的,对吧?你别管怎么写,那个距离肯定是不一样的,那么你就不得不去写两个动画,对吧?这个应该是 tiffreen 啊,无所谓吧, 懂得意思就行了。一个是针对大的,一个是针对小的,那么我们页面上现在只有两个,那如果说是三个呢?四个呢?十个一百个呢? 那你要写多少动画?这种情况下我们就特别适合使用变量,你看我是怎么做的,这两个都是完全一样的,那样式没有什么区别,但是我定义的是不同的变量啊,一个六个像素,一个十八个像素,你别管他是啥吧,是不是就用变量来区分, 然后后边做动画的时候啊,我就根据这个变量去算,对吧?那么我就实现了用同一个动画,通过不同的变量值能够应用到不同的元素,就避免了反复的去写各种各样的动画了啊,这是第二个例子。 好,然后再看第三个例子啊,这是一头驴,这个驴呢是用 svg 来画的啊,如果说我们不用变量的话,当我去调整这些东西的时候,我 gs 确实可以监控的到啊,监控呢,也非常方便, 我循环所有的这个 input 元素啊,类型为 color, 颜色选择框,然后给它注册 input 视线,每当它的颜色改变的时候呢,我就可以拿到它的白六值保存看一下。好,我们选择身体啊,你看 颜色指数可以拿到,但是拿到这个值又怎么办呢?我怎么去改这个相应地方的颜色呢?我得去获取到这些相应的元素,然后去修改它的 style 属性,是吧?改动它的颜色会非常非常的麻烦,因此呢,我们需要想个办法让我们的代码开发呢,变得简单。我怎么做呢?你看着啊,我在 这些 svg 的相应的元素位置啊,在写样式的时候,要给他赋予一个填充的颜色,我就直接来自于一个变量,如果说这个变量不存在的话,那么我给他一个默认的颜色,所以说你们一开始呢,看到这个变量不存在,因此呢,看到的是一个默认的颜色,对吧?这头驴。 然后当我们这个音铺成颜色改变的时候呢,我就把这些颜色呢给他的复元数,就这个元素来进行复值,你看这里我拿到这个复元数 horse, 一旦这个复元数有这些变量值了,它里边的这些东西是不是都会继承这个变量,是不是就可以拿到这个变量的值, 用我们指定的颜色值来进行填充了?所以呢,我们这里要写的代码呢,非常简单啊,就是给这个 horse 呢去设置一个变量,怎么在 gs 里边去设置变量呢? sit property, 第一个变量的名字啊, 第二个变量的值,好,咱们来看一下啊,改变颜色,你看这个嘴唇的颜色是不是变了?改变那个眼睛,你看也是这个嘴唇的颜色来变,为什么? 因为他们用的是不同的变量名,那我这里如何来区分这个名字呢?也非常简单啊,你看我这么说,我给每一个音库存呢加上一个 id 啊,这个 id 呢,其实就对应到这个变量的名字的后缀,所以说这一块呢,我只需要去加上这个 id 就可以了,对吧?把这个变量的零设置为这个文本框的值, 到这样一来,我就可以非常方便的来实现颜色的调整了,这种做法在我们开发里面是非常非常常见的啊,当我要用 gs 去改变样式的时候,用传统的方式去设置一个 style 非常的麻烦,要设置一大堆, 我就可以先用变量把那些未知的东西先定义好,然后在 cs 里边把样式给他写好,当我们去用 gs 来控制的时候,只需要改变变量就完事了。好希望同学们听到这节课之后啊,以后在工作当中能灵活的去使用 cs 变量来简化我们的开发,同时也可以减少后期的维护。

像这种城市级别的数字孪生模型,体量够大了吧?用 sngs 做成浏览器,能访问的项目是完全 hold 住的。不会三 d 建模你能做?快交代咋整的? 跟你说了,有模板吗?很简单的,想做多大面积,就在平面地图上框出来,然后城市模型就出来了,就这么简单。你说我不要蓝色科技风,哎,可以换模板呢,换个黑金的, 放个鲜亮一点的,有这么多可以选呢。城市模板是好,但你这园区的定制化,你又不会三 d 建模,怎么办呢?也好办,把平面图放在地上当参考,从模型库里拿现成的模型拼一下。马路、厂房、烟囱、围栏,大部分你能用得上的东西这里都有,还都能改尺寸,改比例。 不光是室外,室内也一样。会议室、办公桌、楼梯扶手、桌椅板凳、门窗隔断,基本上你需要的东西,模型库里都有。再选个大屏模板,套在三 d 模型 外面,蓝的、绿的、科技感的、小清新的,随你喜欢。需要哪个图表咱就留哪个,不需要的换掉这边各种图表、文字、按钮、素材一应俱全,大小、颜色、数据、内容,这些东西你一看就知道怎么改,不用学都能会。 然后你就有了一个从地球到省市区、县园区某一栋建筑一级级推进下来的三 d 数字孪生系统了。如果想要监控,再把摄像头接进来,园区和交管的都可以接。你看整个过程,我们用到三 d 建模了吗? 没有。用到编程了吗?也没有。当然,如果你会三 d 建模,会编程,那么你不止可以用模板,还可以做自己的定制化界面。但如果你是通用的需求,那么 cns 里提供的模板和素材库里的东西就足够用了。

一般你是怎么看英文文档的呀?我是用有道翻译啊,你这就不如我了吧,我都是女朋友做的程序员,还有女朋友是吗?教给小伙伴们非常好用的谷歌插件,叫做沉浸式的翻译。安装好之后呢,是不是一个英文的文档呀?我们只需要右击这呢会多了一个选项, 叫做翻译网页显示原文,他呢翻译的时候呢,上边英文的,下边呢给我们翻译成中文,这样的话我们可以出对比的来翻译看结果。哎呀, about note g s 是关于 note g s。 当然了,这个翻译啊,还有一个更强大的地方,打开我们这个扩展工具, 找到沉浸式翻页,里面是有一个翻页很低的 pdf 文件,我们只需要呢把我们这一个 pdf 文件呢拖进来,稍等一下喏,有没有它里面可以有相关的一些设置啊?我们可以把这个异文啊写 款式样式给他改成一个高亮,改成高亮就看到我们是种黄色的底了,也可以改成一个分割线的哎,或者马克笔的都可以。改完之后就变成这种模式了呀,甚至呢,往下走着走,你看他还可以点击 哎,是不是在返回顶部啊,这种翻译比人女朋友还要快一点吧。那我女朋友能给我读出来。好吧,那我们下一次再去讲一个读出来的插件。

好,这里呢,我用一节课几分钟的时间,让你彻底搞清楚在 view 里边使用样式的几种常见做法。首先呢,它自然就是在组件里边直接写一个 style 标签,然后把所有的样式给它写到里边去。 这种做法呢,看上去可以实现这个效果,但是呢,这样做容易导致内名冲突,因为将来呢,我们组建一多,你保不齐这些样式的名字有冲突了啊,管你使用什么样的命名规范,都不是一个特别稳妥的方式。 那么这里应该怎么做呢?我们可以给这个 style 元素啊,加上一个属性,叫 scout, 当然了,不要忘记啊,这些东西啊,全部都是交给构建工具去看的,并不是放到浏览器里边执行的,没有哪个浏览器能够认识这个玩意, 不要说这玩意了,他连这个玩意都不认识,还有这个玩意是啥也不认识,所以说一定要记住工程化的知识哈,这些玩意都会经过编译 变成正儿八经的 g s 代码,这些 c s 代码呢,会被提取到一些文件里边去。好,当你加了这个 stop 之后啊,我们看一下效果,效果呢,仍然是没问题,为啥这样就可以避免内鸣冲突了呢?我们来看一下这个 vivo 脚手架,他做了什么事情。 从这里可以看到啊,当你给这个组件加了 scopter 之后啊,他会为这个组件里边的每一个元素加上一个特殊的属性。这个属性啊,他能够保证不同的组件他是唯一的。 这个组件里边的所有元素,你看,里边的哀元素也被加上了这个特殊的属性,而且值呢,也完全一样,他要干什么呢?他加上这个特殊的属性,就是为了给这个组件里边每一个选择器啊, 给他带上这么一个属性选择器。你看这个类选择器,他被带上了一个属性选择器,那么这样子呢,就非常精准的选中了这个组件下边 这个 starrate, 他就不会对其他组件造成影响,因为其他组件这个值不一样啊,这个选择器选中不了他这个选择器,他只能选中这个组件里边东西,懂这意思吧? scops 这个单词的意思呢?就表示在某一个范围内的意思,那么这些样式呢,都被限制到了这个组件的这个范围内。 好了,有朋友说我不仅仅要用它,我可能呢,还想在主线里边使用一些欲编意器,像什么奈斯啊,萨斯啊, style 斯啊,那么这些玩意如何在无忧里边做呢?其实啊,无忧可的呢,他已经帮你考虑好了这一点, 你要做的就是去安装这些预编仪器就够了。比方说吧,我们要使用 sas 作为预编仪器,那怎么弄呢?安装两个东西, sas 和 sasloder 啊,这是 sas 的核心库,这是 sas 呢,跟外派的结合的库。因为我知道 view 颗粒啊, 它里面就用的是 vipad, 你把这两个库一安装啊,就可以直接使用了。那么具体怎么使用呢?你只需要给这个 style 做一个标记啊,叫 number, 给他设置为 size 就完事了,这里边就可以使用 size 代码了。比方说我们把这个玩意给他加到这里来去啊,这个玩意也给他加进去。好,咱们来看一下效果啊,行不行? 你看是不是也没问题,能够正确应用进去,当然了,你就可以使用砂石里面各种神奇的操作了啊。这里顺便说一下啊,就是如果说你这个 style 标记的 scout, 由于他每一个选择器后边呢,都会带着一个属性标记,所以说呢,你这个欠套呢,其实就没多少意义了啊,就不用写欠套了, 因为写签套的目的不就是为了避免重名吗?那现在不会有重名问题了,那你可以不用写签套了,没问题吧?好,那么就剩最后一个问题了,有些公司呢,他希望把这个样式啊,不要写到单组件里面去,每个组件单独形成一 样式文件,专门来写这个组件的样式,因为有可能这个样式比较多,写到单文件组件里面呢,可能会使得这个代码呢比较臃肿,希望单独提出去。那怎么提呢?非常简单,一提就完事了。比方说啊,我把这个代码复制一下 好,然后在这里呢,新建一个文件,给它取名为同名文件吧, starrate, 当然你取什么样的名字都可以啊,叫 c s s, 如果说你是萨斯的话,那就是 s s s s 啊,都行了啊, c s s 吧。然后呢,把这个样式呢给它转过来, 好把样式提成了文件之后啊,我们需要在组件里面去引入他怎么引入呢?我们可以写一个 style 元素,还是熟悉的配方,是吧?然后他提供了一个 src 属性,可以引入,这个 css 好保存, 你看是不是又出来了。但是呢,这样一来呢,他又出现了这个问题,就是没有特殊属性了,容易导致内名冲突。那怎么办呢?可以再加上 scout, 你看是不是又出现了啊?这些呢,都是在无釉里边使用样式的几种常见做法啊,你们以后公司到底用啥?那我不知道,大概率呢,都是这几种,如果说超出了这几种的范畴,那比方说要使用什么 pose css, 再比方说要使用什么 css 啊?使用一些别的方案的时候呢,就需要一些工程化的知识了哈,需要自己去做一些配置,都是可以实现的。因为整个这个无油颗粒啊,他就是用 vipad, 你如果说懂 vipad, 那就无所不能了,想咋玩咋玩。不过呢,常见的方式呢?就这么一些啊。

如何用剪映把这样的音乐结尾处理成这样?上课啦!昨天假发,让我加一个十秒的混剪。十秒的混剪不难,可十秒的音乐去哪找呢?我好不容易找到一首合适的音乐,结果在第十秒的时候他没有接触点。 如果我这样直接切断,听起来很不舒服,加一个键出 又太仓促。我之前分享过加音效的戛然而止,那我们今天再分享一个不加音效的玩法。首先打开 au 不不不不不不不 打开剪映还是刚才那首音乐,我们找到想结束的位置,把后面裁掉,再随便取一段音乐,把音量降到零时长,大概保留两秒,听在刚才音乐的结尾,把最后的这个尾音切断,最后同时选中结尾的这两个小片段,右键他新建符合片段选中, 用它在右侧的声音效果里选麦霸,把这两个参数都调到五十。下面神奇的事情要发生了,注意听!嗯,是不是又学会了关注我,教你身边的真干货下课!