0

我有一个画布作为背景,里面装满了从 html 相机拍摄的视频。

在该背景上,绘制了两个 div,并且通过对随机数进行排序来选择是否绘制一个或另一个。这样做,覆盖 div 会不断变化。

这两个 div 都是 60% 透明的,一个是红色的,另一个是绿色的。

我无法理解的令人惊奇的是,红色 div 在画布上留下了比绿色更暗的斑块。

如果我将红色 div 更改为蓝色,那么较暗的补丁就会消失。

如果有人帮助我解开这个谜团,我将不胜感激。

https://codepen.io/anon/pen/rgZLEW

红色或绿色的 div 是这样的:

function draw_green(){
  $('.preloader').hide();
  $('.green').show();
 }
function draw_red() {
  $('.preloader').hide();
  $('.red').show();
 }

而 div 只是:

<div class="main-wrapper"> 
  <div class="preloader green" style="display: none">
     <div class="loader-container">
        <div>
          <div class="text-logo">Green</div>
          </div>
      </div>
  </div>

  <div class="preloader red" style="display: none">
    <div class="loader-container">
      <div>
        <div class="text-logo">Red</div>
      </div>
    </div>
  </div>
  <canvas></canvas>

画布在循环函数内绘制:

navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
            stream.getTracks().forEach(function(track) {

              if (track.kind == 'video')
                      document.getElementById('video').srcObject = stream;
                  startLoop();
            });
        }, function(err) {
            alert('Could not acquire media: ' + err);
        });


    var canvas = document.querySelector('canvas');
    var video =  document.querySelector('video');
    var ctx = canvas.getContext('2d')
    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
      var loopFrame = false;
      function loop(){
        loopFrame = requestAnimationFrame(loop);
        ctx.save();
        ctx.drawImage(video, 0, 0, canvas.width,   canvas.height);
        ctx.restore();
      }

      function startLoop(){
        loopFrame = loopFrame || requestAnimationFrame(loop);
      }

修补

4

0 回答 0