0

所以我对这个他们称之为“Adobe Animate CC”的下一代 Flash 应用程序很陌生,我正在尝试创建一个交互式地图场景……非常基础。如果你点击美国它应该放大。再次点击它应该缩小。

我遇到的问题是,即使我的地图是从 SVG 文件导入的——当我使用 CreateJS 应用缩放补间时,我可以告诉我,当我驻留在“Adobe Animate CC”工作区中时,它会保留其矢量数据图形的边缘变得非常像素化。

这是我正在使用的代码:

var _this = this;
_this.stop();

_this.america.addEventListener("click", zoomMap);

 function zoomMap(event) { 

     createjs.Tween.get(exportRoot.world1).to({scaleX: 10, scaleY: 10, x: 4000, y: 1000}, 1000);

}

以下是像素化结果的一些图像:

像素

仍然

更令人不安的是,那个蓝绿色的圆圈是符号内的原生圆圈对象。不是svg。我希望至少在转型下这会保持清晰。

这是不可避免的吗?应用程序是否在导出时缓存我的矢量文件的位图版本?我能阻止这一切吗?我可以在补间期间和之后强制重新渲染矢量文件吗?有没有办法解决?这个应用程序是否真的支持矢量图形?

4

1 回答 1

1

Animate可能会导出为图像,但除非您告诉它,否则它不应该。你的库 JavaScript 是什么样的?有没有导出图片?也许搜索源代码,.cache看看 Adob​​e 是否在幕后做了任何有趣的事情。

如果地图是 SVG 源:不幸的是,EaselJS(它是 Animate 导出的基础)中唯一的 SVG 支持是将 svg 作为“位图源”。这意味着它被视为特定尺寸的图像,将其缩放到“100%”以上将插入细节。

可以将其作为更大的位图加载,然后按比例缩小以开始,但这会:

  1. 使它在内存中更大
  2. 仍然只能让你扩展这么多

另一种选择是将 SVG 资源导入 Adob​​e Animate,它应该将其转换为矢量图形。如果它是 EaselJS 中的矢量,您可以随意缩放它,因为它使用 Canvas 矢量 API 进行绘制,而不是图像源。

您提到绿色圆圈是原生的(我假设 Animate 中的形状?)。你确定它没有被导出为图像,而不是形状吗?你在缓存什么吗?

希望有帮助!

于 2019-01-16T18:06:11.167 回答