Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android libgdx中参与者的行为_Android_Action_Actor_Libgdx - Fatal编程技术网

Android libgdx中参与者的行为

Android libgdx中参与者的行为,android,action,actor,libgdx,Android,Action,Actor,Libgdx,我已经提出了我的建议,但我不清楚如何利用action和act方法。除了基本的Javadoc之外,我还没有找到关于这些方法的好教程 任何人都可以提供一个关于参与者操作的注释示例吗?由于LibGDX的更改,这个答案已经过时。有关最新文档,请参阅。 LibGDX中有各种可用操作可供您使用。它们位于com.badlogic.gdx.scenes.scene2d.actions包中。我想说有三种行动: 动画动作 复合作用 其他行动 动画动作会修改角色的各种属性,例如位置、旋转、缩放和alpha。它们是:

我已经提出了我的建议,但我不清楚如何利用
action
act
方法。除了基本的Javadoc之外,我还没有找到关于这些方法的好教程


任何人都可以提供一个关于参与者操作的注释示例吗?

由于LibGDX的更改,这个答案已经过时。有关最新文档,请参阅。

LibGDX中有各种可用操作可供您使用。它们位于
com.badlogic.gdx.scenes.scene2d.actions
包中。我想说有三种行动:

  • 动画动作
  • 复合作用
  • 其他行动
  • 动画动作会修改角色的各种属性,例如位置、旋转、缩放和alpha。它们是:

    • FadeIn-将演员的alpha从演员的当前alpha更改为1
    • 淡出-将演员的alpha从演员的当前alpha更改为0
    • FadeTo-将演员的alpha从演员的当前alpha更改为特定值
    • MoveBy-按特定数量移动您的演员
    • 移动到-将演员移动到特定位置
    • RotateBy-按特定角度旋转演员
    • 旋转-将演员旋转到特定角度
    • ScaleTo-将演员缩放到特定的比例因子
    组合动作将多个动作组合在一个动作中,有:

    • 并行-并行执行给定操作-一次执行所有操作
    • 顺序-依次执行给定的操作
    其他行动:

    • 重复-重复给定的操作n次
    • 永远-永远重复给定的动作
    • 延迟-将给定操作的执行延迟特定时间
    • 移除-从舞台移除给定的演员
    每个操作都有一个静态方法
    $
    ,该方法创建该操作的实例。 创建动画动作的示例:

    MoveTo move = MoveTo.$(200, 200, 0.5f); //move Actor to location (200,200) in 0.5 s
    RotateTo rotate = RotateTo.$(60, 0.5f); //rotate Actor to angle 60 in 0.5 s
    
    创建更复杂动作序列的示例:

    Sequence sequence = Sequence.$(
                  MoveTo.$(200, 200, 0.5f), //move actor to 200,200
                  RotateTo.$(90, 0.5f),     //rotate actor to 90°
                  FadeOut.$(0.5f),          //fade out actor (change alpha to 0)
                  Remove.$()                //remove actor from stage
                );
    
    动画动作还允许指定
    插值器
    。有多种实现方式:

    • 加速加速内插器
    • 加速器内极器
    • 预期内极器
    • 减速器
    • 线性插值器
    • 超调器
    插值器Javadoc:插值器定义动画的变化率。这允许对基本动画效果(alpha、缩放、平移、旋转)进行加速、减速等。 要将插值器设置为动作,请执行以下操作:

    action.setInterpolator(AccelerateDecelerateInterpolator.$());
    
    当准备好interpolator的动作时,将该动作设置为演员:

    actor.action(yourAction);
    
    要实际执行为舞台上的演员定义的所有动作,必须在渲染方法中调用stage.act(…):

    stage.act(Gdx.graphics.getDeltaTime());
    stage.draw();
    

    下面是一个有用的链接,用于类的使用。 例如,要创建具有效果的移动,您可以简单地使用:

    myActor.addAction(Actions.moveTo(100, 200, 0.7f, Interpolation.bounceOut));
    
    如果将Actions类导入设置为静态(必须手动设置):

    然后,您可以使用以下操作:

    myActor.addAction(moveTo(100, 200, 0.7f, Interpolation.bounceOut)); 
    

    你应该试试环球特温引擎。它使用方便,功能强大。。。而且,阅读复杂的动画就像在公园里散步一样,因为所有的命令都可以链接。见下面的例子

    步骤:

    1.
    2.创建一个accesor类。您可以节省时间并从中获取我正在使用的版本。
    3.在游戏类中声明TweenManager

        public static TweenManager tweenManager;
    

    在创建方法中:

        tweenManager = new TweenManager();
    
        tweenManager.update(Gdx.graphics.getDeltaTime());
    

    渲染方法中:

        tweenManager = new TweenManager();
    
        tweenManager.update(Gdx.graphics.getDeltaTime());
    

    4.随心所欲地使用它。例如

    使用弹性插值,在1.5秒内将演员移动到位置(100200):

    Tween.to(actor, ActorAccesor.POSITION_XY, 1.5f)
         .target(100, 200)
         .ease(Elastic.INOUT)
         .start(tweenManager);
    

    创建复杂的动画序列:

    Timeline.createSequence()
        // First, set all objects to their initial positions
        .push(Tween.set(...))
        .push(Tween.set(...))
        .push(Tween.set(...))
    
        // Wait 1s
        .pushPause(1.0f)
    
        // Move the objects around, one after the other
        .push(Tween.to(...))
        .push(Tween.to(...))
        .push(Tween.to(...))
    
        // Then, move the objects around at the same time
        .beginParallel()
            .push(Tween.to(...))
            .push(Tween.to(...))
            .push(Tween.to(...))
        .end()
    
        // And repeat the whole sequence 2 times
        .repeatYoyo(2, 0.5f)
    
        // Let's go!
        .start(tweenManager);
    

    更多详细信息


    更新:替换了死链接

    非常好,全面的答案。非常感谢您的回答:)解释得非常好