1

ClientBundle 実装を使用して、画像を大きなファイルに管理し、HTTP 要求を最小限に抑えようとしています。

gwt.xml に入れました

ClientBundle を生成する

パブリック インターフェイス ResourceBundle は ClientBundle を拡張します {

public static final ResourceBundle INSTANCE = GWT.create(ResourceBundle.class);

@Source("tiles/smiley.png")
ImageResource smiley();

}

画像が見つかり、エラーはありません。

ここにコードがあります

@Override public void onModuleLoad() {

    CLogger.log("Start Engine");

    int width = 800;
    int height = 600;

    Canvas canvas = Canvas.createIfSupported();
    canvas.setWidth(width + "px");
    canvas.setHeight(height + "px");
    canvas.setCoordinateSpaceWidth(width);
    canvas.setCoordinateSpaceHeight(height);
    Context2d c = canvas.getContext2d();

    Image img = new Image(ResourceBundle.INSTANCE.smiley());
    img.addLoadHandler(new LoadHandler() {

        @Override
        public void onLoad(LoadEvent event) {
            CLogger.log(event.getSource() + " loaded");
        }
    });
    CLogger.log("Visible: " + img.isVisible());

    c.drawImage((ImageElement) new Image(ResourceBundle.INSTANCE.smiley()).getElement().cast(), 0, 0);

    RootPanel.get().add(canvas);

}

シンプルな Canvas を作成し、サイズを 800x600 に設定します。新しい Context2D オブジェクトを作成して、Context で Image を描画し、Canvas を RootPanel に追加します。

ログには次のように表示されます。

[20:10:21.676] - エンジンの始動 [20:10:21.851] - 可視: true [20:10:21.853] - http://127.0.0.1:8888/engine/7D39451825E9952050F44A6B8E2E15F3.cache.png

画像はログに記録された URL の下に存在するため、すべて問題なく表示されます。ただし、画像は描画されないか、描画されますが表示されません。

誰でもアイデアはありますか?

私は、ClientBundle がイメージをバックエンドの開始点としてロードすると考えました。したがって、すべての Image/Css などのインスタンスを取得すると、ロードされるのでしょうか?

よろしくマルクス

4

2 に答える 2

0

UiBinder の外部で CSSResources と ImageBundles を使用する場合は、スタイルシートと画像が適切に挿入されていることを確認する必要があります。

詳しくはこちらをご覧ください。

于 2011-07-18T21:27:11.837 に答える
0

イメージ コンテンツが同期的に読み込まれることは保証されていません。ブラウザの機能と画像データのサイズによっては、リソースがスタンドアロン ファイルとして保存される場合がありますcache.png。このような処方は何か違いがありますか?

final Image img = new Image(ResourceBundle.INSTANCE.smiley());
img.addLoadHandler(new LoadHandler() {
  public void onLoad(LoadEvent e) {
    c.drawImage((ImageElement) img.getElement());
  }
}
RootPanel.get().add(img);
于 2011-07-18T21:11:50.140 に答える