我在flash画布动画项目(cc2015)中创建了一个动态的动画片段, 但无法获得大小,它只返回null。即使我在发布设置中启用了MultiframeBounds,它仍然一无所获。
PS:如果幻灯片中有文本字段,我可以获得文本字段的边界,但不是整个尺寸。
以下代码:
var root = this;
root.name = "Root";
(function(){
var maxMcNum = 4;
var wrapper = new createjs.MovieClip();
for(var i=1; i<=maxMcNum; i++){
eval("var slide"+ i +"=new lib.mc"+ i +"()");
eval("wrapper.addChild(slide"+ i +")");
eval("slide"+ i +".y = "+ (i-1) +"*slide"+ i +".nominalBounds.height");
}
root.addChild(wrapper);
stage.on("click", function(){
//alert(wrapper.frameBounds[wrapper.currentFrame]);
alert(wrapper.getBounds());
});
})();
答案 0 :(得分:1)
这是Flash导出单帧MovieClip符号的问题。它尝试通过继承var t = window.location.pathname.split("/")
t.pop();
t.pop();
t.pop();
而不是Container
来优化输出。因此,它不会为符号输出MovieClip
,因此实例会在尝试计算运行时的边界时返回。正如Lanny所提到的,运行时边界不包含矢量图形,因此除非添加其他内容(如文本框),否则您将获得“null”。
我已向Adobe报告此问题,但您现在可以通过将代码放在单帧MC的第一帧(即幻灯片)上来解决此问题。例如,只需将frameBounds
放在第一帧动作中,就会强制Flash将符号导出为MovieClip,并包含null;
。
你的frameBounds
(我不完全确定你为什么在这里使用MC而不是容器),将使用运行时限,但这应该可以正常工作,因为它将查询子元素并返回它们返回的聚合转换边界。
答案 1 :(得分:0)
为什么您的代码已经过评估?
标称边界是由Flash CC导出计算和注入的特殊属性。默认情况下,没有任何标称边界,EaselJS没有内置的计算方法。你可以获得Bitmap,Text和Sprites的边界(以及包含它们的容器),但是无法计算Graphics。
getBounds
方法不会查找nominalBounds
,但如果您在发布设置中切换“多帧边界”,则getBounds将获得由Flash CC分配的frameBounds
在出口期间。