Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 画布烟雾粒子不移动_Javascript_Css_Canvas - Fatal编程技术网

Javascript 画布烟雾粒子不移动

Javascript 画布烟雾粒子不移动,javascript,css,canvas,Javascript,Css,Canvas,我正在为我们的内部应用程序构建一个精美的easteregg。因此,我有一个“骑”过屏幕的图像。为了增强想象力,我想在图中所示的车辆上添加烟雾 对于smoke,我实现了此笔的修改版本: 结果如下: 重要的代码片段(我猜)可以在fiddle中找到,搜索: setInterval(function () { position.x = $('#crystalship_exhaust').offset().left; position.y = $('#crystalship_exhaus

我正在为我们的内部应用程序构建一个精美的easteregg。因此,我有一个“骑”过屏幕的图像。为了增强想象力,我想在图中所示的车辆上添加烟雾

对于smoke,我实现了此笔的修改版本:

结果如下:

重要的代码片段(我猜)可以在fiddle中找到,搜索:

setInterval(function () {
    position.x = $('#crystalship_exhaust').offset().left;
    position.y = $('#crystalship_exhaust').offset().top;
}, 100);
由于笔将烟绑定到光标偏移量,因此我尝试将其绑定到车辆“内部”的跨度上,以便跟随。但是烟雾在两个X方向上都在增长,甚至没有接近车辆

我做错了什么?我对canvas不是很熟悉,但感谢您的帮助


提前谢谢

我已将运动添加到汽车中,排气管冒出烟雾。在鼠标上移动,屏幕上移动,但如果您愿意,可以轻松更改。我将部分的情感方向改为Y,而不是X,所以它会向后移动带有发射器的汽车图像

Javascript

var canvas = document.createElement('canvas');
var w = canvas.width = 1200,
    h = canvas.height = 700;
var c = canvas.getContext('2d');

var img = new Image();
//添加了一个新的汽车图像

var car = new Image();
img.src = 'http://oi41.tinypic.com/4i2aso.jpg';
//并将其设置为src属性

car.src = 'https://openmerchantaccount.com/img2/crystalship.png';
//将起始位置设置为-car length,这样它就不会仅仅出现在屏幕上

var position = {x : -250, y : h/2};

document.body.appendChild(canvas);

var particles = [];
var random = function(min, max){
  return Math.random()*(max-min)*min;
};

function Particle(x, y){
  this.x = x;
  this.y = y;
  c.drawImage(car, position.x,position.y-80,250,100);
  for(var i = 0; i < particles.length; i++)
  {
    particles[i].update();
  }
};

setInterval(draw, 1000/60);
//将部分的方向改为向右,而不是向上

  this.velX = -2;
  this.velY = (random(1, 10)-5)/10;
  this.size = random(3, 5)/10;
  this.alpha = 1;
  this.update = function(){
    this.y += this.velY;
    this.x += this.velX;
    this.velY *= 0.99;
    if(this.alpha < 0)
      this.alpha = 0;
    c.globalAlpha = this.alpha;
    c.save();
    c.translate(this.x, this.y);
    c.scale(this.size, this.size);

    c.drawImage(img, -img.width/2, -img.height/2);
    c.restore();
    this.alpha *= 0.96;
    this.size += 0.02;//
  };
}

var draw = function(){
//如果汽车开到终点,我就把它移回到起点

  if(position.x+250>w){
    position.x=-250;
  }

  var p = new Particle(position.x, position.y);
  particles.push(p);
  while(particles.length > 500) particles.shift();

  c.globalAlpha = 1;
  c.fillStyle = '#000';
  c.fillRect(0,0,w,h);
//将图像重新绘制到屏幕上

var position = {x : -250, y : h/2};

document.body.appendChild(canvas);

var particles = [];
var random = function(min, max){
  return Math.random()*(max-min)*min;
};

function Particle(x, y){
  this.x = x;
  this.y = y;
  c.drawImage(car, position.x,position.y-80,250,100);
  for(var i = 0; i < particles.length; i++)
  {
    particles[i].update();
  }
};

setInterval(draw, 1000/60);
c.drawImage(汽车,位置x,位置y-80250100);
对于(var i=0;i
通过画布而不是CSS绘制移动的卡车。默认情况下,partials使用的画布是页面的大小。但是,它仍然是关于mousemove的。有没有可能在移动中设置动画而不绑定到鼠标?(就像在基于CSS3的运动示例中)我深深地属于你们部门!Canvas在大多数语言中都是一样的,你应该使用它,一旦你有了一个更新方法,它真的很有趣,是游戏设计的开始步骤之一。有可能在透明背景下使用它吗?如果我们将其设置为“透明”或“rgba(0,0,0,0)”,则表示扭曲。非常感谢。因为我们更喜欢bing,所以找不到任何有用的结果。再次感谢你!