0

我有这段代码,每次更改参数(c)之一时都会运行。(这是某种无缝纹理生成器,以便更好地理解我想要得到的东西):

class drawPreview 
    constructor: (c) ->
        pic = new Image()
        pic.src = $("#sample_file").attr('src')
        canvas = document.getElementById("preview_canvas")
        context = canvas.getContext("2d")
        img_w = $("#sample_file").attr('width')
        img_h = $("#sample_file").attr('height')
        tiles = Math.floor(img_w / c.w) + 1
        for i in [0..tiles]
            console.log('t')
            context.width = context.width
            context.drawImage(pic, c.x, c.y, c.w, c.h, c.w*i, 0, c.w, c.h)

这在 Firefox 中效果很好(有一些滞后)。但在 Chrome 中,它会冻结一段时间并以同样的方式解冻。有没有办法让用户的行为更明智?

4

1 回答 1

0

如果只有参数更改是“C”,则将所有代码移到此块之外。

将下面的代码移出它应该被调用一次。

        pic = new Image()
        pic.src = $("#sample_file").attr('src')
        canvas = document.getElementById("preview_canvas")
        context = canvas.getContext("2d")
        img_w = $("#sample_file").attr('width')
        img_h = $("#sample_file").attr('height')

上述操作可能代价高昂。

于 2013-07-03T04:51:57.060 回答