javascript关于box2djs和matterjs之间的选择

javascript关于box2djs和matterjs之间的选择
box2djs资料少很多时候需要看c++版本资料 然后转化成js 还有转化成像素坐标不准确

matterjs文档丰富 上手容易 建议用matterjs
如果发生穿透可以考虑如下因素
1.力度设置的太大
2.刚体自动休眠开启了
3.其他主要是密度 弹性这些参数设置合适
4 刚体加厚 刚体叠加
5 清除没有用的刚体提高性能
更多参考因素
刚体叠加、动量重置、强制跟随、动量缓冲、动态拦截。

刚体叠加就是在同个位置设置多个刚体,这方法对静态刚体有用,可以提高拦截成功率;动量重置是在容易穿透的地方设一个坐标检测区,在移动刚体进入这个区域后立刻让其休眠,旋即唤醒。看似多此一举,实则在休眠时已经重置了其动量,加速惯性就消失了,然后再运动,惯性就小了很多;强制跟随是渲染物体和刚体间的对应关系不稳定,因为laya和matter的坐标不同,导致了这个渲染体和刚体的位置有偏差,可以通过观察其对应位置来设置偏移量,但一旦刚体旋转就会变乱。这时要用三角函数来修正。这需要观察和耐心的修正位置来解决;动量缓冲是在容易穿透的位置动态的设置一个反方向的作用力,来部分抵消移动刚体的动量;动态拦截是一种比较高级的应对方式,在可能穿透的地方设置一个强壮的刚体,通过判断移动刚体的位置,如果将要抵达穿透多发地带,则强壮刚体移动到穿透区,加强穿透区的防御力量。这个方法和刚体叠加的区别是这个可以用于动态刚体的防穿保护,在动态刚体移动的同时,强壮刚体也可以伴随动态刚体移动,直到通过穿透易发区为止,强壮刚体就像是特殊路段的保镖一样。
这些方法都有不同场景下的适用性,多个方法协同作用大大降低了刚体穿透的问题。

php nginx反向代理获取真实ip的教程

php nginx反向代理获取真实ip的教程

 location /getip {
        proxy_pass http://newmiracle.cn/ip.php;
       }
        proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

ip.php下的代码

<?php
print_r($_SERVER['HTTP_X_REAL_IP']);
exit();

这样只要访问域名/getip 就能获取真实IP了

ps:请求的时候 必须在客户端上用ajax请求 才能获取客户端上的ip 不要用PHP获取 不然获取的是服务器上的ip了

css3mask淡出文字

css3mask淡出文字

.p0_11wrap {
    width: 0.299rem;
    height: 7.68rem;
    overflow: hidden;
    background: url(/weiyeweiwangzhan/images/0/p0_11.png) no-repeat;
    background-size: 100%;
    background-position: 0rem 3.8rem;
    -webkit-mask: url(/weiyeweiwangzhan/images/0/p0_11zhezhao.png) no-repeat;
    -webkit-mask-size: 0.299rem 7.68rem;
    -webkit-mask-position: 0 0;
    position: absolute;
    left: 76.933%;
    top: 21.891%;
}
.p0_11warpzhezhao {
    width: 0.299rem;
    height: 7.68rem;
    background: url(/weiyeweiwangzhan/images/0/p0_11zhezhao.png);
    background-size: 0.299rem 7.68rem;
    background-position: 0rem 0rem;
    position: absolute;
    left: 76.933%;
    top: 21.891%;
}
.wenzianim1 {
    animation: wenzianim1 4s linear 1s forwards;
    -webkit-animation: wenzianim1 4s linear 1s forwards;
}
@keyframes wenzianim1 {
    0% {
        -webkit-mask-position: 0rem -8.080rem;
    }
    100% {
        -webkit-mask-position: 0rem 0rem;
    }
}
@-webkit-keyframes wenzianim1 {
    0% {
        -webkit-mask-position: 0rem -8.080rem;
    }
    100% {
        -webkit-mask-position: 0rem 0rem;
    }
}
  <div class="p0_11wrap wenzianim2">
        </div>

php微信卡券logo上传方法

php微信卡券logo上传方法

 $xiangmupath = $this->getxiangmupath();
        $logo        = $xiangmupath . '/images/1/12.png';
        $token       = '19_bEfPNDgMAEAqTcb3uHFzv9wz0_STJ66nsfN1mux9owE_JQ9Bga527WLReM3fWI_1cUn0M1S4kMDW0gSDWWbyqDuEmLUZCiGuhCcBXP0AGRqTgAxghSoZF5c54KobtYL44E0NUERT_-P49qBEFGLaACAPQV';
        $url         = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token={$token}";
        // $logo                = 'F:\phpStudy\WWW\mircoweb\mircoweb\wwwroot\App\Home\Controller/../../../Public/moban/images/1/12.png'; // 一定要图片的绝对路径
        $file                = '@'.$logo; // php5.6以后用到这个curlfile类
        $arr['buffer']       = $file; // 文件的数据流
        $arr['access_token'] = $token; // 调用接口凭证

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        //不需要验证ssl证书
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        //设置获取的信息以文件流的形式返回,而不是直接输出
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $arr);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        print_r(json_decode($output,'true'));
        exit();

css3 svg路径蒙版动画

css3 svg路径蒙版动画

具体看https://www.cnblogs.com/oubenruing/p/9568954.html

还有个更好控制的写法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8" />
    <title>{$title}</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,user-scalable=no" />
    <meta name="format-detection" content="telephone=no" />
    <!-- Link Swiper's CSS -->
    <include file="commonheader" />
</head>

<body>
    <include file="jiazai" />
    <include file="commonmokuai" />
    <div class="showcontainer" style="display: block;">
       <div style="width:60%; height: 7.5rem; position: absolute;left:0px;top:0px;">
        <svg width="100%" height="100%" viewBox="0,0,246,120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
     <defs>
    <mask id ="path1">
        <path id="path"  stroke="white" fill="none" stroke-width="20" d="M238,8L75.3,103.7c0,0-5.3,7.7-18,0S10.3,73,10.3,73" class="Path1"></path>
    </mask>
    </defs>
<image mask="url(#path1)" style="overflow:visible;" width="246" height="120" id="左下发光条" xlink:href="/moban/123.png">
    </image>
</svg>

      </div>
    </div>
    <script src="{$yuming}/js/TweenMax.js"></script>
    <script src="{$yuming}/js/DrawSVGPlugin.min.js"></script>
    <include file="commonfooter" />
    <script type="text/javascript">
    $(function() {
        myTween = TweenMax.fromTo("#path", 1, { drawSVG: "0%" }, { drawSVG: "100%" });
        // myTween.yoyo(true).repeat(-1);
    })
    </script>
</body>

</html>