s 三角本,也就是 a c t l o n s c r i p t 三点零的简称,是 flash 制作软件的专用角本语言。现在虽然 flash 软件已经升级为 animate 软件,但是仍然保留了对 s 三角本的编译功能。那么使用 s 三可以用来做什么呢? 这里简单列一下用 s 三制作过的软件类型或功能。普通的互动课件本身 admit 软件就有演示文稿模板, 可以很便捷地制作课件,如果能掌握一定的 s 三脚本编写,则可以制作效果更好的教学课件。 多点触摸软件触摸屏是多媒体展馆中比较常见的展示设备,正常支持多点操作。 rs 三同样可以开发多点触摸的功能。安卓及 ios 设备软件安卓和 ios 是目前最常用的两个移动设备 系统,在 s 三开发内容中,同样有这两个系统安装包的导出设置,也就是使用 s 三可以开发运行于安卓及 ios 设备的软件。只是 ios 系统需要用苹果官方证书,申请和使用都比较麻烦。专用视频播放软件 视频播放软件是手机或者电脑中比较常见的软件,特别是多媒体展馆中需要播放各种视频,但是很多情况下对于视频播放是有要求的,比如需要在多个视频中进行选择 或者其他特定要求,这时就可以使用 s 三进行开发。制作。专用的视频播放软件。文件管理工具使用 s 三开发时可以选择 a 二平台,这时对于系统的访问权限会高很多,就可以完成一些比如 文件复制、移动删除或重命名之类的操作了。图片批处理小工具和文件管理类似,使用 a 二平台同样可以直接读取本地的图片文件,并且处理后存储到指定路径下, 利用这个就可以制作如批量压缩图片、批量合成图片、批量加水印等特殊的功能开发。当然,像这些功能都已经有软件能实现了 其他功能使用 i 三除了可以实现上面那些软件或功能外,还有像是通过摄像头检测、人脸检测、画面动态、 视频加密、 mid 音乐播放、录音并保存等等各种各样的功能,都是在工作过程中发现并解决的需求。总之, s 三作为被使用了十几年的脚本语言,仍然有许多 功能还未被涉及。所以,一种编程语言是否有价值,不能只看市场需求,而是要看它能带来什么价值或解决的实际需求。以上仅为个人经验供参考。
粉丝1035获赞1.6万

