You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LibGdx中实现Actor居中缩放的弹出效果方法咨询

嘿,这个问题我之前做LibGdx弹窗动画时也碰到过!默认情况下Actor的缩放原点是左下角,直接用scaleTo的话会往右上方向放大,导致中心偏移。要实现中心固定、双向缩放的效果,核心就是把Actor的原点设置为自身中心。

解决步骤

1. 先设置Actor的缩放原点为中心

这是最关键的一步,LibGdx提供了两种便捷方式:

  • 用Align常量直接设置(推荐,代码更简洁):
    yourButton.setOrigin(Align.center);
    
  • 手动计算中心坐标:
    yourButton.setOrigin(yourButton.getWidth() / 2f, yourButton.getHeight() / 2f);
    

如果你的Actor(比如带动态文字的按钮)大小可能变化,建议重写sizeChanged()方法,确保每次尺寸更新后原点仍保持中心:

@Override
protected void sizeChanged() {
    super.sizeChanged();
    setOrigin(Align.center);
}

2. 调整你的缩放动作代码

原点设置完成后,再用你原来的序列动作,缩放就会以中心为基准向四周扩散了。可以再加个插值让动画更自然:

yourButton.addAction(sequence(
    scaleTo(1.3f, 1.3f, 0.2f, Interpolation.smooth),
    scaleTo(1f, 1f, 0.2f, Interpolation.smooth)
));

额外小提示

  • 如果是弹窗整体(比如Window组件)需要中心缩放,记得把弹窗根Actor的原点也设为中心,子元素会跟着一起以整体中心为基准缩放。
  • 不同的Interpolation插值能带来不同的动画质感,比如Interpolation.bounceOut可以做回弹效果,按需选择就行。

内容的提问来源于stack exchange,提问作者Frankey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:55:31