编程语言
首页 > 编程语言> > javascript – 在调整大小时使KineticJS阶段变宽或更新阶段

javascript – 在调整大小时使KineticJS阶段变宽或更新阶段

作者:互联网

我创建了一个小型KineticJS动画,你可以在这个地址看到:

http://sandbox-ben.kimbiaservices.com/kineticjs/index.html

我想找到一种方法,让这个动画始终设置为窗口宽度的100%. (它将是另一个元素的“背景”区域.)

我可以通过将jQuery中的宽度设置为$(window).width()来做初始设置(可能有其他方法可以做到这一点,但jQuery已经被使用了),但我无法弄清楚如何重绘/在调整大小或方向更改时重置舞台.

那么,是否有办法执行以下任何操作来完成此任务:

>我可以以某种方式将舞台设置为可变宽度(100%)吗? (我假设答案是否定的,但即使是肯定的,我也不确定动画是否能够相对缩放.)
>我可以清除动画并在调整大小或方向更改时重新创建动画吗?这听起来并不是非常有效,当我尝试在resize和orientationchange上使用layer.remove()时,它几乎挂起了浏览器.
>或者是否有一种简单的方法将此图像转换为SVG文件,然后使用jQuery SVG来完成同样的事情? (前提是所有内容仍可用于调整大小和方向更改.)
>或者还有其他一些我没想到的东西?

解决方法:

我想我找到了解决方案.尝试检测.on(‘resize’)的问题在于,调整窗口大小的行为会导致事件触发数万次,从而拖延浏览器.

灵感来自这个答案:Detect when a window is resized using JavaScript ? – 我能够创建一个jQuery事件,可以检测(或多或少)调整大小时间.完成后,我清空容器元素并重新启动初始绘制脚本.下面的代码可以解决问题:

$(window).on('resize',function(){
    if(this.resizeTO) clearTimeout(this.resizeTO);
    this.resizeTO = setTimeout(function(){
        $(this).trigger('resizeEnd');
    },500);
});

$(window).on('resizeEnd orientationchange',function(){
    $('#container').empty();
    RunHeaderAnim();
});

标签:kineticjs,javascript,jquery,svg,canvas
来源: https://codeday.me/bug/20190725/1536075.html