Если вы контролируете развертывание апплета (т. е. веб-страницу, на которой размещен апплет), вы можете написать свою собственную программу запуска апплета. Средство запуска функционирует как оболочка, которая обеспечивает настраиваемую среду для фактического апплета. Средство запуска создает настоящий апплет и передает ему настроенные версии среды апплета (AppletStub, AppletContext). Пользовательская среда реализует AudioClip как интерфейс «ничего не делать».
Чтобы отключить звук, вы можете переопределить AppletContext следующим образом:
class CustomAppletContext implements AppletContext
{
AppletContext realContext;
// most methods delegate to the real context, either directly, or with a little modification to hide the fact that we are using this launcher
public void setStatus(String status)
{
realContext.setStatus(status);
}
// override the getAudioClip to return a dummy clip
public AudioClip getAudioClip(URl url)
{
return new DummyAudioClip();
}
}
// An AudioClip implementation that does nothing
class DummyAudioClip implements AudioClip
{
public void loop() { }
public void play() { }
public void stop() { }
}
Мы также переопределяем AppletStub, так как именно отсюда апплет получает AppletContext.
class CustomAppletStub implements AppletStub
{
AppletStub realStub;
public AppletContext getAppletContext()
{
return new CustomAppletContext(realStub.getAppletContext());
}
}
И затем ваш лаунчер:
class AppletLauncher extends Applet
{
private Applet realApplet = new NoisyApplet();
// delegate most methods to the applet, but override the stub, to inject our
// AppletContext and AudioClip implementation
public void setAppletStub(AppletStub stub)
{
realApplet.setAppletStub(new CustomAppletStub(stub));
}
}
Это выглядит как много кода, но на самом деле это всего лишь несколько классов и в основном проводка только для внедрения новой реализации DummyAudioClip.
ХТХ!
person
mdma
schedule
27.04.2010