给他进行一个哎名字的添加呀,看到没有?那实力名称。那比如说,那这个的话呢?我给他添加一个叫什么名啊?播放啊,比如说播放可以吧? 嗯,好,那这个呢?啊也添加手里名字叫什么呢?叫做停止。嗯,好嘞,停止,这两个现在是不是都有名字了?嗯,好嘞,那有名字啊,我们该怎么做呢?哎,我们是不是要添加命令到这两个上面去啊? 好了,那我们这个地方的话呢,两个元件已经做好了是吧?嗯,好嘞,那我们这个地方的话把这个可以稍微的给他先删除掉啊,这个的话呢是我们的动画, 对吧?来起一个啊,这是动画动画城。好,上面的话是我们的按钮城。那我们现在的话呢,给他添加一个片段啊,让他怎么样啊?来控制我们这个。哎,播放还有停止啊? 好,那怎么来播放空中呢?好了,首先呢我们选择第一针啊,因为我们是不要从第一针开始来控制他,对吧?那比如说你要选到中间的话呢,我们看一下一会这个效果我们来做一个区分啊。嗯,好,那我们同样的话打开我们的一个动作, 对吧?找到什么样?哎?找到我们的代码片段对不对?嗯,刚才我们看到这个的话呢,是不是我们的一个哎,停止的一个代码呀, 对吧?哎,停止的一个代码还记得吗?好了,那停止代码的话刚才我们就不用了啊?为什么呀?因为我们现在的话呢,不是说直接让他停止, 不是直接让他停止啊,而是什么呀?而是说我们要通过我们的按钮啊来让他停止,对吧?那所以的话呢,我们这个地方的话呢就,哎呀不能这样去添加了,那该怎么添加呀?我们看一下同样我们打开动作,我们代码片段来讲的话呢,是不是要通过点击事件呀? 能练吗?那所以我们这个地方呢是直接让他停止了,没有任何的一个点击效果,下面的话我们需要啊,给他指定给他派一个任务,说我点击你的时候, 哎,你才能够让他停止,我点击你的时候让他播放他属于一个什么样的哎,属于一个事件处理啊,我给你派个活 对吧?你在这看着啊,当我哎叫你的时候你让他停,当我叫他的时候呢?让他开始,这不应该是一个事件呀,是吧,那我们就需要用到一个什么呀?事件处理函数,看到没有?事件处理函数 啊,然后我们点开下面还有什么啊?哎,第一个我们看到啊,单击指定对象会执行包含您的自定义代码,看到没有?上面一句话啊的函数,那我们就用它啊,用这个啊,就说我们用这个四键 啊,可以控制我们的一个单机的效果啊,那怎么用呢啊?我们看一下你双击看到没有啊?此动作呢要求在舞台上选择一个对象,那也就说你把这个命令添加给谁呀? 是不是得要先选择呀?所以的话呢,我们这个方需要怎么样?先选择这一个,看到没有?先选择这一个原件,是播放原件 啊,先选择播放原件,然后的话我们再选择这个代码片段,我们再双击,你看他是不是没干就把他添加给我们了,看到我们看一下啊,那我们这地方可以隐藏啊,你看这地方是不是前边播放 看到没有?那刚才我们给他起的名字啊,给这个播放按钮起的名字是叫播放,看见没有?就是把这个事件把这个事件给这个播放了,这块能理解吗? 啊?这款能理解吗?朋友们来看一下啊。是不是我们要给这个播放派一个活让他里面啊?哎,点击的时候呢出现哎播放效果看到没有?那下面你看啊,开始您的自定义代码 看到没有哎点呢此代码呢为输出面板中显示已单击的鼠标啊,所以这里边的话呢我们就开始写代码了是吧,那写什么呢?哎其实这个名字是不是是不是起反了 啊?这本应该是点击让他停止对吧?先点击停止,然后的话再点击播放啊,是不是这样?那个名字是五十七 反了,那我再重新启一下吧。啊他呢是这个停止看到没有哎,我们用拼音啊,是停止看到没有,然后他的话呢应该是一个哎播放。嗯 这个地方不好意思啊,给大家起反了啊,那我们重新起一下就可以了啊。好,那同样的话呢我们把这个线删除掉啊,选择他,这是我们的停止对吧?然后呢动作啊带码片段,我们找到这个四件双击进来。好嘞,那在这里边的话呢我们给他起一个名字 啊,携带吗?这里面的话呢我们是不要控制他。控制他干嘛?是不要控制他的播放和听字 啊,今的话我们控制的是这个动画吗?这个动画是不是一直在动?那么控制是谁啊?是不是控制这个什么呀?时间线看见没有?时间线滑过,然后呢?他出现动画时间线停止是不是就停止了?所以的话是控制这个 时间线的运动啊,那我们看一下对吗?现在的话是停止这个按钮,看到没有给停止按钮添加我们想要的一个代码片段啊,那怎么样呢?怎么写啊?停止是哪一个 还记得吗?是不是刚才我没想到写的那个 stop 二 t 啊? op 对吧,然后呢?哎,括号啊,然后的话我们的一个封号最后一个封号结束啊。啊,注意啊,同学们这地方写的时候呢一定要怎么样啊? 对,一定要在英文状态的输入法下才可以。我们添加的符号括号啊,都必须是英文状态下好吗?那么写完以后的话我们回车看一下,预览一下,那么点击停止,你看是不是停了? 哎,是不停了,但是啊同学们你看我一开始是在这个三十针的时候啊,那我们在一开始这个时候点的时候有用吗? 啊?是不是说前面这段能控制住吗?是不是控制不住?看到没有点了是不是没停?为什么呀? 啊?因为我们刚才刚开始的时候这一针是不是控制不住他,是吧,所以的话呢,我们如果想让整段能够控制的话呢?因为我们现在这个针在这个地方控制,所以前面这一段是控制不住的,后面这一段可以控制 啊,那所以我们如果想要让整段都能够控制的话呢?该怎么办?这不应该把这一针放在第一针呢,把这个命令放在第一针呢?能理解吗? 嗯把这一针放在第一针呢?哎,所以我们这里方的话呢给他稍微移动一下啊,所以我们添加的时候该怎么办?哎,把它呢放在第一针看到没有?放在第一针,然后的话对他进行一个动作代码的一个添加双击。嗯,给他进行一个添加到第一针啊,好给他清理一个,怎么样? 哎? stop 停止,对吧? s t 啊? op, 然后的话呢? st, op 啊,然后括号,然后冒号,封号,封号结束啊。英文状态下 好, ctrl 加回车我们看一下。那这样的话呢,你看是不是就可以了?让他他一开始自动的循环播放,对吧? 啊,那这个时候就看我们的心情了,对吧?心情好的时候呢,我就让他多动一会,心情不好的话我们就点击停止,看到没有就让他随意的停止,你不管在哪一针,只要我点击他就停止了, 能进吗?但是我们现在播放能播放了吗?是不是播放不了?因为我们还没给他添加命令啊。好,那我们现在的话是要给他添加一个播放,点击播放的命令,对吧?点击播放怎么添加?是不是跟刚才一样啊?选中他对吧? 然后呢?哎同样的话这是我们的播放啊。啊。打开动作,打开代码片段,是不还是这个事件呀,还是这个点击事件,对吧?双击。那你看啊,同志们这个地方,现在这个地方是不是换了这个名字是不是换了?给怎么样?给播放这个按钮添加一个哎?命令, 点击他让他进行一个播放啊,你上面是不是有这个命令啊?他两个命令是在一块的,因为我们都是在第一针呢, 看到没有?哎,是不是都作用在我们的这个啊,阿根生,哎,这个啊,命令的第一针, 嗯,这样的话是不是能够对整个的一个代码进行控制呀?好吧,那属于上面这个,我们就不用动他了啊,下面的话我们可以,你看这地方有个线,看到没有?可以合并啊?看到没有,单击他可以合并,可以折叠啊。好嘞,那下面的话我们看一下啊,那是不是要把这个代码也改一下? 嗯,改成什么样?把这一块可以删掉啊?哎,那播放什么呀?这普洱对吧?普洱播放啊, p l a y 对吧,然后括号封号 啊,也是在英文状态下好吗?哎,单击啊,我们的停止是 stop, 停止单击播放是不累。播放啊,我们给他 ctrl 加回车,我们看一下啊。好,那我们现在的话呢,是停止是不停止了,然后呢播放,哎,是不是开始动了? 嗯啊,那这个效果我们是不是添加上了?哎,通过我们的代码片段来控制我们的一个动画的运行啊,那么我们看到很多的一些影片或者动画片是吧,动画上的一些按钮是不是都可以这样添加呀?嗯,通过我们的一些事件啊,来控制他的一个啊。播放还是听着。你要 我们观看影片,我们看看电影啊,看电影的话是不是有那一个播放按钮,还记得吗?对啊,你说我现在要去吃饭了,我要上去上厕所了,我先暂停一下, 哎,是不?点击一下暂停对吧?然后回来接着看播放,哎,就这样的一个代码控制,现在能够理解我们的网页当中看电视剧啊,看电影啊,啊,让他停止啊,播放啊,停止啊播放啊,是不是这样一个效果?嗯,都是通过我们代码来控制的啊, 好玩吧?嗯好嘞,那这个的话呢,就是我们今天给大家讲到的关于我们那个代码的控制的方法啊。 嗯,通过片段来控制我们的一个动画的运动啊。嗯,然后我们重点的话呢,需要大家了解的是我们代码的一个结构,千万不要写错 了啊,多余的你不要删,不要去删除好吧,其他的不用动不要改,这里面呢你改一个字母他就不行了,非常的严谨好吧,哎,我们要改的话只能改我们需要改的地方,我们能改动的地方,其他的地方你一概不能动,一连一个标点符号都不要去动, 好吧,不然的话这个代码就出不来效果了啊。而且呢我们输入的这些代码必须全部是在英文输入法状态下, 包括我们用到的括号也是我们的封号啊,也是啊,必须是英文状态下好吗? 嗯,而且我们要注意啊,添加的这个啊片代码片段这个图层呢,一定要在我们的第一针,如果你在中间的话呢,那么他前面这块就控制不住了啊,放在第一针可以控制整个,哎,整 个动画啊,如果你放在中间的话呢,那么前面这块就控制不住了,他是从你放着这个位置开始往后去进行执行这个代码的。 嗯,这款能够理解吧。嗯,其实的话呢,咱们大家啊刚开始学呢,可能会感觉比较难一点啊,那不过啊,等你自己操作一下。哎,理解了你们的意思以后呢,对他就更能能够更加熟悉了啊, 那包括我们代码片段这一块的话呢,里面有很多很多的事件啊,我们后面的话呢,也会带详细的去讲,明白吗?嗯,他包括啊,我们还有后后后边很多的像鼠标悬停啊,我们的鼠标离开,鼠标滑入啊, 每次按键呀,这会慢慢来讲,包括一个底层的原理,我们也会给大家去讲一讲的啊,那今天我们这节课呢,哎,就是来让大家呢来感受一下我们代码来控制我们动画的一个效果啊, 至于他的原理的话,我们下节课再给大家进行分析,好吧,这里边那个效果呢,咱们回去呢自己练习一下啊,包括我们刚才看到的什么这个啊, 时间轴的一个啊,停止效果,包括我们刚才给大家用到的这样的一个动画单机的一个四键啊,控制他的一个播放和开始。 嗯,好吧,同学们,那咱们本节课的话呢,就给大家讲这么多,回去的话呢,练习一下我们的蛋白片段,还有我们的动作啊,做一个小动画出来,好吧,然后的话我把这个呢给大家进行一个啊,这个保存, 咱们大家也不要忘了对他进行一个保存,好吧。嗯,好,这是我们的代码片段控制动画啊,代码控制动画。嗯, 好嘞,那点击保存,然后呢我们这个再导出一个影片吧,好吧。嗯,导出一个影片,我们这个啊可以看一下。 哎,刚才我们导出的影片导出的位置 啊,导出的位置不在这是吧?导出第十二集啊,导出的位置导错了。 好嘞,那我们导出完以后,保证完以后咱们大家哎就可以 去练习了,好吧。嗯,停止播放,嗯,停止播放啊,好,那我们本节课就到这了,朋友们,拜拜。

