Не удается получить Canvas / CanvasLayer, работающий в Playn - PullRequest
1 голос
/ 26 декабря 2011

Как видно из названия, я не могу заставить 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);
}

Я использую PlayN 1.0.3 с Maven. Обратите внимание, что это для чистой Java-компиляции.

TIA Daniel

1 Ответ

2 голосов
/ 26 декабря 2011

Ваши цветовые коды неверны, вы также должны указать альфа

0x000000 фактически означает 00 альфа, 00 красный, 00 грен

попробуйте это вместо:

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