public void load() { setCursor(Input.CURSOR_OFF); cursor = new ImageSprite("glow.png", 0, 0); cursor.setAnchor(0.5, 0.5); cursor.visible.set(false); // Create the mask maskLayer = new Group(); maskLayer.add(new FilledSprite(gray(18))); maskLayer.add(cursor); maskLayer.setBlendMode(BlendMode.Multiply()); maskLayer.createBackBuffer(); // Create the background image Timeline t = new Timeline(); Group imageLayer = new Group(); imageLayer.add(new FilledSprite(rgb(0xba9b65))); int size = 80; int spacing = 16; for (int i = -spacing / 2; i < Stage.getWidth(); i += spacing + size) { for (int j = -spacing / 2; j < Stage.getHeight(); j += spacing + size) { int color1 = colors[CoreMath.rand(colors.length - 1)]; int color2 = colors[CoreMath.rand(colors.length - 1)]; FilledSprite sprite = new FilledSprite(i, j, size, size, color1); imageLayer.add(sprite); int delay1 = CoreMath.rand(20000); int delay2 = delay1 + CoreMath.rand(20000); t.set(sprite.fillColor, color2, delay1); t.set(sprite.fillColor, color1, delay2); } } t.loopForever(); addTimeline(t); // Add the layers to the scene addLayer(imageLayer); addLayer(maskLayer); }
Sprite makeParticle() { CoreImage image = CoreImage.load("particle.png"); int color = hue(rand(0, 255)); final ImageSprite sprite = new ImageSprite(image.tint(color), 0, 0); sprite.setAnchor(0.5, 0.5); sprite.pixelSnapping.set(true); Blur blur = new Blur(8); blur.quality.set(1); blur.radius.bindTo( new BindFunction() { public Number f() { int w = Stage.getWidth() / 2; double f = 1 - Math.abs(w - sprite.x.get()) / w; if (f < 0.10) { return 0; } else { return 16 * (f - 0.10); } } }); sprite.setFilter(blur); return sprite; }