Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';无法使画布/画布层在Playn中工作_Java_Canvas_Playn - Fatal编程技术网

Java Can';无法使画布/画布层在Playn中工作

Java Can';无法使画布/画布层在Playn中工作,java,canvas,playn,Java,Canvas,Playn,正如标题所说,我无法让画布/画布层在PlayN中工作。我的示例代码再简单不过了。ImageLayer和默认背景加载良好(该代码在此处注释掉),但画布实际上始终不可见 public void init() { // create and add background image layer //Image bgImage = assetManager().getImage("images/bg.png"); //ImageLayer bgLayer = graphics()

正如标题所说,我无法让画布/画布层在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使用Playn1.0.3。注意,这是纯java编译


TIA Daniel

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

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

请尝试以下方法:

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

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

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

您可能还需要在添加画布层之前添加背景:

    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);

塔克斯!我仔细查看了演示中的代码,不习惯使用0xXXX的颜色表示法,希望使用一种更“新的颜色()”的面向类的表示法,即java和其他。显然,在移植到GWT/javascript等时,我可以看到原语在提高效率方面的好处。Thanx指出了我缺少的两个数字,并为我节省了大量时间!人们总是认为原因比实际情况更复杂:-)