Box (String text, int color, float wid, float hei) { layer = new GroupLayer(wid, hei); layer.add(new Layer() { protected void paintImpl (Surface surface) { surface.setFillColor(0xff000000); float t = 0.5f, l = 0.5f, b = layer.height() - 0.5f, r = layer.width() - 0.5f; surface.drawLine(l, t, l, b, 1); surface.drawLine(r, t, r, b, 1); surface.drawLine(l, b, r, b, 1); surface.drawLine(l, t, r, t, 1); } }); label = createLabel(text, layer, 0xff000000, color, 0, 0, 40); layer.addAt(label, (wid - label.width()) / 2, (hei - label.height()) / 2); layer.setHitTester(this); }
/** * Creates a new group with the given children. */ public static GroupLayer group (Layer... children) { GroupLayer gl = new GroupLayer(); for (Layer l : children) gl.add(l); return gl; }
GroupLayer g1 = new GroupLayer(100, 100); g1.setOrigin(50, 0); ImageLayer i1 = new ImageLayer(tex); i1.setOrigin(i1.width()/2, i1.height()/2); g1.addAt(i1, 50, 50); GroupLayer g2 = new GroupLayer(100, 100); g2.setOrigin(50, 50); g2.addAt(new ImageLayer(tex), (100 - iwidth)/2, (100 - iheight)/2); GroupLayer inner = new GroupLayer(); inner.addAt(new ImageLayer(tex), (100 - iwidth)/2, (100 - iheight)/2); GroupLayer g3 = new GroupLayer(100, 100); g3.add(inner); GroupLayer g4 = new GroupLayer(100, 100); TextureSurface si = game.createSurface(100, 50); si.begin().setFillColor(0xFF99CCFF).fillRect(0, 0, 100, 50).end().close(); ImageLayer s1 = new ImageLayer(si.texture); s1.setOrigin(s1.width()/2, s1.height()/2); g4.addAt(s1, 50, 50); GroupLayer g5Inner = new GroupLayer(150, 150); g5Inner.addAt(new ImageLayer(tex).setScale(2), -iwidth, -iheight); g5Inner.addAt(new ImageLayer(tex).setScale(2), -iwidth, iheight); g5Inner.addAt(new ImageLayer(tex).setScale(2), iwidth, -iheight); g5Inner.addAt(new ImageLayer(tex).setScale(2), iwidth, iheight); GroupLayer g5 = new GroupLayer(100, 100);
@Override protected Group createIface (Root root) { final float width = 410, height = 400; GroupLayer clip = new GroupLayer(410, 400); layer.addAt(clip, (size().width()-width)/2, (size().height()-height)/2); final GroupLayer scroll = new GroupLayer(); clip.add(scroll); // add a bunch of image layers to our root layer float y = 0; for (int ii = 0; ii < IMG_COUNT; ii++) { Canvas image = graphics().createCanvas(width, IMG_HEIGHT); StringBuffer text = new StringBuffer(); if (ii == 0) text.append("Tap & fling"); else if (ii == IMG_COUNT-1) text.append("Good job!"); else for (int tt = 0; tt < 25; tt++) text.append(ii); StyledText.span(graphics(), text.toString(), TEXT).render(image, 0, 0); ImageLayer layer = new ImageLayer(image.toTexture()); scroll.addAt(layer, 0, y); y += layer.scaledHeight(); } Flicker flicker = new Flicker(0, height-IMG_HEIGHT*IMG_COUNT, 0) { @Override protected float friction () { return 0.001f; } }; clip.events().connect(flicker); flicker.changed.connect(new Slot<Flicker>() { public void onEmit (Flicker flicker) { scroll.setTy(flicker.position); } }); closeOnHide(paint.connect(flicker.onPaint)); return null; }
layer.add(_thumb = thumbImage.render().setDepth(1)); if (thumbOrigin == null) { _thumb.setOrigin(thumbWidth/2, thumbHeight/2); _barOnLayer.close(); _barOnInst.close(); _barOnLayer = null; _barOnLayer = new GroupLayer(width-thumbWidth, barHeight); _barOnLayer.setDepth(Background.BACKGROUND_DEPTH + 2); _barOnLayer.transform().translate(_thumbLeft, top + (height - barHeight)/2); layer.add(_barOnLayer);
/** * Does whatever this element needs to validate itself. This may involve recomputing * visualizations, or laying out children, or anything else. */ protected void validate () { if (!isSet(Flag.VALID)) { // prior to laying ourselves out, ensure that our visual boundaries fall on physical // pixels; this avoids rendering artifacts on devices where the scale factor between // virtual and physical pixels is non-integral Root root = root(); if (root != null) { Scale scale = root.iface.plat.graphics().scale(); float x = layer.tx(), y = layer.ty(); float rx = scale.roundToNearestPixel(x), ry = scale.roundToNearestPixel(y); float rr = scale.roundToNearestPixel(x + _size.width); float rb = scale.roundToNearestPixel(y + _size.height); layer.setTranslation(rx, ry); _size.setSize(rr-rx, rb-ry); } // now that our boundaries are adjusted, we can layout our children (if any) layout(); set(Flag.VALID, true); wasValidated(); } }
setFillColor(Color.rgb(0, 0, 255)).fillRect(0, 2*height, fullWidth, height). end().close(); rootLayer.add(new ImageLayer(bg.texture)); GroupLayer groupLayer = new GroupLayer(); groupLayer.setAlpha(0.5f); rootLayer.add(groupLayer); groupLayer.addAt(new ImageLayer(imtex).setAlpha(0.5f), x, y0); addDescrip("image\nimg layer a=0.5", x, y1, width); groupLayer.addAt(new ImageLayer(imtex).setAlpha(0.5f), x, y2); x += width; groupLayer.addAt(new ImageLayer(surf1.texture), x, y0); addDescrip("surface a=0.5\nimg layer a=1", x, y1, width); groupLayer.addAt(new ImageLayer(surf1.texture), x, y2); x += width; groupLayer.addAt(new ImageLayer(surf2.texture).setAlpha(0.5f), x, y0); addDescrip("surface a=1\nimg layer a=0.5", x, y1, width); groupLayer.addAt(new ImageLayer(surf2.texture).setAlpha(0.5f), x, y2); x += width; canvas1.draw(image, 0, 0); Texture cantex1 = canvas1.toTexture(); groupLayer.addAt(new ImageLayer(cantex1).setAlpha(0.5f), x, y0); addDescrip("canvas a=1\nimg layer a=0.5", x, y1, width); groupLayer.addAt(new ImageLayer(cantex1).setAlpha(0.5f), x, y2); x += width;
layer.add(bg); final GroupLayer box = new GroupLayer(); layer.addAt(box, 0, 100); Image sheet = assets().getImage("images/spritesheet.png"); SimpleFrames frames = new SimpleFrames(sheet, 60, 60, 60); assets().getText("images/orb_burst.json").onSuccess(new Slot<String>() { public void onEmit (String json) { GroupLayer box = new GroupLayer(); layer.addAt(box, 100, 200); iface.anim.repeat(box).flipbook( setVisible(box, false).then().delay(500).then().setVisible(box, true); GroupLayer pbox = new GroupLayer(); layer.addAt(pbox, 300, 200); iface.anim.repeat(pbox).flipbook(
@Override public Layer render () { GroupLayer layer = new GroupLayer(); layer.addAt(super.render(), tx, ty); return layer; } };
/** * Returns the index of the given layer within its parent, or -1 if the parent is null. */ public static int indexInParent (Layer layer) { GroupLayer parent = layer.parent(); if (parent == null) return -1; for (int ii = parent.children()-1; ii >= 0; ii--) { if (parent.childAt(ii) == layer) return ii; } throw new AssertionError(); }
Box mouse = new Box("Mouse", 0xffff8080, boxWidth, boxHeight); game.rootLayer.addAt(mouse.layer, x, y); y += mouse.layer.height() + 5; y += pointer.layer.height() + 5; y = mouse.layer.ty(); x += touch.layer.width() + 5; mouse.layer.events().connect(new Mouse.Listener() { double start; @Override public void onButton(Mouse.ButtonEvent event, Mouse.Interaction iact) { pointer.layer.events().connect(new Pointer.Listener() { double start; @Override public void onStart(Pointer.Interaction iact) { touch.layer.events().connect(new Touch.Listener() { @Override public void onStart(Touch.Interaction iact) { Touch.Event event = iact.event;
public void onEmit (Library lib) { final Movie movie = lib.createMovie("walk"); movie.layer().setTranslation(size().width()/2, 300); main.layer.add(movie.layer()); closeOnHide(paint.connect(new Slot<Clock>() { public void onEmit (Clock clock) { movie.paint(clock); } })); } });
@Override protected Instance instantiate (final IDimension size) { GroupLayer layer = new GroupLayer(); final Instance[] instances = new Instance[_constituents.length]; Layer[] temp = new Layer[layer.children()]; for (int ii = 0, nn = temp.length; ii < nn; ii++) { temp[ii] = layer.childAt(ii);
return action(new Runnable() { public void run () { parent.addAt(child, x, y); }}); }