小编bri*_*art的帖子

为什么XCode比Illustrator或Photoshop更好地缩放矢量图像?

我尝试使用XCode的新PDF功能,基本上将图像缩放到1x,2x和3x.不幸的是我也在使用Spritekit,所以我宁愿使用SKTextureAtlases而不是资产目录.

我的问题是,pdf的栅格化版本看起来比Adobe Illustrator(或使用智能对象的Photoshop)的任何导出更好.

这是一个带有示例的Imgur专辑的链接.

具体来说,从Illustrator导出的图像有2个方形尺寸:60px和90px.Xcode中的图像都具有相同的名称,但有两个不同的地图集:atlas@2x.atlas和atlas@3x.atlas.PDF从Illustrator以30px的平方导出,然后Xcode将其缩放到2x和3x版本.

那么为什么Xcode版本看起来更清晰(特别是在圆角和平面之间的连接处)?

pdf xcode sprite-kit asset-catalog sktexture

7
推荐指数
1
解决办法
343
查看次数

Html5 Canvas"复合图层"导致长帧

我有一个网页上运行,用画JavaScript客户端requestAnimationFrame到画布上,并通过沟通的WebSockets到我的NodeJS后端服务器(使用"WS"模块在服务器端).

使用Chrome DevTools进行分析,似乎每帧的脚本,渲染和绘制的总时间最多只有几毫秒.然而,仍有20至40毫秒的长时间帧.

时间线显示,在几乎所有这些情况下,都存在超过帧长度的"响应"和/或朝向末端发生的"复合层".

一个例子

这基本上就是我使用requestAnimationFrame的方式:

function drawGame() {

    // Drawing to gameCanvas from cacheCanvas
    // cacheCanvas is updated whenever an update is received from the server

    ctx.drawImage(cacheCanvas,
        // source rectangle
        0, 0,
        gameCanvas.width*2, gameCanvas.height*2,

        // destination
        100, 100,
        gameCanvas.width*2, gameCanvas.height*2
    );

    requestAnimationFrame(drawGame);
}

requestAnimationFrame(drawGame);
Run Code Online (Sandbox Code Playgroud)

服务器使用setInterval()以60hz发送更新.当从服务器收到消息时,客户端立即绘制它.我怀疑这个时间与requestAnimationFrame结合可能是不正确的,并且导致帧结尾处的复合层.

即使这样,我也很困惑为什么在每个帧的脚本和"复合层"之间有这么多空闲时间.所以...

  • 有没有办法控制何时调用"复合层"?

  • 我应该保存每个更新消息中的数据,只在下一个动画帧的开头绘制它吗?

  • 什么是"回应"指的是什么?

谢谢!

javascript html5 canvas node.js requestanimationframe

5
推荐指数
1
解决办法
839
查看次数