大家好,今天给大家讲一下范型委托,范型委托顾名思义就是使用了范型的委托类型,那么我们使用范型委托到底有什么好处呢?就是可以剪发我们委托的使用。 我们简单的回顾一下使用委托的三个步骤,第一步定义委托,第二步是实力化委托,第三步就是执行委托。那么我们泛行委托要解决的就是定义委托, 在编写代码中,我们会根据方法的签名定义各种类型的委托,但是如果我们使用范型委托的话,那么我们就可以不用再 自己定义委托,这样就提高了我们使用委托的效率。 系统为我们预定了两种类型的范型委托,一种是 action, 一种是 funk。 action 委托针对的是没有返回制的委托类型。 funk 委托呢,是针对的有返回制的委托类型。 action 委托呢,一共有十七种,他的参数个数分别是从零个一直到十六个。方格委托呢,同样的也是十七种,他的参数个数也是零个到十六个 啊,然后他的每一个后面都会有一个返肥值的类型,因为他有返肥值吗? 好,我们再来看一下系统预定委托的帮助。好,我们现在看到的是 action 委托的定义啊,这个呢是无参无反的,那我们再看一下有一个参数的, 在我们的括号里有一个参数,然后在方形的这个间括号里面用个 t 代表了它的类型,它的返回值是 word, 就是无返回值。再看一下有两个参数的 t, 一就是我们的第一个参数的类型 t, 二是我们的第二个参数的类型,同样的是没有返回字的,以此类推。这边呢一共有十七个定义, 那我们再看一下 funk 这个委托的定义,这是没有参数的, funk 在括号当中是空的,但是它有个返回值的类型, 同样的它一共有十七个,我们随便看一个 这个监控号里面有三个的,它其实是有两个参数, t 一和 t 二,最后一个呢是它的返回值的类型, t 一是第一个参数的类型, t 二是第二个参数的类型,而我们最后一个呢是返回词的类型。好,我们现在在代码中来使用一下放行委托, 我们使用放行委托的话,那么这个委托的定义就可以删除掉了。 现在我们使用发行委托来间接调用这个 ci 这个方法,我们观察到它是一个没有参数也没有返回值的,那么我们可以使用 action, 然后直接实力法指向这个方法 say high, 我们可以运行一下。啊,成功的调用了这个方法, 那如果我们希望调用的是下面这个有参数的这个 c i 方法,只需要将这个类型改变一下, x 型的,加一个监控号,然后里面加上它的参数类型。 street, 这个时候他指向的还是 c 开方法,但是刚才指向的是这个没有参数的,现在指向的是下面这个有一个参数的,所以在调用这个委托的时候必须要给他一个参数。 好,我们来执行一下。好,没有任何问题。 那如果我们想要调用下面这个有参数有返回值的这个 方法嘞,我们就需要使用 funk。 注意一下,我们第一个参数是 double 类型,第二个参数也是 double 类型,第三个是我们的返回值,依然是 double 类型。好,然后我们定一个变量名,指向我们的方法名 id, 然后我们来使用这个委托, 一点二,二点二,然后返回值给他一个 输出一下 f 五,一点二,加上二点二等于三点四,没有任何问题 啊,在使用 funk 尾刀的时候,关键要注意一点啊,这是第一个参数的类型,这是第二个参数的类型,然后最后一个呢,不要忘了就是我们返回纸的类型。那么我们最后再实验一下这个乘法的这个方法的调用, 它的第一个参数是 decimal, 第二个呢是我们的 inter 类型, 它的返肥值是一个 decimal 类型 啊,这个是 我们指向这个 i 的方法呢,它就是汇报错了,因为这个方法和这个委托的类型不匹配,我们给它改成乘法就 ok 了。 反飞值,我们将它改成 decimal。 第一个参数是我们的 decimal, decimal 呢,我们使用的时候常量必须要加一个 m, 然后第二个参数,它是一个 inter 类型,我们直接运行发现它有报错,我们必须要将它改正过来。比如我们这里改成一个二,然后 f 五之型 啊,他的结果一点二乘以二等于二点四,没有任何问题。 今天这个范型委托我们就讲到这里,他剪发了,我们使用委托的一个步骤,提高了我们使用的效率。

