无法让Canvas / CanvasLayer在Playn中工作

时间:2011-12-26 17:54:52

标签: java canvas playn

就像标题所说,我无法让Canvas / CanvasLayer在PlayN中工作。我的示例代码不可能更简单。 ImageLayer和默认背景加载正常(该代码在这里被注释掉),但画布几乎总是不可见。

public void init() {
    // create and add background image layer
    //Image bgImage = assetManager().getImage("images/bg.png");
    //ImageLayer bgLayer = graphics().createImageLayer(bgImage);
    //graphics().rootLayer().add(bgLayer);      
    graphics().setSize(500, 400);

    CanvasLayer testLayer = graphics().createCanvasLayer(200,200);
    Canvas testCanvas = testLayer.canvas();

    graphics().rootLayer().add(testLayer);
    //testCanvas.clear();

    testCanvas.setStrokeColor(0x000000);
    testCanvas.setStrokeWidth(2);
    testCanvas.setFillColor(0xff0000);
    testCanvas.drawText("hello", 50, 50);
    testCanvas.drawLine(0, 0, 300,300);
    testCanvas.strokeRect(1, 1, 46, 46);

    //I even tried adding this.
    testLayer.setAlpha(1);
    testLayer.setVisible(true);
    testLayer.setScale(1);
}

我在Maven中使用PlayN 1.0.3。请注意,这是针对纯Java编译的。

TIA Daniel

1 个答案:

答案 0 :(得分:2)

您的颜色代码错误,您还必须指定alpha

0x000000实际上意味着00 alpha,00 red,00 gren

试试这个:

testCanvas.setStrokeColor(Color.rgb(0, 0, 0));

或者如果你想要50%的透明度:

testCanvas.setStrokeColor(Color.argb(0x80, 0, 0, 0));

您可能还想添加背景, 之前添加CanvasLayer:

    SurfaceLayer bgLayer = graphics().createSurfaceLayer(500, 400);
    bgLayer.surface().setFillColor(Color.rgb(0,0,0));
    bgLayer.surface().fillRect(0, 0, bgLayer.surface().width(),
            bgLayer.surface().height());
    graphics().rootLayer().add(bgLayer);