diff --git a/spine-libgdx/spine-skeletonviewer/assets/skin/skin.json b/spine-libgdx/spine-skeletonviewer/assets/skin/skin.json index 587970315..582d1b0e5 100644 --- a/spine-libgdx/spine-skeletonviewer/assets/skin/skin.json +++ b/spine-libgdx/spine-skeletonviewer/assets/skin/skin.json @@ -12,6 +12,7 @@ com.badlogic.gdx.scenes.scene2d.ui.Skin$TintedDrawable: { selection: { name: white, color: selection }, dim: { name: white, color: { r: 0, g: 0, b: 0, a: 0.3 } }, list-selection: { name: list-selection, color: selection }, + slider-handle-disabled: { name: slider-handle, color: disabled }, }, com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: { default: { @@ -61,6 +62,6 @@ com.badlogic.gdx.scenes.scene2d.ui.CheckBox$CheckBoxStyle: { }, }, com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: { - default-horizontal: { background: slider-bg, knob: slider-handle }, + default-horizontal: { background: slider-bg, knob: slider-handle, disabledKnob: slider-handle-disabled }, }, } diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java index da939e090..1e26cb6f3 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java @@ -209,7 +209,7 @@ public class SkeletonViewer extends ApplicationAdapter { entry = state.setAnimation(track, ui.animationList.getSelected(), ui.loopCheckbox.isChecked()); entry.setHoldPrevious(track > 0 && ui.holdPrevCheckbox.isChecked()); } - entry.setMixBlend(ui.addCheckbox.isChecked() ? MixBlend.add : MixBlend.replace); + entry.setMixBlend(track > 0 && ui.addCheckbox.isChecked() ? MixBlend.add : MixBlend.replace); entry.setReverse(ui.reverseCheckbox.isChecked()); entry.setAlpha(ui.alphaSlider.getValue()); } diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewerUI.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewerUI.java index 6af86e079..ef9572574 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewerUI.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewerUI.java @@ -62,6 +62,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup; import com.badlogic.gdx.scenes.scene2d.ui.Window; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; +import com.badlogic.gdx.scenes.scene2d.utils.Drawable; import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Null; import com.badlogic.gdx.utils.viewport.ScreenViewport; @@ -125,7 +126,9 @@ class SkeletonViewerUI { ButtonGroup trackButtons = new ButtonGroup(); CheckBox loopCheckbox = new CheckBox("Loop", skin); - CheckBox addCheckbox = new CheckBox("Add", skin); + CheckBox reverseCheckbox = new CheckBox("Reverse", skin); + CheckBox holdPrevCheckbox = new HigherTrackCheckBox("Hold previous"); + CheckBox addCheckbox = new HigherTrackCheckBox("Add"); Slider alphaSlider = new Slider(0, 1, 0.01f, false, skin); Label alphaLabel = new Label("100%", skin); @@ -137,9 +140,6 @@ class SkeletonViewerUI { Label speedLabel = new Label("1.0x", skin); TextButton speedResetButton = new TextButton("Reset", skin); - CheckBox reverseCheckbox = new CheckBox("Reverse", skin); - CheckBox holdPrevCheckbox = new CheckBox("Hold previous", skin); - Slider mixSlider = new Slider(0, 4, 0.01f, false, skin); Label mixLabel = new Label("0.3s", skin); @@ -194,6 +194,7 @@ class SkeletonViewerUI { alphaSlider.setValue(1); alphaSlider.setDisabled(true); + alphaLabel.setColor(skin.getColor("disabled")); addCheckbox.setDisabled(true); holdPrevCheckbox.setDisabled(true); @@ -557,6 +558,7 @@ class SkeletonViewerUI { animationList.getSelection().setProgrammaticChangeEvents(true); alphaSlider.setDisabled(track == 0); + alphaLabel.setColor(track == 0 ? skin.getColor("disabled") : Color.WHITE); alphaSlider.setValue(current == null ? 1 : current.alpha); addCheckbox.setDisabled(track == 0); @@ -564,9 +566,11 @@ class SkeletonViewerUI { if (current != null) { loopCheckbox.setChecked(current.getLoop()); - addCheckbox.setChecked(current.getMixBlend() == MixBlend.add); reverseCheckbox.setChecked(current.getReverse()); - holdPrevCheckbox.setChecked(current.getHoldPrevious()); + if (track > 0) { + addCheckbox.setChecked(current.getMixBlend() == MixBlend.add); + holdPrevCheckbox.setChecked(current.getHoldPrevious()); + } } } }; @@ -762,4 +766,15 @@ class SkeletonViewerUI { ex.printStackTrace(); } } + + class HigherTrackCheckBox extends CheckBox { + public HigherTrackCheckBox (String text) { + super(text, skin); + } + + protected Drawable getImageDrawable () { + if (trackButtons.getCheckedIndex() == 0) return getStyle().checkboxOffDisabled; + return super.getImageDrawable(); + } + } }