2012-03-24 20 views
0

Ich habe ein Bild in meinem Kriegsordner. Ich versuche zu sehen, was das Bild ist, aber ich kann es nicht zur Arbeit bringen. Ich versuche mit GWT.getModuleBaseURL(), aber es wird nicht gewarnt.GWT getUrl gibt kein Bild zurück

if(soundImage.getUrl().equals(GWT.getModuleBaseURL()+"/soundOn.png")){ 
        Window.alert("YEP IT DOES"); 
        soundImage.setUrl("soundOff.png"); 
        setSound("off"); 
       }else{ 
        soundImage.setUrl("soundOn.png"); 
        setSound("on"); 
       } 

Wie kann ich das Bild bekommen? Betrachte ich etwas in meinem Code oder mache ich es falsch?

Antwort

1

Ändern der URL eines Bildes, um die Ansicht zu ändern, ist verständlich, wenn Sie einen HTML-Hintergrund haben, aber im GWT-Land irgendwie verrückt ist. Dies ist in etwa analog zur Änderung der URL eines <script> im laufenden Betrieb - es ist technisch möglich, aber seltsam. Dieses Bild ist notwendigerweise ein Kind einer Komponente. Ich würde dieses Bild ersetzen, indem ich an der Komponente arbeite, die dieses Bild enthält, und nicht an dem Bild selbst, indem ich seine URL ändere. Die URL eines Bildes ist im Wesentlichen sein Deskriptor, so dass es schwierig ist, eine Eigenschaft wie diese zu ändern. Wenn Sie MVP verwenden und eine View erstellt haben, können Sie eine Methode wie void toggleSoundImage(boolean on) verfügbar machen.

Sie sollten dies stattdessen tun: https://developers.google.com/web-toolkit/doc/latest/DevGuideUiImageBundles. Die Art, wie Sie versuchen, Bilder zu verwenden, ist unidiomatisch - manche Leute nennen das "falsch".

Ich habe absichtlich Ihre Frage nicht beantwortet, denn wenn Sie dies richtig gemacht hätten, wären die Voraussetzungen, die dieses Problem verursacht haben, nicht gegeben.

Hoffnung, das hilft.

0

Beachten Sie, dass Sie die URL (soundOn.jpg) mithilfe eines relativen Pfads festlegen. Sie überprüfen jedoch, ob der absolute Pfad des Moduls verwendet wird.

Die URL sollte lediglich mit dem Attribut src in Ihrem Bild übereinstimmen.

Wenn Sie:

if(soundImage.getUrl().equals("soundOn.png")){

Es sollte funktionieren. Ich empfehle auch Travis Empfehlung von Image-Ressourcen zu verwenden.

Verwandte Themen