就像标题所说,我无法让 Canvas/CanvasLayer 在 PlayN 中工作。我的示例代码再简单不过了。 ImageLayer 和默认背景加载良好(该代码已在此处注释掉),但 Canvas 实际上始终不可见。
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);
}
我正在使用 PlayN 1.0.3 和 Maven。请注意,这是针对纯 java 编译的。
蒂亚·丹尼尔
最佳答案
您的颜色代码错误,您还必须指定 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);
关于java - 无法让 Canvas/CanvasLayer 在 Playn 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8637973/