呃,今天呢我们来学习 react, 关键 a react 框架呢,是当前比较主流的前端框架,那么呢它比单纯的使用这个 h t m l c s s jamascript 去开发这个 web 前端应用呢,要更方便的多 它它的话它集成了热加载,还集成了这个呃动的,呃动态更新,使页面的话, 呃是单页面应用的话,呃升升了一个级别,呃然后呢开发呢,也比较省力, 呃这个就是这个页面呢,是这个 ant design 的这个页面,这个是一个 ui, 这一个 ui 框架, 那么我他这个 ui 框架呢里面就,呃就简介到了,呃怎么去搭建这个 react 框架? 那么 react 框架搭建好了以后,按照它的指引搭建好了以后呢,那就可以引入它的这个 ant ui 框架。 react 呢,它单独有一个这个官网,呃单独安装这个 react 也是可以的,那就是,呃不一 入这个 and 底底下,但是如果是单独安装这个 react 呢,它它是没有这个 ui 效果的, ui 的话就得自己去去写,那就多了一道工序开发,开发的时候呢, 就要多专注,又要多一道工序去专注这个 ui 的这个设计,那么有这个 ui 框架呢,我们就可以省了一道工序,不用去再去管这个 ui, 然后呢就可以把 把这个经历呢全部集中在这个业务上,业务业务需求上去开发, 嗯就省了很多的很多的利。这个 react 的关价呢,它是呃脸书 呃开发出来的一个开元官家,那现在呢?他这个脸书的话,呃 facebook 的话,他改名了,改成 matter, 源于做呃公司了,他就是这家公司 开发出来的开源项目是目前市场上呃主流的,呃前端 web web 应用框架,那前端 web 应用框架呢?还有一个 studio view 和 react 这个框架呢?它都是基于这个 webpack 啊,这个打包工具 啊,智障啊开发出来的。那么这个打包工具它有什么好处呢? 呃这个就是 webpad 打包工具,呃它它这个打包工具的这个好处呢?就是它 他有,他有很多的这个插件,其中的一个插件就包括呃热加载,那么还有这个他可以把所有的小块小块的这个模块把它给打包打包,打包成这个 呃编码,呃把这个 javascript 语言编码,把它给编码打包。呃有这么的一个好处, 压缩,在再把这个代码的这个代码量给压缩小,同时同时编了码,那这样的话, 这样的话这个呃你的应用的话就一个是一个是在加载的时候就比较省流量。二一个的话是呃起到了一个保密性, 那这个呃 react 和这个 webpack 呢?呃都是基于这个 note 这些 s note g s 这个框架,这个框架区开发出来。那 note g s 呢?它只是我们只是在呃前端的话,只是在开发过程中会用到,呃会会用到。这个,呃 note g s, 呃他已经是集成上去的。这个,这个呃 react 在在创建的时候, 我们在创建这个脚脚手架的时候,那它就它就是集成在这个 note g s 嗯之上的。然后呢这个 note g s 呢?它是这个 呃后端,后端可以使用它,它是跨平台的,它可以安在 linux 上,可以安在 windows 上,那么可以可以是这个脚本,呃服务器上的这个脚本 当做脚本语言去用,在运维的时候去使用它,那也可以当做这个 web 开发的开发工具,它可以开发这个 web 接口 作为后端语言开发开发。呃, y v p i 那么同时呢它还可以提供这个给前端。呃,去去开,在开发前端 的时候使用,那么它它就是配合了这个 y pack 啊, y pack 就是基于它去嗯去进行代码的热加载打包啊这些功能。 呃,那现在呢?我们 我们那个看一下,我们从我们那个 下载一下。嗯,新这个这个朋友们没有这个环境的,自己电脑上没有这个 note g s 环境的,呃,得自己安一下。那 它这里呢?有个 download download node, 呃,点一下呢它就会下载了,那我呢已经是这个环境已经是搭好的,那我就不不下载进行安装了。没有这个环境的呢, 就没有这个环境的朋友呢,就下载安装一下。呃,这个环境安装好了以后呢,那么我们就切回到这个 and design 这个光吧。啊,那个我们 直接直接就按照他的这个说明啊,去去这个创建 raft 这个脚脚手架 a webpack 就不用去安装了,他已经你在创造创建这个 react 脚手架的时候,他就已经一起就集成集成进去了。 呃,那好,那我们现在开始点这里的开始使用。呃,大家看一下这个网页,他的这个官网的这个地址,地址是这个 ant 杠 design ant group 点 com, 或者是或者是大家在这个百度里面直接搜这个 ant design 也可以找得到 啊,它的这个官网,它的地址就是地址栏,这个就是它的官网。那 node gs 的官网的地址呢?是这个 node gsd 挖机 啊,好,那我们现在切过来 and the design 的光吧,然后点开始, 然后开始以后呢,他就进入到他的这个组件页面,那么我们现在呢要到他的这个教我们怎么布置环境的这个页面,那么就点研发 右上角的这个菜单,有的鼠标这里研发,然后把它给把鼠标给移到这个在 create react a p p 中使用啊,点一下啊,这里他就教就教我们怎么去搭建这个脚手架。 react 的脚手架,那这个 creat 杠 react 杠 a p p 这个呢就是,呃, react 的的官方脚手架啊,我们使用这个去搭建一个脚手架。 呃,那么我们的这个 note gs 安装成功以后呢,它就会自带一个 npm, npm 呢?它是, 呃,它是包管理器,它是 note g s 的一个包管理器。呃,它这 这个 npm 呢?这个包管理器呢?它管理了,呃,呃,很多这个开源的。呃这个组件,然后呢我们 呃这个的话,它官方呢是建议,建议呃大家去使用这个 p n p m 去安装,当然 n p m 安装的话, n p m 去搭建这个脚手支架的话,呃也是可以的啊,当然是 p n p m 的话会更好, 那么它这里呢?呃,有有这个指引, p n p m 的指引,可以打开看一下 啊,点一下它就切过来了,切到这个 p n p m 的这个这个官方网页, 然后呢他这里呢?把点进来以后呢,他这里会教你怎么去安装。 呃,没有的朋友的话呢,可以直接就他这里使用 power share, 我们在这个运行窗口里面打开 powershare, 然后把这一条,把这条给复制到这个 powershare 里面回车,那它就自动安装了,它就会自动给你按键这个 p n p m 这个包管理器, 它是这个包管理器呢,是 n p m 的一个升级,一个一个扩展,扩展的工扩展包管理器,在 n p m 的基础上扩展了一下,扩展了一些功能出来。 呃,我是安装过的,所以的话我我就不安装的,然后还 是切回来,切回来以后我们找个文件夹,找个文件夹呢,在这个文件夹下面啊,去,去啊,搭建我们的这个脚手架。 好,我们在这个文件夹里面啊,打开这个啊,这个终端,打开 mini 行, 呃,用管理员的这个身份去打开, 就是按住,按住 ctrl 键点一下这个加号啊,就以管理人员身份打开这个终端这个命令啊,好,我们这个是管理 身份的,把这个关了,然后呢接回来这个页面,然后把它的这个, 把加它的这个这一行给复制一下,这一行你,你复制一下,复制到这个 mini 行里面,那么的话 他就会去 p n p m create create, 干 a p p, 那么他就会去 创建,创建,用脚手架去创创建一个初始的这个模板出来,那么这个 模板的话,它使用的语言呢?是 types crit, 那么我们这里的话,嗯,我一般的话是习惯用这个 types crit, 那我就不要后面这一句啊,直接 啊,这个这个地址还没有,这边掉了,我想切一下。

