final MultiImageBackdrop multiImgBD = new MultiImageBackdrop(ColorRGBA.BLACK_NO_ALPHA);
clockPanel.setBackdrop(multiImgBD);
final Texture clockTex = TextureManager.load("images/clock.png", Texture.MinificationFilter.Trilinear, false);
final TransformedSubTex clockBack = new TransformedSubTex(new SubTex(clockTex, 64, 65, 446, 446));
final double scale = .333;
clockBack.setPivot(new Vector2(.5, .5));
clockBack.getTransform().setScale(scale);
clockBack.setAlignment(Alignment.MIDDLE);
clockBack.setPriority(0);
multiImgBD.addImage(clockBack);
final TransformedSubTex hour = new TransformedSubTex(new SubTex(clockTex, 27, 386, 27, 126));
hour.setPivot(new Vector2(.5, 14 / 126f));
hour.getTransform().setScale(scale);
hour.setAlignment(Alignment.MIDDLE);
hour.setPriority(1);
multiImgBD.addImage(hour);
final TransformedSubTex minute = new TransformedSubTex(new SubTex(clockTex, 0, 338, 27, 174));
minute.setPivot(new Vector2(.5, 14 / 174f));
minute.getTransform().setScale(scale);
minute.setAlignment(Alignment.MIDDLE);
minute.setPriority(2);
multiImgBD.addImage(minute);
clockPanel.addController(new SpatialController<Spatial>() {
public void update(final double time, final Spatial caller) {
final double angle1 = _timer.getTimeInSeconds() % MathUtils.TWO_PI;
final double angle2 = (_timer.getTimeInSeconds() / 12.) % MathUtils.TWO_PI;
minute.getTransform().setRotation(new Quaternion().fromAngleAxis(angle1, Vector3.NEG_UNIT_Z));
hour.getTransform().setRotation(new Quaternion().fromAngleAxis(angle2, Vector3.NEG_UNIT_Z));
clockPanel.fireComponentDirty();
};
});