Flash CC Canvas 和 GSAP:如何在舞台上设置动画片段的注册点

Flash CC Canvas and GSAP: How to set registration point of movieclip on stage

我将如何动态更改舞台(根)上标记为 "tablet" 的动画片段的注册点?

例如:我有以下内容:

var tablet = this.tablet;    //movieclip labeled "tablet" on stage
function resetTablet(){
tablet.regX = tablet.width/2; //move registration point to center
tablet.regY = tablet.height/2;

}

然而,当我使用 GSAP 调用它时:

var tl = new TimelineLite();
tl.to(tablet, 1, {alpha:1, onComplete:resetTablet})
  .to(tablet, 3, {alpha:0, scaleX:1.5, scaleY:1.5})

注册点仍然设置在左上角而不是中心。

我在这里做错了什么?谢谢!

注册点影响变形点和位置的变化。如果将 100x100 像素的显示对象设置为 regX=50;regY=50,那么它将从该点开始绘制,将内容向左上方移动 50 像素。如果您进行了更改,您还应该将剪辑转换为 x=50;y=50

您的示例存在一个问题,即 EaselJS 内容 (explained here) 中没有 widthheight。您可以使用 nominalBounds 属性 获取 Flash CC 生成的任何内容的边界,Flash 在每个对象上导出为 属性。如果您有多个框架,您可以在发布设置中打开 "multi-frame bounds",并且 frameBounds 属性 也会添加到对象中。

请注意 nominalBoundsframeBounds 未被 getBounds 方法使用。

您可以通过以下方式处理它。

var bounds = tablet.nominalBounds;
tablet.regX = bounds.width/2;
tablet.regY = bounds.height/2;

// Optional if your actual registration point was [0,0] before:
tablet.x += tablet.regX;
tablet.y += tablet.regX;

希望对您有所帮助。