/******************************************************************************* * Copyright 2011 See AUTHORS file. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package com.badlogic.gdx.scenes.scene2d.actions; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.math.Interpolation; import com.badlogic.gdx.scenes.scene2d.Action; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.EventListener; import com.badlogic.gdx.scenes.scene2d.Touchable; import com.badlogic.gdx.utils.Pool; import com.badlogic.gdx.utils.Pools; /** Static convenience methods for using pooled actions, intended for static import. * @author Nathan Sweet */ public class Actions { /** Returns a new or pooled action of the specified type. */ static public <T extends Action> T action (Class<T> type) { Pool<T> pool = Pools.get(type); T action = pool.obtain(); action.setPool(pool); return action; } static public AddAction addAction (Action action) { AddAction addAction = action(AddAction.class); addAction.setAction(action); return addAction; } static public AddAction addAction (Action action, Actor targetActor) { AddAction addAction = action(AddAction.class); addAction.setTarget(targetActor); addAction.setAction(action); return addAction; } static public RemoveAction removeAction (Action action) { RemoveAction removeAction = action(RemoveAction.class); removeAction.setAction(action); return removeAction; } static public RemoveAction removeAction (Action action, Actor targetActor) { RemoveAction removeAction = action(RemoveAction.class); removeAction.setTarget(targetActor); removeAction.setAction(action); return removeAction; } /** Moves the actor instantly. */ static public MoveToAction moveTo (float x, float y) { return moveTo(x, y, 0, null); } static public MoveToAction moveTo (float x, float y, float duration) { return moveTo(x, y, duration, null); } static public MoveToAction moveTo (float x, float y, float duration, Interpolation interpolation) { MoveToAction action = action(MoveToAction.class); action.setPosition(x, y); action.setDuration(duration); action.setInterpolation(interpolation); return action; } static public MoveToAction moveToAligned (float x, float y, int alignment) { return moveToAligned(x, y, alignment, 0, null); } static public MoveToAction moveToAligned (float x, float y, int alignment, float duration) { return moveToAligned(x, y, alignment, duration, null); } static public MoveToAction moveToAligned (float x, float y, int alignment, float duration, Interpolation interpolation) { MoveToAction action = action(MoveToAction.class); action.setPosition(x, y, alignment); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Moves the actor instantly. */ static public MoveByAction moveBy (float amountX, float amountY) { return moveBy(amountX, amountY, 0, null); } static public MoveByAction moveBy (float amountX, float amountY, float duration) { return moveBy(amountX, amountY, duration, null); } static public MoveByAction moveBy (float amountX, float amountY, float duration, Interpolation interpolation) { MoveByAction action = action(MoveByAction.class); action.setAmount(amountX, amountY); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Sizes the actor instantly. */ static public SizeToAction sizeTo (float x, float y) { return sizeTo(x, y, 0, null); } static public SizeToAction sizeTo (float x, float y, float duration) { return sizeTo(x, y, duration, null); } static public SizeToAction sizeTo (float x, float y, float duration, Interpolation interpolation) { SizeToAction action = action(SizeToAction.class); action.setSize(x, y); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Sizes the actor instantly. */ static public SizeByAction sizeBy (float amountX, float amountY) { return sizeBy(amountX, amountY, 0, null); } static public SizeByAction sizeBy (float amountX, float amountY, float duration) { return sizeBy(amountX, amountY, duration, null); } static public SizeByAction sizeBy (float amountX, float amountY, float duration, Interpolation interpolation) { SizeByAction action = action(SizeByAction.class); action.setAmount(amountX, amountY); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Scales the actor instantly. */ static public ScaleToAction scaleTo (float x, float y) { return scaleTo(x, y, 0, null); } static public ScaleToAction scaleTo (float x, float y, float duration) { return scaleTo(x, y, duration, null); } static public ScaleToAction scaleTo (float x, float y, float duration, Interpolation interpolation) { ScaleToAction action = action(ScaleToAction.class); action.setScale(x, y); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Scales the actor instantly. */ static public ScaleByAction scaleBy (float amountX, float amountY) { return scaleBy(amountX, amountY, 0, null); } static public ScaleByAction scaleBy (float amountX, float amountY, float duration) { return scaleBy(amountX, amountY, duration, null); } static public ScaleByAction scaleBy (float amountX, float amountY, float duration, Interpolation interpolation) { ScaleByAction action = action(ScaleByAction.class); action.setAmount(amountX, amountY); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Rotates the actor instantly. */ static public RotateToAction rotateTo (float rotation) { return rotateTo(rotation, 0, null); } static public RotateToAction rotateTo (float rotation, float duration) { return rotateTo(rotation, duration, null); } static public RotateToAction rotateTo (float rotation, float duration, Interpolation interpolation) { RotateToAction action = action(RotateToAction.class); action.setRotation(rotation); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Rotates the actor instantly. */ static public RotateByAction rotateBy (float rotationAmount) { return rotateBy(rotationAmount, 0, null); } static public RotateByAction rotateBy (float rotationAmount, float duration) { return rotateBy(rotationAmount, duration, null); } static public RotateByAction rotateBy (float rotationAmount, float duration, Interpolation interpolation) { RotateByAction action = action(RotateByAction.class); action.setAmount(rotationAmount); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Sets the actor's color instantly. */ static public ColorAction color (Color color) { return color(color, 0, null); } /** Transitions from the color at the time this action starts to the specified color. */ static public ColorAction color (Color color, float duration) { return color(color, duration, null); } /** Transitions from the color at the time this action starts to the specified color. */ static public ColorAction color (Color color, float duration, Interpolation interpolation) { ColorAction action = action(ColorAction.class); action.setEndColor(color); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Sets the actor's alpha instantly. */ static public AlphaAction alpha (float a) { return alpha(a, 0, null); } /** Transitions from the alpha at the time this action starts to the specified alpha. */ static public AlphaAction alpha (float a, float duration) { return alpha(a, duration, null); } /** Transitions from the alpha at the time this action starts to the specified alpha. */ static public AlphaAction alpha (float a, float duration, Interpolation interpolation) { AlphaAction action = action(AlphaAction.class); action.setAlpha(a); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Transitions from the alpha at the time this action starts to an alpha of 0. */ static public AlphaAction fadeOut (float duration) { return alpha(0, duration, null); } /** Transitions from the alpha at the time this action starts to an alpha of 0. */ static public AlphaAction fadeOut (float duration, Interpolation interpolation) { AlphaAction action = action(AlphaAction.class); action.setAlpha(0); action.setDuration(duration); action.setInterpolation(interpolation); return action; } /** Transitions from the alpha at the time this action starts to an alpha of 1. */ static public AlphaAction fadeIn (float duration) { return alpha(1, duration, null); } /** Transitions from the alpha at the time this action starts to an alpha of 1. */ static public AlphaAction fadeIn (float duration, Interpolation interpolation) { AlphaAction action = action(AlphaAction.class); action.setAlpha(1); action.setDuration(duration); action.setInterpolation(interpolation); return action; } static public VisibleAction show () { return visible(true); } static public VisibleAction hide () { return visible(false); } static public VisibleAction visible (boolean visible) { VisibleAction action = action(VisibleAction.class); action.setVisible(visible); return action; } static public TouchableAction touchable (Touchable touchable) { TouchableAction action = action(TouchableAction.class); action.setTouchable(touchable); return action; } static public RemoveActorAction removeActor () { return action(RemoveActorAction.class); } static public RemoveActorAction removeActor (Actor removeActor) { RemoveActorAction action = action(RemoveActorAction.class); action.setTarget(removeActor); return action; } static public DelayAction delay (float duration) { DelayAction action = action(DelayAction.class); action.setDuration(duration); return action; } static public DelayAction delay (float duration, Action delayedAction) { DelayAction action = action(DelayAction.class); action.setDuration(duration); action.setAction(delayedAction); return action; } static public TimeScaleAction timeScale (float scale, Action scaledAction) { TimeScaleAction action = action(TimeScaleAction.class); action.setScale(scale); action.setAction(scaledAction); return action; } static public SequenceAction sequence (Action action1) { SequenceAction action = action(SequenceAction.class); action.addAction(action1); return action; } static public SequenceAction sequence (Action action1, Action action2) { SequenceAction action = action(SequenceAction.class); action.addAction(action1); action.addAction(action2); return action; } static public SequenceAction sequence (Action action1, Action action2, Action action3) { SequenceAction action = action(SequenceAction.class); action.addAction(action1); action.addAction(action2); action.addAction(action3); return action; } static public SequenceAction sequence (Action action1, Action action2, Action action3, Action action4) { SequenceAction action = action(SequenceAction.class); action.addAction(action1); action.addAction(action2); action.addAction(action3); action.addAction(action4); return action; } static public SequenceAction sequence (Action action1, Action action2, Action action3, Action action4, Action action5) { SequenceAction action = action(SequenceAction.class); action.addAction(action1); action.addAction(action2); action.addAction(action3); action.addAction(action4); action.addAction(action5); return action; } static public SequenceAction sequence (Action... actions) { SequenceAction action = action(SequenceAction.class); for (int i = 0, n = actions.length; i < n; i++) action.addAction(actions[i]); return action; } static public SequenceAction sequence () { return action(SequenceAction.class); } static public ParallelAction parallel (Action action1) { ParallelAction action = action(ParallelAction.class); action.addAction(action1); return action; } static public ParallelAction parallel (Action action1, Action action2) { ParallelAction action = action(ParallelAction.class); action.addAction(action1); action.addAction(action2); return action; } static public ParallelAction parallel (Action action1, Action action2, Action action3) { ParallelAction action = action(ParallelAction.class); action.addAction(action1); action.addAction(action2); action.addAction(action3); return action; } static public ParallelAction parallel (Action action1, Action action2, Action action3, Action action4) { ParallelAction action = action(ParallelAction.class); action.addAction(action1); action.addAction(action2); action.addAction(action3); action.addAction(action4); return action; } static public ParallelAction parallel (Action action1, Action action2, Action action3, Action action4, Action action5) { ParallelAction action = action(ParallelAction.class); action.addAction(action1); action.addAction(action2); action.addAction(action3); action.addAction(action4); action.addAction(action5); return action; } static public ParallelAction parallel (Action... actions) { ParallelAction action = action(ParallelAction.class); for (int i = 0, n = actions.length; i < n; i++) action.addAction(actions[i]); return action; } static public ParallelAction parallel () { return action(ParallelAction.class); } static public RepeatAction repeat (int count, Action repeatedAction) { RepeatAction action = action(RepeatAction.class); action.setCount(count); action.setAction(repeatedAction); return action; } static public RepeatAction forever (Action repeatedAction) { RepeatAction action = action(RepeatAction.class); action.setCount(RepeatAction.FOREVER); action.setAction(repeatedAction); return action; } static public RunnableAction run (Runnable runnable) { RunnableAction action = action(RunnableAction.class); action.setRunnable(runnable); return action; } static public LayoutAction layout (boolean enabled) { LayoutAction action = action(LayoutAction.class); action.setLayoutEnabled(enabled); return action; } static public AfterAction after (Action action) { AfterAction afterAction = action(AfterAction.class); afterAction.setAction(action); return afterAction; } static public AddListenerAction addListener (EventListener listener, boolean capture) { AddListenerAction addAction = action(AddListenerAction.class); addAction.setListener(listener); addAction.setCapture(capture); return addAction; } static public AddListenerAction addListener (EventListener listener, boolean capture, Actor targetActor) { AddListenerAction addAction = action(AddListenerAction.class); addAction.setTarget(targetActor); addAction.setListener(listener); addAction.setCapture(capture); return addAction; } static public RemoveListenerAction removeListener (EventListener listener, boolean capture) { RemoveListenerAction addAction = action(RemoveListenerAction.class); addAction.setListener(listener); addAction.setCapture(capture); return addAction; } static public RemoveListenerAction removeListener (EventListener listener, boolean capture, Actor targetActor) { RemoveListenerAction addAction = action(RemoveListenerAction.class); addAction.setTarget(targetActor); addAction.setListener(listener); addAction.setCapture(capture); return addAction; } }