2012-05-06 7 views
0

私は、主なターゲットがHTML5であるPlayNゲームでピクセルレベルのグラフィックを作成したいと考えています。しかし、PlayNのCanvasオブジェクトは、CanvasPixelArrayクラス、またはputImageDataおよびgetImageData関数へのアクセスを提供しません。私は各ピクセルのdrawPointを使用することはかなり遅くなることを心配しています。それを行う良い方法はありますか?PlayNのピクセルレベルのグラフィック

答えて

1

現在PlayNのピクセル操作APIはありません。

HTML5をターゲットにしたい場合は、GWTメソッドを使用してImageDataオブジェクトを作成して操作し、最近画像を変換するために追加したメカニズムを使用してPlayNに挿入することができます。

// use this canvas and context to create as many image data objects as you want 
CanvasElement canvas = Document.get().createElement("canvas").<CanvasElement>cast(); 
Context2d ctx = canvas.getContext2d(); 
final ImageData data = ctx.createImageData(width, height); 
// push those pixels 

// use this PlayN image as a factory for creating PlayN images from your ImageData objects 
CanvasImage image = PlayN.graphics().createImage(1, 1); // dummy image 
Image pixelImage = image.transform(new HtmlBitmapTransformer() { 
    public ImageElement transform(ImageElement elem) { 
    // we ignore the element passed in and just create a new CanvasElement 
    // and draw our bitmap data on it 
    CanvasElement canvas = Document.get().createElement("canvas").<CanvasElement>cast(); 
    canvas.setWidth(width); 
    canvas.setHeight(height); 
    canvas.getContext2d().putImageData(data, 0, 0); 
    return canvas; 
    } 
}); 

ハックのビットです。ある時点では、イメージのピクセルデータを取得して操作するためのメカニズムを追加し、サポートできるバックエンドに期待されるほど高速です。

+0

ええと、私はバニラGWTからPlayNに切り替えました。なぜなら、とにかく、すばらしい開発のためにJavaターゲットが必要だったからです。 – funkybro