接下来我要讲解的内容叫做 effect, effect 在 n g r x 的工作流程当中呢,它是用来执行副作用的, 接下来我们要提出一个新的需求,我们要根据这个需求来学习这个 effect, 这个需求是在页面当中我要去准备一个按钮,当点击这个按钮的时候呀,我们要让竖直的这个相加操作进行延迟。好,那么在这个需求里面他有一个副作用啊,就是延迟。 接下来呢,我们先切换到编辑器当中来做一些准备工作。首先我们去找到这个组件模板,在这个组件模板当中呢,我们来添加一个按钮,在按钮当中我们就写上延迟相加。好, 那么接下来我们去给这个按钮呀去添加一个点击事件,当这个点击事件被出发的时候呀,我们去执行一个方法,那么这个方法的名字呢,叫做 a sink 下划线 increment。 好,那么接下来我们先到这个组建类当中, 把这个方法定义出来,省着这个地方呢报警告。好,那么我们来到 app 点 com 的那点 ts 这个文件当中,在这个文件当中呀,我们来添加这样的一个方法,那么接下来我们是不是要去触发一个 action 来做这个事情啊?因为在组建当中,我们要通过触发 action 来改变这个状态, 既然说你要触发 action, 那你首先是不是得有这样的一个 action 呢?那么接下来我们找到 stop 这个文件夹下面的 actions 这个文件夹,我们找到 contact their actions ts 这个文件。在当前的这个文件当中呢,我们使用 x port 的关键字啊,导出一个长量 长亮的名字呢,我们就把它叫做 as think 下划线 increment。 好,那么它的指呀,就是 creative action, 然后呢,这个标识我们也把它叫做 as think 下划线 increment。 好, 那么我们保存这个文件,接下来我们就可以回到这个组建类当中来触发 h 了。在这个地方呢,我们找到 this 点儿 stop 点儿上 dispatch 方法,那么在 dispatch 个方法 当中呢,我们去调用 a think 下不见 increment 这样的一个 action。 好,那么在这儿我们写上 a s y n c 下滑线 increment。 好,那么我们去引入它。那么现在这个 action 是不是已经被定义好,已经被出发了,那么接下来我们是不是要去接收这个 action 呢? 那么这个 action 应该被谁接受到呢?他实际上应该被 effect 接受到啊,那这一点呢,就很像我们在 rax 当中去学习 radax kansaga 一样啊,我们要通过 rax kansaga 来接收这样的一个 action 去执行一部操作。只不过在安格勒当中呢,我们要用 effect 去接受他。 既然说我们要用 effect 去接收这个 action 的话,那首先我们是不是得有 effect 呀?那么我们切换到 macadam 文档当中,我们来看一下如何去创建 effect。 要创建 effect 呢,我们需要用到一个命令,这个命令呢叫做 n g g effect, 就是 n g generate effect。 我们要把这个 effect 文件呢,放置在 sto 这个文件夹下面的 effects 这个文件夹下面, 那么这个文件的名字呢?叫做 conter 这个 effect 呢,和 stop 是一样的啊,他也要去属于某一个模块,也就是说不同的模块可以有他自己的 effect, 如果你当前创建的这个 effect, 他是属于跟模块的,那么我们需要去加上刚刚 root 这样的一个选项。接下来我们通过刚刚 model 来指定他是属于哪一个模块的,当前呢就是 app model 点 ts, 然后我们去指定刚刚 skeep tests, 就是说忽略这个测试文件啊,不要帮我创建测试文件。 接下来呢,我们就切换到编辑器当中啊,我们找到这个命航工具,在命令航工具当中呢,我们通过 ng g effect 来创建这个 effect, 创建出来的这个 effect 的文件呢,我们要把它放置在 stop 这个文件夹下面的 effects 这个文件夹下面,这个文件的名字呢,我们就把它叫做 counter。 好, 那么接下来呢,我们要去指定刚刚入他,我们再去指定刚刚 model, 它属于 app 点 model 点 ts 这个文件。 接下来我们再去指定刚刚 skeep test, 好,回车去创建这个文件。在创建这个文件的时候呢,他又会问我一些问题了, 第一个问题呢,他问我是否需要去接收成功或者是失败的 action, 那么我们肯定是不需要的,所以说我们写上一个 n 就是 no, 叫机会车。第二个问题呢,就是 do you want to use the crate function? 就是说呢,他问我们是否需要去使用辅助函数哈,我们是需要的啊,所以呢,我们选择 yes。 现在这个文件是不是就已经创建好了呀?他创建了一个文件,更新了一个文件。我们先找到这个更新的文件啊,就是 app 点猫都点 ts 这个文件,那么在这个文件当中呢,他自动帮我们去配置了这个 effects model, 好,那么你注意他掉呢,是否入他这样的一个方法对不对啊? 因为他是根本块,要调用否如特,如果不是根本块呢,他会去调用另外一个方法,这就是为什么要加刚刚 rot 这样的一个选项的含义。既然说这个文件呢已经创建完了,我们来找到这个文件,就是 effects 这个文件夹下面的康 点 effect 点 ts, 我们先保存一下这个文件哈,看一下默认代码。首先我们看到这个 effect 啊,它实际上就是一个服务类嘛, 那么在福利的 constructor 构造函数的参数当中,他给了我们一个参数哈,就是 actions, 他是 actions 这个类似下面的一个史对象哈, 我们可以通过他做什么呢?这个 action 下后面有一个 dollar 服啊,那这是一个约定的命名规则,那它表示的是 action 是一个 abazareba 对象,就是可困难对象啊,当我们在组建当中去触发 action 的时候,那么这个 abazarella 对象当中呢,就会发出数据流了,我们可以根据他来接收 action, 然后把我们需要处理的这个 action 给他过滤出来。 那么接下来呢,我们要去执行副作用哈,那么如何去执行呢?我们需要在当前的这个类当中呀,去添加一个属性,当然属性名字是自定义的啊,是什么都可以。我们先来添加一个属性,一会呢,我们写完代码之后啊,再来解释他是用来做什么的。在这个 我们去添加一个属性,叫做 a sink 下快线 increment 下快线 effect 好,它的主要是 creative effect 啊,就是说我们要去执行副作用了啊,它是一个方法,我们需要去调它。在调用这个方法的时候呢,我们需要去传递一个回调函数, 那么在这个回调函数当中呢,我们需要去返回一个 aba zurb, 这是硬性规定哈,那么一般情况下,这个代码呀,都是这样去写了,我们在这直接去找到 this r action store, 接下来呢,我们要去调用 pap 干什么呢?主意刚刚我说过了啊,在组建当中,当你去触发 action 的时候,那么这个额不是萝卜对象呢,就会发出数据流了,那么我们每触发一个 x 的时候,他都会发出数据流, 所以接下来我们要做的事情呢,就是找到我们需要处理的那个 action, 那么如何找到呢?我们要通过一个操作符啊,那么这个操作符呢,叫做 of type, 那么这个操作符的含义啊,就是将你要处理的那个 action 的过滤出来,我们要处理哪一个 action 呢?好,那么我们来看一下啊,我们找到 conter 点 action, 点 ts 这个文件,当前我们是不是要处理这样的一个 action, 所以呢,我们要把这个 action curry a 点函数传递到这个里面来,那么接下来我们去把它引入进来哈, 那么如果说这个 action 我们找到了啊,那么这个代码接着往下走,如果这个 action 没找到呢?这个代码就宗旨了啊,就不往下走了。那么 接下来呀,我们要做一个事情哈,我们要去调用 mers map 这样的一个操作符,这个操作符的含义呢,就是合并 absorb 对象啊,为什么要合并呢?一会我们要去做另外的一个事情,就是执行副作用嘛,那么执行副作用它也是一个 abazobo, 所以呢,我们要把那个 abazobo 和当前的这个 abazobo 进行合并哈,我们要让订阅者来得到合并之后的那个 abazobo。 好, 那么接下来呢,我们去调用 merry's map, 然后去传递一个回调函数,那么在这个回调函数当中我们要干什么呀?当你去触发这样的一个 action 的时候,我们是不是要 延迟操作呀?延迟呢?有一个操作符叫做胎妹。好,那么我们去调用这个胎妹,在调用胎妹这个操作符的时候,我们需要去传递一个时间作为参数,比如说在这个地方我们传递两秒,这就代表两秒钟之后啊,发出一个数据流,那也就是延迟两秒了。好, 那么这个 mers map 呀,他提示我找不到,所以呢,我们要去手动的去引入一下啊,我们通过引炮的关键字,从 r x j s 下面的 operators 当中去引入它,那么引入谁呢?就是引入 mars map。 好,那么现在这个 mars map 就不报错了。 那么接下来呀,我们要去做一个事情哈,当你延迟两秒以后,我们要做什么呀?我们是不是副作用执行完成了呀?我们要去触发另外一个 action 来执行数据的相加操作了啊,所以呢,我们要在 timer 这个操作符的后面继续点上 paper 来处理这个数据流,这个 timer 它返回的也是一个 absolute 对象啊,那么在这个 pad 里面呢,我们去调用 mypa。 好,那么迈巴他传递一个回调函数,在这个回调函数当中,我们要返回你要触发的那个 action, 那么我们要去触发哪一个 action 呢?好, 那么这个 action 呢?就是 increment, 我们把它引入进来,然后我们去调用这个 action creator 函数,在这个地方呀,他提示我 map 是不是找不到呀?好,那么我们在手动的把这个 map 呀给他引入进来。好,那么在这我们去引入这个 map, 我们去调用 increment 这样的一个 action creator 函数的时候呀,我们需要去传的一个参数,他实际上是一个对象啊,对象当中有一个 cont 问我加几,那么我们当前呢去加一个十,保存这个文件哈,那么当前这个代码呢?我们就写完了,那么这个代码其实粗次看起来不太好理解,对不对啊?好,那么接下来我们重新去解释一下。 首先呢,我们在这个地方通过 disstar actions 拿到这个 action 啊,因为呢它是一个 absorber 对象,当我们在组建当中去触发 action 的时候,它里面就会发出数据流了,但是每一个 action 被触发的时候,它 都会发出数据流,但是啊,我们需要找到我们要处理的那个,所以接下来呢,我们通过 of type 这个操作法来找到我们要去处理的那个 action, 我们找到这个 action 以后呢,这个代码会继续往下走。那么接下来我们去调用莫斯麦吧啊,去合并 oppo, 那么在这个地方呢,他返回的也是一个不择不对象,他是两个,我们要把它合并成一个,最终我们要让订阅者拿到这个里面处理的这个数据流,那么在这个里面呢,我们调用台门延迟两秒,接下来呢,在两秒钟之后呀,我们调用卖部方法返回我们要去触发的那个 action。 好,那么接下来我们先切换到编辑器当中啊,看一下这个事能不能做成。 切换到浏览器当中哈,接下来我们刷新下页面,然后呢我们点击延迟相加,我们去等待两秒,看他是不是变成十辆,就说明当前这个代码我们写的是没有问题的啊。切换回编辑器当中哈,那么刚刚我们说过这个地方我们是不是添加了一个属性, 那么这个属性是做什么用的呢?在 curritate effect 这个方法当中,我们传递了一个毁掉函数,那么这个毁掉函数呢?它返回了一个 abazzarable 对象,那么这个 abuzerable 对象它最终输出的是不是我们要触发的那个 action 呢?那么 curret effect 这个方法,她在内部去调用了这个回调函数,她又把这个毁掉函数的结果进行返回了,那 也就是说最终谁是这个 abrazo 不对象呀?是不是就是这个属性啊? ng 二 x 他内部在实力化这个类的时候,他会得到这个属性,也就是说他会得到这个 abrazo 对象,以后呀,他呢会去订阅这个 abazoba 对象,那么当这个 abazoba 对象发出值的时候,也就是说当我们发出这个 action 的时候,他会帮我们去触发这样的一个 action, 这样的话这个流程是不是就跑通了呀?好,那么我们来证明一下这个事哈,在这个地方呢,我们是可以拿到这样的一个属性的,那么他实际上是一个 aba zoo boo 对象,既然他是 abazobo 对象,那么我们是不是可以去点出一个, 好,我们去定位他啊,手动去订阅,然后我们通过汤搜点的方法,把它里面发出的这个内容呢,给他打印到控制台当中,保存这个文件啊,我们切换到浏览器当中,我们要看一下他发出的是不是我们期望的那个最终触发的 action。 好,那么在这个地方呢,我们点击延迟相加。 好,那么在两秒钟之后,是不是发出了这样的一个数据流呀?而这个数据流呢,就是我们触发的 action, 就是在这个地方返回的这个内容,对不对呀?好,那么也就印成了刚才我说的,那么在 n g r x 内部啊,他会拿到这个属性,那么他会帮助我们去订阅这个额不得不对象,当这个额不得不对象发出这样一个数据流的时候,那么他就会帮我们去触发这个 action 了。 好,那么接下来呢,我们切换回这个马卡龙文档当中,我们来总结一下哈,当前我们提出了一个新的需求,什么需求呢?在页面当中我们准备了一个按钮,当点击这个按钮的时候,我们要让这个数值进行延迟相加,在这个需求当中啊,他有一个 副作用啊,就是这个延迟操作,那么既然有副作用,我们就需要用到 effect, 因为在 ngrx 的这个流程当中, effect 就是专门用于处理副作用的, 我们向上滑动啊,那首先呢,我们在组件当中啊,去添加了这样的一个按钮,给他添加了一个点击事件,当点击事件被触发的时候,我们去执行这样的一个方法,那么在这个方法内部我们通过, 那么我们在 action 文件当中又去定义了一个 action, 如果你在这不去定义,在这也触发不了,那么接下来呢,我们通过 ngg effect 这样的一个命令去创建了一个 effect, 那么在这个 effect 类当中呢,我们去添加了一个属性哈,那么这个属性名字是自定义的啊,它的值呢?就是 critic effect 这个方法的调用,我们在调用 critic effect 这个方法的时候呀,需要去传递一个毁掉函数,那么在这个毁掉函数当中呢,我们要返回一个 above zerber 对象,好,那这是固定的啊,那么 diss er actions 呢?它是用来接收 action 的啊,那么只要我们在组建呢 处罚 action, 那么它里面呢就会发出数据流了啊,因为它就是一个不走不对象,当它里面发出数据流的时候,我们要过滤出我们想要处理的那个 action, 当我们找到我们要处理的这个 action 以后呢,我们在这去做我们要做的这个副作用,比如说我们在这延迟了一秒,当一秒钟过去以后呢,我们再返回我们要触发的另外一个 action。 ngx 内部在实力化这个类的时候呀,会得到这个属性,那么这个属性呢,实际上就是在这个里面返回的这个 absolute 对象,那么它实际上是先返回给可瑞特 effect 的这个方法了啊,那么在 criter effect 这个方法当中,他又进行了一波返回啊,那所以说在这个类属性这个地方,他能够接受到他 ngrx 内部啊,接收到我们要触发的那个 action 对象以后啊,他会帮助我们去触发那个 action, 所以这样的一个流程呢就走通了啊,我们又通过这样的一个代码呢来测试了啊,他确实是一个不择不对象,他里面呢确实能够发出我们在这去返回的内容。好,这就是当讲我们所讲解的这个 effect 他的使用方式。

