我正在使用来自Flash的canvas,createjs和assets创建一个动态窗口小部件。我在Flash中有一个导出到js的动画片段,并使用createjs将这个动画片段渲染到画布中。它必须是响应式的,因此画布可以是任何大小 - 通过额外的js代码我可以缩放导出的动画片段以适应。
缩放功能很简单。这是CoffeeScript代码,但它很直接:
@movieclip = new lib.MyWidget()
@stage.addChild(@movieclip)
box = @movieclip.getBounds()
w_ratio = $canvas.width() / box.width
h_ratio = $canvas.height() / box.height
@movieclip.scaleX = @movieclip.scaleY = Math.min(w_ratio, h_ratio)
@movieclip.x = (@stage.canvas.width) / 2
@movieclip.y = (@stage.canvas.height) / 2
虽然结果总是关闭。动画片段不能正确缩放,结果太大或太小。就好像原始的getBounds
测量值是错误的。我也试过了getTransformedBounds
,但似乎没有区别。
知道是什么导致了这个吗?原始的动画片段动画中有几层,其中一些被掩盖......我还在试图看看它是否与它有关
库到位:createjs,movieclipjs,tweenjs,jquery。
答案 0 :(得分:0)
我花了一段时间才弄明白这一点。 easeljs movieclips没有width
和height
属性这一事实使得它更加令人困惑。但事实证明它是完全不同的:它是Flash资产导出设置。
发布时,请务必启用"复帧边界"。输出的JS文件要大得多,但在我的情况下还可以。
多帧边界 - 如果选中,则时间轴符号将包含一个包含数组的“frameBounds”属性 矩形对应于时间轴中每个帧的边界。注意:可能会导致选择此选项 增加发布时间
http://wwwimages.adobe.com/content/dam/Adobe/en/products/flash/pdfs/html_extension_faq_ie.pdf