无需申请自动送彩金68_白菜送彩金网站大全[无需申请秒送彩金]
做最好的网站
来自 无需申请自动 2019-09-14 04:10 的文章
当前位置: 无需申请自动送彩金68 > 无需申请自动 > 正文

谈谈前后端的分工协作,关于启用

至于启用 HTTPS 的一对经历分享(二)

2015/12/24 · 基本功技艺 · HTTP, HTTPS

原稿出处: imququ(@屈光宇)   

文章目录

  • SSL 版本接纳
  • 加密套件选择
  • SNI 扩展
  • 表明选拔

几天前,一人相恋的人问笔者:都说推荐用 Qualys SSL Labs 这一个工具测量试验 SSL 安全性,为何某些安全实力很强的大厂家评分也十分的低?笔者觉着这些主题材料应该从双方面来看:1)国内顾客终端情形复杂,比相当多时候降落 SSL 安全配置是为着合作越多客商;2)确实有一点大厂家的 SSL 配置很不专门的学问,非常是安排了部分显然不应该使用的 CipherSuite。

自身事先写的《有关启用 HTTPS 的一些经验分享(一)》,主要介绍 HTTPS 怎么着与局地新出的平安规范同盟使用,面向的是当代浏览器。如今天那篇小说,越来越多的是介绍启用 HTTPS 进程中在老旧浏览器下可能境遇的题目,以及哪些抉择。

座谈前后端的分工合营

2015/05/15 · HTML5 · 1 评论 · Web开发

初稿出处: 小胡子哥的博客(@Barret李靖)   

上下端分工合营是三个老生常谈的大话题,非常多集团都在尝试用工程化的艺术去升高前后端之间交换的频率,收缩沟通开销,并且也开拓了大气的工具。但是大概从未一种艺术是令双方都很知足的。事实上,也不也许让全体人都乐意。根本原因依旧前后端之间的插花相当不够大,沟通的主干往往只限于接口及接口往外扩散的一局部。这也是为啥多数小卖部在选聘的时候希望前端职员熟稔通晓一门后台语言,后端同学精通前端的相关文化。

H5游戏开采:套圈圈

2018/01/25 · HTML5 · 游戏

初稿出处: 坑坑洼洼实验室   

 

SSL 版本选取

