2012-05-30 64 views
0

我開始創建一個天氣模型顯示工具(web應用程序),並且從我所看到的,我非常喜歡使用Google Web Tools ,特別是SmartGWT工具包。在這一點上,我最大的焦點是找到一種方法來創建一種圖像「循環」(一個接一個地顯示特定「集合」中的所有圖像,與幻燈片不同)。作爲參考,我需要類似於此的功能(至少在基本級別上):http://rapidrefresh.noaa.gov/hrrrconus/jsloop.cgi?dsKeys=hrrr:&runTime=2012053007&plotName=cref_sfc&fcstInc=60&numFcsts=16&model=hrrr&ptitle=HRRR%20Model%20Fields%20-%20Experimental&maxFcstLen=15&fcstStrLen=-1&resizePlot=1&domain=full&wjet=1(儘管它當然不需要完全如此)。工具/在GWT中創建圖像活頁的指南

有誰知道(理想情況下)可以做圖像循環的某種GWT模塊?或者,如果沒有,這聽起來像一箇中級程序員可以發現沒有太多麻煩(我願意接受挑戰),即使我以前從未明確使用過GWT?我相信我可以一起鞭策每一張圖片,因爲它會經歷一個循環,但預取它們會更加理想。

如果您需要澄清任何事情,請發表評論!

回答

1

據我所知,沒有一個預製的解決方案來做到這一點,雖然也許SmartGWT有一些我不知道的東西。無論如何,推出自己的產品並不難。下面是一些代碼,讓你開始:

public class ImageLooper extends Composite { 
    // List of images that we will loop through 
    private final String[] imageUrls; 

    // Index of the image currently being displayed 
    private int currentImage = 0; 

    // The image element that will be displayed to the user 
    private final Image image = new Image(); 

    // The Timer provides a means to execute arbitrary 
    // code after a delay or at regular intervals 
    private final Timer imageUpdateTimer = new Timer() { 
     public void run() { 
      currentImage = (currentImage + 1) % images.length; 
      image.setUrl(imageUrls[currentImage]); 
     } 
    } 

    // Constructor. I'll leave it to you how you're going to 
    // build your list of image urls. 
    public ImageLooper(String[] imageUrls) { 
     this.imageUrls = imageUrls; 

     // Prefetching the list of images. 
     for (String url : imageUrls) 
      Image.prefetch(url); 

     // Start by displaying the first image. 
     image.setUrl(imageUrls[0]); 

     // Initialize this Composite on the image. That means 
     // you can attach this ImageLooper to the page like you 
     // would any other Widget and it will show up as the 
     // image. 
     initWidget(image); 
    } 

    // Call this method to start the animation 
    public void playAnimation() { 
     // Update the image every two seconds 
     imageUpdateTimer.scheduleRepeating(2000); 
    } 

    // Call this method to stop the animation 
    public void stopAnimation() { 
     imageUpdateTimer.cancel(); 
    } 
} 

這個實現一個惱人的事情是,你無法知道當你的圖像列表加載完成的方式; Image.prefetch沒有回調來幫助你。