Vor längerer Zeit hat Lee Brimelow ein Beispiel gezeigt, wie man einen Bildschirmschoner mit Adobe AIR (damals noch Apollo) erstellen kann. Nach einigen Trial-and-Error-Versuchen habe ich es hingekriegt, mit Adobe AIR 1.0 eine AIR-Anwendung als Screensaver zu installieren.

Voraussetzung ist, dass die Adobe AIR 1.0 Runtime installiert ist. Außerdem funktioniert es nur für Windows.

Man installiert AIR-Programme als Screensaver auf auf diese Weise:

  • Das AIR-Beispiel herunterladen und installieren
  • In das Installationsverzeichnis gehen (Standard ist c:\programme\air-screensaver) und dort die .exe-Datei suchen
  • Die Dateiendung dieser Datei in .scr umbenennen.
  • Mit der rechten Maustaste auf die Datei klicken, nun "installieren" wählen.
  • Die AIR-Anwendung wird als Bildschirmschoner installiert.

Der Screensaver funktioniert folgendermaßen: Nach dem Start des Programms wird der Fullscreen-Mode aufgerufen. Wichtig ist, dass dies über das INVOKE-Event gemacht wird, sonst funktioniert es nicht korrekt. Dann wird die Monitorauflösung ausgelesen und ein schwarzer MovieClip als Hintergrund auf diese Maße skaliert.

Der eigentliche Inhalt wird über die Loader-Komponente geladen. Man könnte natürlich auch direkt eine Animation in der AIR-Datei ablaufen lassen. Das Beispiel verwendet als Demoinhalt eine alte Flex-Kuler-Animation von mir, die als externe SWF-Datei nachgeladen wird. Zusätzlich liegt auch eine XML-Datei mit einem Feed dabei, damit die Animation keine Internetverbindung benötigt.

Actionscript:
  1. import flash.desktop.NativeApplication;
  2. import flash.system.*;
  3. import flash.events.*;
  4. // ::::::::::::::::::
  5. // ::::::::::::::::::
  6. // ::::::::::::::::::
  7. // align top left
  8. stage.align = "tl";
  9. // add event listener for invocation
  10. NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvokeEvent);
  11. // add event listener for fullscreen mode
  12. stage.addEventListener(FullScreenEvent.FULL_SCREEN, onFullscreen);
  13. function onInvokeEvent(invocation:InvokeEvent):void {
  14. // go fullscreen
  15. stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
  16. }
  17. function onFullscreen(evt:Event) {
  18. // black background to screen resolution size
  19. background_mc.width = Capabilities.screenResolutionX;
  20. background_mc.height = Capabilities.screenResolutionY;
  21. }
  22. // ::::::::::::::::::
  23. // ::::::::::::::::::
  24. // ::::::::::::::::::
  25. stage.addEventListener(MouseEvent.MOUSE_DOWN, onUserPresent);
  26. stage.addEventListener(KeyboardEvent.KEY_DOWN, onUserPresent);
  27. function onUserPresent(evt:Event) {
  28. // exit application
  29. NativeApplication.nativeApplication.exit()
  30. }

Ich würde mich über Rückmeldung freuen, ob es auch bei anderen einwandfrei funktioniert.

Download: air-screensaver.air
Download: AIR Screensaver Sources (.fla)
Link: Apollo Screensaver with Transparency