TLS(Transport Layer Security,传输层安全)的前身是 SSL(Secure Sockets Layer,保险套接字层),它最早的多少个本子(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司成本,从 3.1 起始被 IETF 标准化并改名,发展现今已经有 TLS 1.0、TLS 1.1、TLS 1.2 两个版本。TLS 1.3 改造会比十分的大,近些日子还在草案阶段。

SSL 1.0 从未公开过,而 SSL 2.0 和 SSL 3.0 都存在安全主题素材,不引入应用。Nginx 从 1.9.1 先河默许只支持 TLS 的七个版本,以下是 Nginx 官方文书档案中对 ssl_protocols 配置的印证:

Syntax: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
Default: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Context: http, server
Enables the specified protocols. The TLSv1.1 and TLSv1.2 parameters work only when the OpenSSL library of version 1.0.1 or higher is used.

但不幸的是,IE 6 只帮衬 SSLv2 和 SSLv3(来源),也正是说 HTTPS 网址要补助 IE 6,就务须启用 SSLv3。仅这一项就能够促成 SSL Labs 给出的评分降为 C。

一、开辟流程

前端切完图,管理好接口音信,接着正是把静态demo交给后台去拼接,那是相似的流程。这种流程存在大多的通病。

  • 后端同学对文本举行拆分拼接的时候,由于对前面三个知识面生,大概会搞出一批bug,到最后又须求前端同学帮忙解析原因,而前面三个同学又不是特地询问后端使用的沙盘,产生狼狈的范畴。
  • 借使前端未有应用统一化的文书夹结构,而且静态财富(如图片,css,js等)没有退出出去放到 CDN,而是采用相对路径去援引,当后端同学须要对静态能源作有关安插时,又得修改各种link,script标签的src属性,轻易失误。
  • 接口难点
    1. 后端数据未有图谋好,前端须要和睦模仿一套,花费高,要是前期接口有转移,自身模仿的那套数据又非常了。
    2. 后端数据已经开拓好,接口也准备好了,本地必要代理线上数据开展测量试验。这里有五个麻烦的地方,一是索要代理,不然大概跨域,二是接口音讯一旦退换,前期接你项目标人必要改你的代码,麻烦。
  • 不实惠调节输出。为了让首屏加载速度快一些,我们希望后端先吐出一些数目,剩下的才去 ajax 渲染,但让后端吐出多少数量,大家糟糕控。

当然,存在的主题材料远不仅上边枚举的那几个,这种价值观的艺术实际是不酷(Kimi 附身^_^)。还恐怕有一种开垦流程,SPA(single page application),前后端职务十分清楚,后端给自个儿接口,作者全方位用 ajax 异步诉求,这种办法,在现世浏览器中得以使用 PJAX 稍微进步体验,Twitter早在三两年前对这种 SPA 的形式提议了一套施工方案,quickling bigpipe,化解了 SEO 以及数额吐出过慢的主题材料。他的重疾也是丰盛综上说述的:

  • 页面太重,前端渲染专门的职业量也大
  • 首屏如故慢
  • 内外端模板复用不了
  • SEO 依然很狗血(quickling 架构开支高)
  • history 管理麻烦

标题多的早正是软乎乎戏弄了,当然她还是有协和的优势,我们也不能够一票否决。

针对地方看到的标题,现在也许有一部分部在品味前后端之间加四当中间层(举个例子天猫商城UED的 MidWay )。那在那之中间层由前端来支配。

JavaScript

---------------- | F2E | ---↑--------↑--- | | ---↓--------↓--- | Middle | ---↑--------↑--- | | ---↓--------↓--- | R2E | ----------------

1
2
3
4
5
6
7
8
9
10
11
     ----------------
    |       F2E      |
     ---↑--------↑---
        |        |
     ---↓--------↓---
    |     Middle     |
     ---↑--------↑---
        |        |  
     ---↓--------↓---
    |       R2E      |
     ----------------

中间层的坚守正是为着更加好的调节数据的出口,假使用MVC模型去深入分析那一个接口,Murano2E(后端)只承担 M(数据) 这一部分,Middle(中间层)管理数据的表现(包罗 V 和 C)。天猫商城UED有许多接近的篇章,这里不赘述。

前言

虽说本文标题为介绍贰个水压套圈h5游戏,不过窃感觉仅仅如此对读者是没什么补助的,究竟读者们的干活生活非常少会再写贰个近似的游乐,更多的是面临须求的挑战。笔者更期望能抛砖引玉,给大家在编写制定h5游戏上带来一些启迪,无论是从完整流程的把控,对游戏框架、物理引擎的熟识程度照旧在某二个小困难上的笔触突破等。因而本文将非常少详细列举完结代码,取代他的是以伪代码展现思路为主。

游戏 demo 地址:

加密套件选取

加密套件(CipherSuite),是在 SSL 握手中供给商谈的很首要的贰个参数。客户端会在 Client Hello 中带上它所支撑的 CipherSuite 列表,服务端会从中选定三个并通过 Server Hello 重返。若是客户端援助的 CipherSuite 列表与服务端配置的 CipherSuite 列表未有交集,会招致敬敏不谢达成商业事务,握手战败。

CipherSuite 包蕴各个技术,举个例子认证算法(Authentication)、加密算法(Encryption)、音信认证码算法(Message Authentication Code,简称为 MAC)、密钥调换算法(Key Exchange)和密钥衍生算法(Key Derivation Function)。

SSL 的 CipherSuite 协商业机械制具备卓越的扩大性,每一种 CipherSuite 都急需在 IANA 注册,并被分配四个字节的表明。全体 CipherSuite 能够在 IANA 的 TLS Cipher Suite Registry 页面查看。

OpenSSL 库帮助的整个 CipherSuite 能够通过以下命令查看:

openssl ciphers -V | column -t 0xCC,0x14 - ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=ChaCha20-Poly1305 Mac=AEAD ... ...

1
2
3
openssl ciphers -V | column -t
0xCC,0x14  -  ECDHE-ECDSA-CHACHA20-POLY1305  TLSv1.2  Kx=ECDH        Au=ECDSA   Enc=ChaCha20-Poly1305  Mac=AEAD
... ...

0xCC,0x14 是 CipherSuite 的编号,在 SSL 握手中会用到。ECDHE-ECDSA-CHACHA20-POLY1305 是它的称呼,之后几有的各自代表:用于 TLSv1.2,使用 ECDH 做密钥沟通,使用 ECDSA 做验证,使用 ChaCha20-Poly1305 做对称加密,由于 ChaCha20-Poly1305 是一种 AEAD 形式,不必要 MAC 算法,所以 MAC 列展现为 AEAD。

要询问 CipherSuite 的更加多内容,能够阅读那篇长文《TLS 探讨分析 与 今世加密通讯合同设计》。综上可得,在陈设CipherSuite 时,请必得参照他事他说加以考察权威文书档案,如:Mozilla 的推荐介绍配置、CloudFlare 使用的布局。

如上 Mozilla 文书档案中的「Old backward compatibility」配置,以及 CloudFlare 的陈设,都足以很好的杰出老旧浏览器,包蕴 Windows XP / IE6。

事先看到有些大厂家乃至扶助满含 EXPORT 的 CipherSuite,这几个套件在上世纪由于U.S.开口限制而被弱化过,已被一锅端,实在未有理由再采纳。

二、大旨难题

地点提议了在业务中看到的常见的二种情势,难题的为主就是数据交由何人去管理。数据提交后台管理,那是形式一,数据交到前端管理,那是情势二,数据交由前端分层管理,那是情势三。二种形式尚未好坏之分,其选取依然得看现实情况。

既是都以数据的难点,数据从何地来?这些主题素材又重临了接口。

  • 接口文书档案由什么人来撰写和维护?
  • 接口音讯的改观怎么着向前后端传递?
  • 怎么着根据接口规范获得前后端可用的测量试验数据?
  • 接纳哪一种接口?JSON,JSONP?
  • JSONP 的安全性难题怎么着处理?

这一文山会海的标题间接苦恼着奋战在前沿的前端程序员和后端开垦者。天猫团队做了两套接口文书档案的尊崇工具,IMS以及DIP,不知底有未有对外开放,两个东西都以基于 JSON Schema 的二个品尝,各有上下。JSON Schema 是对 JSON 的二个标准,类似我们在数据库中创造表一样,对各种字段做一些限量,这里也是均等的原理,可以对字段举办描述,设置类型,限制字段属性等。

接口文书档案那么些业务,使用 JSON Schema 能够自动化生产,所以只需编写 JSON Schema 而不设有保险问题,在写好的 Schema 中多加些限制性的参数,我们就足以一向遵照 Schema 生成 mock(测量检验) 数据。

mock 数据的表面调用,那倒是很好管理:

JavaScript

typeof callback === "function" && callback({ json: "jsonContent" })

1
2
3
typeof callback === "function" && callback({
   json: "jsonContent"
})

在呼吁的参数中出席 callback 参数,如 /mock/hashString?cb=callback,一般的 io(ajax) 库都对异步数据获得做了包装,大家在测量试验的时候使用 jsonp,回头上线,将 dataType 改成 json 就行了。

JavaScript

IO({ url: "", dataType: "jsonp", //json success: function(){} })

1
2
3
4
5
IO({
  url: "http://barretlee.com",
  dataType: "jsonp", //json
  success: function(){}
})

此处略微麻烦的是 POST 方法,jsonp 只好选取 get 方式插入 script 节点去恳求数据,不过 POST,只好呵呵了。

此间的管理也是有多种情势能够参谋:

  • 修改 Hosts,让 mock 的域名指向开辟域名
  • mock 设置 header 响应头,Access-Allow-Origin-Control

对此哪些获得跨域的接口新闻,小编也付出多少个参考方案:

  • fiddler 替换包,好疑似支持正则的,感兴趣的能够研讨下(求分享商量结果,因为自己没找到正则的设置岗位)
  • 选用 HTTPX 恐怕另外代理工具,原理和 fiddler 类似,但是可视化效果(体验)要好过多,究竟人家是特意做代办用的。
  • 和睦写一段脚本代理,约等于本地开一个代理服务器,这里需求思量端口的据有失水准。其实自身不引入监听端口,多个相比科学的方案是本地须求全部对准贰个剧本文件,然后脚本转载UXC90L,如:

JavaScript

原始央浼: 在ajax供给的时候: $.ajax({ url: "" });

1
2
3
4
5
原始请求:http://barretlee.com/api/test.json
在ajax请求的时候:
$.ajax({
  url: "http://<local>/api.php?path=/api/text.json"
});
  • php中拍卖就比较轻易啦:

JavaScript

if(!isset($_GET["page"])){ echo 0; exit(); } echo file_get_contents($_GET["path"]);

1
2
3
4
5
if(!isset($_GET["page"])){
  echo 0;
  exit();
}
echo file_get_contents($_GET["path"]);
  • Ctrl S,保存把线上的接口数据到本地的api文件夹吧-_-||

期待能给诸位读者带来的启迪

  1. 能力选型
  2. 全体代码布局
  3. 困难及缓和思路
  4. 优化点

SNI 扩展

咱俩精晓,在 Nginx 中能够通过点名不相同的 server_name 来配置八个站点。HTTP/1.1 合同央浼头中的 Host 字段能够标记出脚下呼吁属于哪个站点。不过对于 HTTPS 网址来讲,要想发送 HTTP 数据,必需等待 SSL 握手完毕,而在握手阶段服务端就亟须提供网址证书。对于在同一个 IP 计划不同HTTPS 站点,并且还动用了差异证书的情事下,服务端怎么明白该发送哪个证书?

Server Name Indication,简称为 SNI,是 TLS 的三个扩充,为消除那些难题应时而生。有了 SNI,服务端能够经过 Client Hello 中的 SNI 扩张获得顾客要拜候网址的 Server Name,进而发送与之相配的注脚,顺遂达成 SSL 握手。

Nginx 在很早此前就协理了 SNI,能够透过 nginx -V 来验证。以下是本人的辨证结果:

./nginx -V nginx version: nginx/1.9.9 built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04) built with OpenSSL 1.0.2e-dev xx XXX xxxx TLS SNI support enabled configure arguments: --with-openssl=../openssl --with-http_ssl_module --with-http_v2_module

1
2
3
4
5
6
./nginx -V
nginx version: nginx/1.9.9
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)
built with OpenSSL 1.0.2e-dev xx XXX xxxx
TLS SNI support enabled
configure arguments: --with-openssl=../openssl --with-http_ssl_module --with-http_v2_module

然而,并不是兼具浏览器都援助 SNI,以下是广泛浏览器帮忙 SNI 的最低版本:

浏览器 最低版本
Chrome Vista 全支持;XP 需要 Chrome 6 ;OSX 10.5.7 且 Chrome 5
Firefox 2.0
Internet Explorer 7 (需要 Vista )
Safari 3 (需要 OS X 10.5.6 )
Mobile Safari iOS 4.0
Android Webview 3.0

一旦要制止在不协助 SNI 的浏览器中冒出证书错误,只可以将利用不相同证书的 HTTPS 站点布局在分化 IP 上,最容易易行的做法是分别安顿到分歧机器上。

三、小结

正文只是对内外端合营存在的标题和水保的二种遍布形式做了简要的罗列,JSON Schema 具体哪些去采纳,还也会有接口的爱戴难点、接口音讯的获得难题从未现实阐释,那些三番两次偶尔间会整理下小编对他的知道。

赞 2 收藏 1 评论

图片 1

手艺选型

八个类别用什么技巧来促成,权衡的要素有多数。在那之中时间是必需优先思索的,终究效果能够减,但上线时间是死的。

本项目预研时间二十八日,真正排期时间唯有两周。即使由项目特点来占卜比适合走 3D 方案,但日子分明是相当不足的。最终保守起见,决定采取 2D 方案尽量逼近真实立体的游戏效果。

从娱乐复杂度来思考,无须用到 Egret 或 Cocos 那些“牛刀”,而轻量、易上手、团队内部也会有抓好沉淀的 CreateJS 则成为了渲染框架的首荐。

别的部要求要思索的是是不是供给引进物理引擎,这一点供给从游戏的性状去牵挂。本游戏涉及重力、碰撞、施力等要素,引进物理引擎对开采效用的坚实要压倒学习使用物理引擎的血本。因而权衡每每,作者引进了同事们曾经玩得挺溜的 Matter.js。( 马特er.js 文书档案清晰、案例丰盛,是切入学习 web 游戏引擎的几个不错的框架)

证件选用

HTTPS 网址供给通过 CA 取得合法证件,证书通过数字签字本事保证第三方不可能伪造。证书的简要原理如下:

  • 凭借版本号、系列号、签字算法标记、发行者名称、保藏期、证书主体名、证书主体公钥音讯、发行商独一标志、主体独一标志、扩张生成 TBSCertificate(To Be Signed Certificate, 待签字证书)音讯;
  • 签发数字具名:使用 HASH 函数对 TBSCertificate 总计得到音信摘要,用 CA 的私钥对新闻摘要举办加密,获得签字;
  • 校验数字具名:使用一样的 HASH 函数对 TBSCertificate 总计得到消息摘要,与行使 CA 公钥解密签名获得内容绝比较;

利用 SHA-1 做为 HASH 函数的证书被叫做 SHA-1 证书,由于当下已经找到 SHA-1 的撞击标准,将表明换到选拔更安全的 SHA-2 做为 HASH 函数的 SHA-2 证书被提上日程。

实则,微软曾经宣称自 2017 年 1 月 1 日起,将健全终止对 SHA-1 证书的支撑。届时在风靡版本的 Windows 系统中,SHA-1 证书将不被信任。

而据书上说 Chrome 官方博客的文章,使用 SHA-1 证书且证书有效期在 2015 年 1 月 1 号至 2015 年 12 月 31 号之间的站点会被予以「安全的,但存在漏洞」的唤醒,也正是地址栏的小锁不再是高粱红的,並且会有二个香艳小三角。而选择SHA-1 证书且证书保质期超越 2017 年 1 月 1 号的站点会被予以「不安全」的革命警戒,小锁上直接突显叁个深褐的叉。

唯独,并非兼备的极限都帮忙 SHA-2 证书,服务端不帮衬幸亏办,浏览器只可以依附于顾客提高了。下面是周围浏览器辅助SHA-2 证书的最低版本:

浏览器 支持 SHA-2 证书的最低版本
Chrome 26
Firefox 1.5
Internet Explorer 6 (需要 XP SP3 )
Safari 3 (需要 OS X 10.5 )
Android Webview 2.3

能够看看,纵然要照望没有打 XP SP3 补丁的 IE6 客户,只好继续使用 SHA-1 证书。

在本身事先的篇章中,还涉嫌过 ECC 证书,这种新型的证件援救度更差,这里略过不提,有意思味的同室能够点这里查看。

是或不是足以本着差异浏览器启用分裂证书吗?理论上服务端能够依赖顾客端 Client Hello 中的 Cipher Suites 特征以及是不是扶助 SNI 的特点来分配不相同证书,可是作者从不实际验证过。

正文先写这么多,相当多战术都急需依据本身网址的客户来支配,举个例子笔者的博客基本没有IE8- 客户,道理当然是那样的能够禁用SSLv3。假诺你的产品还应该有比非常多选用老旧浏览器的客户,那就务须为那几个客户做协作方案了。一种方案是:只把主域安全品级配低,将 XP 上 IE 客商的 HTTPS 哀告直接重定向到 HTTP 版本,那样任何域名能够应用高安全等第的布局,运转起来相比较有利。

1 赞 1 收藏 评论

图片 2

总体代码布局

在代码组织上,笔者选拔了面向对象的招数,对整个游戏做二个卷入,抛出一部分操纵接口给任何逻辑层调用。

伪代码:

<!-- index.html --> <!-- 游戏入口 canvas --> <canvas id="waterfulGameCanvas" width="660" height="570"></canvas>

1
2
3
<!-- index.html -->
<!-- 游戏入口 canvas -->
<canvas id="waterfulGameCanvas" width="660" height="570"></canvas>

// game.js /** * 游戏对象 */ class Waterful { // 早先化函数 init () {} // CreateJS Tick,游戏操作等事件的绑定放到游戏对象内 eventBinding () {} // 揭示的部分方法 score () {} restart () {} pause () {} resume () {} // 技艺 skillX () {} } /** * 环对象 */ class Ring { // 于每几个CreateJS Tick 都调用环本身的 update 函数 update () {} // 进针后的逻辑 afterCollision () {} }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// game.js
/**
* 游戏对象
*/
class Waterful {
  // 初始化函数
  init () {}
  
  // CreateJS Tick,游戏操作等事件的绑定放到游戏对象内
  eventBinding () {}
  
  // 暴露的一些方法
  score () {}
  
  restart () {}
  
  pause () {}
  
  resume () {}
  
  // 技能
  skillX () {}
}
/**
* 环对象
*/
class Ring {
  // 于每一个 CreateJS Tick 都调用环自身的 update 函数
  update () {}
  
  // 进针后的逻辑
  afterCollision () {}
}

JavaScript

// main.js // 依据业务逻辑起始化游戏,调用游戏的各个接口 const waterful = new Waterful() waterful.init({...})

1
2
3
4
// main.js
// 根据业务逻辑初始化游戏,调用游戏的各种接口
const waterful = new Waterful()
waterful.init({...})

初始化

玩耍的初步化接口重要做了4件专门的学问:

  1. 参数开首化
  2. CreateJS 呈现成分(display object)的布局
  3. Matter.js 刚体(rigid body)的布局
  4. 事件的绑定

上面重要聊聊游戏场景里各类因素的创建与布局,即第二、第三点。

一、CreateJS 结合 Matter.js

阅读 马特er.js 的 demo 案例,都以用其自带的渲染引擎 马特er.Render。不过由于一些原因(前面会提及),大家须求利用 CreateJS 去渲染各种环的贴图。

不像 Laya 配有和 马特er.js 本身用法一致的 Render,CreateJS 要求独自创造一个贴图层,然后在各种 Tick 里把贴图层的坐标同步为 马特er.js 刚体的当前坐标。

伪代码:

JavaScript

createjs.Ticker.add伊芙ntListener('tick', e => { 环贴图的坐标 = 环刚体的坐标 })

1
2
3
createjs.Ticker.addEventListener('tick', e => {
  环贴图的坐标 = 环刚体的坐标
})

动用 CreateJS 去渲染后,要单独调节和测量检验 马特er.js 的刚体是可怜拮据的。建议写叁个调节和测验方式特意使用 Matter.js 的 Render 去渲染,以便跟踪刚体的运动轨迹。

二、环

本游戏的困难是要以 2D 去模拟 3D,环是一点,进针的意义是某个,先说环。

环由一个圆形的刚体,和半径稍大片段的贴图层所构成。如下图,黄色部分为刚体:

图片 3

伪代码:

JavaScript

class Ring { constructor () { // 贴图 this.texture = new createjs.Sprite(...) // 刚体 this.body = Matter.Bodies.circle(...) } }

1
2
3
4
5
6
7
8
class Ring {
  constructor () {
    // 贴图
    this.texture = new createjs.Sprite(...)
    // 刚体
    this.body = Matter.Bodies.circle(...)
  }
}

三、刚体

干什么把刚体半径做得稍小吗,那也是受那篇小说 推金币 里金币的做法所启发。推金币游戏中,为了到达金币间的堆集效果,小编很聪慧地把刚体做得比贴图小,那样当刚体挤在一道时,贴图间就能够层叠起来。所以这么做是为了使环之间有一些有一点点重叠效果,更珍视的也是当多少个紧贴的环不会因翻转角度太接近而展现留白太多。如图:

图片 4

为了模仿环在水中移动的遵从,能够挑选给环加一些气氛摩擦力。别的在东西游戏里,环是塑料做成的,碰撞后动能消耗相当大,由此得以把环的 restitution 值调得稍微小部分。

亟需留心 马特er.js 中因为各样物理参数都是不曾单位的,一些物理公式很恐怕用不上,只可以依靠其私下认可值稳步进行微调。下边的frictionAir 和 restitution 值就是本人渐渐凭认为调度出来的:

JavaScript

this.body = Matter.Bodies.circle(x, y, r, { frictionAir: 0.02, restitution: 0.15 })

1
2
3
4
this.body = Matter.Bodies.circle(x, y, r, {
  frictionAir: 0.02,
  restitution: 0.15
})

四、贴图

环在切实世界中的旋转是三个维度的,而 CreateJS 只可以调整元素在二维平面上的旋转。对于三个环来讲,二维平面包车型地铁转动是从未有过其余意义的,无论怎么着旋转,都只会是同二个旗帜。

想要达到环绕 x 轴旋转的作用,一起始想到的是使用 rotation scaleY。固然如此能在视觉上达到指标,可是 scaleY 会导致环有被压扁的以为,图片会失真:

图片 5

明确性那样的效果是不能够经受的,最终本人使用了逐帧图的艺术,最相近地还原了环的转动姿态:

图片 6

图片 7

只顾在每种 Tick 里须求去决断环是或不是静止,若非静止则继续播放,并将贴图的 rotation 值赋值为刚体的转动角度。假诺是结束状态,则暂停逐帧图的播报:

JavaScript

// 贴图与刚体地方的小数点后贰个人有一些差别样,要求裁减精度 const x1 = Math.round(texture.x) const x2 = Math.round(body.position.x) const y1 = Math.round(texture.y) const y2 = Math.round(body.position.y) if (x1 !== x2 || y1 !== y2) { texture.paused && texture.play() texture.rotation = body.angle * 180 / Math.PI } else { !texture.paused && texture.stop() } texture.x = body.position.x texture.y = body.position.y

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 贴图与刚体位置的小数点后几位有点不一样,需要降低精度
const x1 = Math.round(texture.x)
const x2 = Math.round(body.position.x)
const y1 = Math.round(texture.y)
const y2 = Math.round(body.position.y)
if (x1 !== x2 || y1 !== y2) {
  texture.paused && texture.play()
  texture.rotation = body.angle * 180 / Math.PI
} else {
  !texture.paused && texture.stop()
}
  
texture.x = body.position.x
texture.y = body.position.y

本文由无需申请自动送彩金68发布于无需申请自动,转载请注明出处:谈谈前后端的分工协作,关于启用

关键词: 2018送体验金