使用KineticJS 5.0.1构建画布,在我的Retina屏幕上看起来很糟糕。我不知道发生了什么,因为KineticJS jsfiddle的外观还不错。然后我意识到jsfiddle使用版本4.3.1。切换,现在一切都变得美丽而视网膜。
v5为什么不自动处理此问题?我该如何解决?我试图设置Kinetic.pixelRatio = 2,但没有做任何事情。
最佳答案
事实证明,pixelRatio被硬编码到dynamicJS v5 +中。这是由于某种缩放/缩放问题,部分是由于性能问题。我将进行实验,但与此同时,可以在dynamicJS的源代码中轻松修复此问题。查找此功能:
;(function() {
// calculate pixel ratio
var canvas = Kinetic.Util.createCanvasElement(),
context = canvas.getContext('2d'),
// if using a mobile device, calculate the pixel ratio. Otherwise, just use
// 1. For desktop browsers, if the user has zoom enabled, it affects the pixel ratio
// and causes artifacts on the canvas. As of 02/26/2014, there doesn't seem to be a way
// to reliably calculate the browser zoom for modern browsers, which is why we just set
// the pixel ratio to 1 for desktops
_pixelRatio = Kinetic.UA.mobile ? (function() {
var devicePixelRatio = window.devicePixelRatio || 1,
backingStoreRatio = context.webkitBackingStorePixelRatio
|| context.mozBackingStorePixelRatio
|| context.msBackingStorePixelRatio
|| context.oBackingStorePixelRatio
|| context.backingStorePixelRatio
|| 1;
return devicePixelRatio / backingStoreRatio;
})() : 1;
并将最后一行的1更改为window.devicePixelRatio。性能确实不是很差,但是我想我要尝试做的是,因为按下按钮时我的使用只需要对许多对象进行简短的动画处理,就可以使其在KineticJS中以pixelRatio 1进行动画处理,然后清除然后将其重新绘制为pixelRatio =适合该设备的成品。
关于javascript - 不能更改KineticJS 5.0.1 PixelRatio,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25091404/