ok, 那么欢迎大家回到本期小课堂,本期小课堂为大家带来什么呢?我们的 x 二怎样去设置我们的视频分辨率呢?我们点击这里, 然后的话往左滑的话可以查切换我们的幺零八零 p 的视频分辨率,比如说我想拍四 k 的话,我左滑右滑就可以切换到我四 k 的分辨率,然后的话想切换我们的真率呢?我们在下边拉,因为 iphone 二的话,它最高可以拍到幺零八零 p 的二百四十圈,以及我们的四 k 的一百二十圈, 这个收获的话我们就可以,比如说我要拍四 k 到二百一百二十针,这边就可以拍到四 k 的一百二十针,然后比如说我要拍到一百二百四十针, 然后在这个模式下就可以拍到二百四十针,或者说我也可以这样单独拿下来,也可以正常使用。如果说我想查看我刚才拍摄的素材的话,我左滑就可以查看,如果说我需要删除的话,再左滑这个就可以删除了。然后比如说我要切换 我的入场模式呢,顶部这个按钮一二,然后这个会弹出来,然后这个时候你去滑动就可以切换咱们拍段视频了,然后这两天还在上海做活动,我感兴趣的话可以来我们门店来看一下。

你一定用的到的动作单词,建议收藏!跳 rap, 走路 rap, 听蕾丝说话唱歌站立 style, 吃东西一起喝,追你学会了吗?
