2012-05-01 63 views
0

在純Java版本中,調用Image或ImageLayer上的width()或height()。但是對於HTML5後端,如果我把它稱之爲太早,我會得到零。如何在呈現之前使用HTML5獲取playn中圖片的寬度?

Image image = assets().getImage("images/myimage.png"); 
ImageLayer layer = graphics().createImageLayer(image); 
float w1 = image.width(); 
float w2 = layer.width(); 

我在比賽中的初始化代碼的getImage()之後,也從paint()方法試過了,第一次漆()被調用。但我總是得到HTML5後端(Chrome,MacOs)的零。 但是,如果在第二次調用paint()方法後調用width(),我會得到正確的寬度。 因此,看起來HTML5後端的語義不同:width()方法在第一次渲染後返回圖像/圖層的正確寬度。

我的解釋是否正確以及如何在渲染之前獲取大小?

回答

1

資產觀察器運行良好。或者,您可以爲圖片添加回調。當圖像加載完成後,調用「完成」功能。

pea.java摘自:

// Add a callback for when the image loads. 
// This is necessary because we can't use the width/height (to center the 
// image) until after the image has been loaded 
image.addCallback(new ResourceCallback<Image>() { 
    @Override 
    public void done(Image image) { 
    layer.setOrigin(image.width()/2f, image.height()/2f); 
    layer.setTranslation(x, y); 
    peaLayer.add(layer); 
    } 


    @Override 
    public void error(Throwable err) { 
    log().error("Error loading image!", err); 
    } 
}); 
相關問題