Загрузка изображений GWT (onLoad) для Canvas - PullRequest
0 голосов
/ 12 октября 2011

Без использования какой-либо библиотеки загрузки изображений, я загружаю и обрабатываю изображения, как показано ниже:

ImageGenerator(){
  for(int i=0;i<100;i++){
      ImageProcess( data-i , i );
  }
}

ImageProcess( String data , int i ){
  final Image img = new Image(data);
  img.setVisible(false);
  RootPanel.get().add(img);
  GWT.log( "image " + i );
  img.addLoadHandler(new LoadHandler() {
      @Override
      public void onLoad(LoadEvent event) {
          GWT.log( "onload " + i + " " + img.getWidth() );
          ImageElement data = ImageElement.as(img.getElement());
          RootPanel.get().remove(img);
          obj.setData(data);
          ..obj processing
      }
  });
}

Результат:

image 1;
image 2;
image 3;
..
image 98;
image 99; <-- finish for loop
onload 1; <-- start loading image
onload 2;
onload 3;
..
onload 98;
onload 99;

Но я надеюсь, что это выглядит так:

image 1;  <-- generate image and load image step by step
onload 1;
image 2;
onload 2;
image 3;
onload 3;
..
image 98;
onload 98;
image 99;
onload 99;

Я знаю, что после того, как я присвоил значение img.src, изображение не доступно сразу.Он должен быть загружен первым.Элемент img будет запускать событие onload, как только изображение будет загружено.Я пытаюсь добавить таймер и поместить изображение в другой элемент DOM.Это не работает.

Мои вопросы: как вызвать немедленную загрузку элемента изображения?или позволить ImageProcess дождаться окончания загрузки?

1 Ответ

0 голосов
/ 12 октября 2011
 RootPanel.get().add(img);

С помощью этой строки вы заставляете изображение загружаться напрямую.Я думаю, что ваша проблема в том, что цикл завершился до того, как с сервера было передано хотя бы одно изображение - поэтому сначала вы видите выходные данные, а затем выходные данные загрузки.для вас, чтобы добавить изображение, выполнить его загрузку, добавить следующее изображение и т. д.в его обработчике загрузки вы вызываете метод снова для следующего изображения.И так до тех пор, пока вы не достигнете критерия остановки.

Привет Стефан

...