2011-12-26 12 views
1

タイトルのように、Canvas/CanvasLayerをPlayNで動作させることができません。私のサンプルコードは単純ではありませんでした。 ImageLayerとデフォルトの背景はうまく読み込まれますが(そのコードはここでコメントアウトされています)、キャンバスは常に目に見えません。PlaynでCanvas/CanvasLayerが動作しない

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コンパイルのためのものであることに注意してください。

testCanvas.setStrokeColor(Color.rgb(0, 0, 0));:TIAダニエルは

答えて

2

あなたのカラーコードが間違っている、あなたは

0x000000が実際に

代わりにこれを試して00アルファ、00赤、00グレンを意味し、同様のアルファを指定する必要があります

透明度を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); 
+0

ありがとう!私はデモからコードを見て、色のための0xXXX表記に慣れず、もっと新しい 'Color()'クラス指向の表記を期待していました。明らかにGWT/javascriptなどに移植するときの効率のために、プリミティブの利点を見ることができます。 2桁の数字を指摘してくれてありがとうございました。常に原因がそれよりも複雑であると考えています:-) –