我有一个 MovieClip 对象,它在 .swc 文件中为动作脚本 (AS3) 导出。
当我将剪辑的一个实例放置在舞台上而不做任何修改时,它会出现在左上角,大约离舞台一半(即只有对象的右下象限可见)。我知道这是因为剪辑的注册点不是左上角。
如果您在影片剪辑上调用 getBounds() ,您可以获得剪辑的边界(大概从它对齐的“点”开始),它看起来像(左:-303,上:-100,右:303,下: 100),您可以从剪辑 x 和 y 中减去 left 和 top 值:
clip.x -= bounds.left;
clip.y -= bounds.top;
这似乎正确地将剪辑在舞台上完全对齐,剪辑的左上角正好位于舞台的角落。
但!将其对准舞台中央时,遵循该逻辑似乎不起作用!
clip.x = (stage.stageWidth / 2);
etc...
这创造了一个疯狂的平行宇宙,剪辑现在位于舞台的右下角。
我唯一的线索是看:
clip.transform.matrix
和
clip.transform.concatenatedMatrix
矩阵的 tx 值为 748(舞台高度的一半) ty 值为 426(舞台高度的一半)
concatenatedMatrix 的 tx 值为 1699.5, ty 值为 967.75
显然,这也是影片剪辑的位置,但为什么呢?这个额外的翻译来自哪里?