0

私は天気モデル表示ツール(Webアプリケーション)の作成に着手しています。これまで見てきたことから、Google Webツール、特に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を明示的に使用したことがない場合でも、中級プログラマーがそれほど問題なく理解できるもののように聞こえますか(チャレンジを受け入れてもかまいません)。ループを通過するときに各画像を引き込む何かをまとめることができると確信していますが、それらをプリフェッチすることはさらに理想的です。

何か説明が必要な場合はコメントしてください!

4

1 に答える 1

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();
    }
}

この実装の厄介な点の1つは、画像のリストの読み込みがいつ終了したかを知る方法がないことです。Image.prefetchここで役立つコールバックはありません。

于 2012-05-30T21:23:51.430 に答える