Techniken für WCAG 2.0

Zum Inhalt

-

FLASH18: Bereitstellung eines Steuerelementes, um Töne, die in Flash automatisch abgespielt werden, abzustellen

Anwendbarkeit

  • Adobe Flash Professional Version MX und höher

  • Adobe Flex

Die Technik bezieht sich auf:

Anmerkungen zur Unterstützung durch Benutzeragenten und assistierende Techniken

Siehe User Agent Support for Flash für allgemeine Informationen zur Unterstützung durch Benutzeragenten.

Beschreibung

Der Zweck dieser Technik ist es, einem Benutzer zu erlauben, Geräusche abzuschalten, die automatisch, wenn ein Flash-Film geladen wird, abgespielt werden. Das Steuerelement zum Abschalten des Tons sollte nahe des Beginns der Seite sein, damit das Steuerelement einfach und schnell von den Benutzern entdeckt werden kann. Das ist nützlich für all jene, die assistierende Techniken einsetzen (wie z.B. Screenreader, Vergrößerungssoftware, Schaltermechanismen usw.) und für diejenigen, die dies nicht tun (wie z.B. diejenigen mit kognitiven, Lern- und Sprachbehinderungen).

In dieser Technik fügt der Autor ein Steuerelement hinzu, das es Benutzern ermöglicht, alle Geräusche, die automatisch abgespielt werden, abzuschalten. Für maximale Barrierefreiheit kann das Steuerelement zum HTML-Dokument statt zum Flash-Film hinzugefügt werden. Das HTML-Steuerelement kommuniziert mit dem Flash-Film durch die ExternalInterface-Klasse. Dies bedeutet, dass der Benutzer die Tonwiedergabe steuern kann, ohne mit Flash-Inhalten interagieren zu müssen. Wenn dies nicht zweckmäßig ist, kann das Steuerelement im Flash-Inhalt bereitgestellt werden, vorausgesetzt das Steuerelement ist per Tastatur bedienbar, ist früh in der Tabulator- und Lese-Reihenfolge platziert und ist eindeutig beschriftet um anzuzeigen, dass es den Ton, der gerade wiedergegeben wird, abschalten wird.

Beispiele

Beispiel 1: Bereitstellung einer Schaltfläche in Flash, um den Ton zu stoppen

Dieses Beispiel zeigt das Hinzufügen einer Schaltfläche innerhalb des Flash-Films, um es dem Benutzer zu erlauben, die Tonwiedergabe anzuhalten. Es wird eine Klasse, genannt SoundHandler, erstellt, die automatisch beginnt, eine mp3-Datei abzuspielen, wenn der Film lädt.

Code-Beispiel:

			package wcagSamples {
  import flash.display.Sprite;
  import flash.net.URLRequest;
  import flash.media.Sound;
  import flash.media.SoundChannel;

  import fl.controls.Button;
  import fl.accessibility.ButtonAccImpl;

  import flash.events.MouseEvent;
  public class SoundHandler extends Sprite {
    private var snd: Sound = new Sound();
    private var button: Button = new Button();
    private var req: URLRequest = new URLRequest("http://av.adobe.com/podcast\
      /csbu_dev_podcast_epi_2.mp3");
    private var channel: SoundChannel = new SoundChannel();

    public function SoundHandler() {
      ButtonAccImpl.enableAccessibility();
      button.label = "Stop Sound";
      button.x = 10;
      button.y = 10;
      button.addEventListener(MouseEvent.CLICK, clickHandler);
      this.addChild(button);
      snd.load(req);
      channel = snd.play();
    }
    private function clickHandler(e: MouseEvent): void {
      if (button.label == "Stop Sound") {
        button.label = "Start Sound";
        channel.stop();
      } else {
        channel = snd.play();
        button.label = "Stop Sound";
      }
    }
  }
}

Beispiel 2: Bereitstellung einer Schaltfläche im HTML vor dem Flash-Objekt zum Stoppen der Tonwiedergabe

Es wird eine Klasse, genannt SoundHandler, erstellt, die automatisch beginnt, eine mp3-Datei abzuspielen, wenn der Film lädt. Im HTML-Dokument, das den Flash-Film enthält, wird eine HTML-Schaltfläche platziert. Wenn die Schaltfläche angeklickt wird, dann wird die Aktion zwischen der HTML-Seite und dem Flash-Film via Flash Player JavaScript API kommuniziert, was dazu führt, dass die toggleSound-Methode auf der SoundHandler-Klasse aufgerufen wird.

ActionScript 3.0-Code für Beispiel 2

Code-Beispiel:

			package wcagSamples {
  import flash.display.Sprite;
  import flash.external.ExternalInterface;
  import flash.net.URLRequest;
  import flash.media.Sound;
  import flash.media.SoundChannel;

  import flash.events.MouseEvent;
  public class SoundHandler extends Sprite {
    private var snd: Sound = new Sound();
    private var soundOn: Boolean = true;
    private var req: URLRequest = new URLRequest("http://av.adobe.com/podcast/\
      csbu_dev_podcast_epi_2.mp3");
    private var channel: SoundChannel = new SoundChannel();

    public function SoundHandler() {
      if (ExternalInterface.available)
      ExternalInterface.addCallback("toggleSound", this.toggleSound);
      snd.load(req);
      channel = snd.play();
    }

    private function toggleSound(enable: Boolean): void {
      if (! enable) {
        channel.stop();
        soundOn = true;
      } else {
        channel = snd.play();
        soundOn = true
      }
    }
  }
}
HTML-Code für Beispiel 2

Code-Beispiel:

			<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
    <title>Flash Sound Toggle example</title>
    <script src="swfobject.js" type="text/javascript"/>
    <script type="text/javascript">
    function $(id) {
        return document.getElementById(id);
    }

    swfobject.embedSWF("html_control_to_toggle_audio_as3.swf", 
      "flashPlaceHolder", "0", "0", "8");
    function init() {
            var soundOn = true;
            $("soundToggle").onclick = function(event){
                soundOn = !soundOn;
                $("flashPlaceHolder").toggleSound(soundOn);
                event.target.value = soundOn ? "Stop Sound" : "Start Sound";
            };
    }
    window.onload = init;
</script>

  </head>
  <body id="header">
    <h1>Flash Automatic Sound Demo</h1>
    <p>This page contains a Flash movie that automatically starts
      playing sound. Use the button below to stop or start the
      sound</p>
    <input id="soundToggle" type="button" value="Stop Sound"/>
    <p id="flashPlaceHolder">Flash needs to be installed for this
      example to work</p>
  </body>
</html>

Tests

Vorgehensweise

Bei Flash-Filmen, die Ton automatisch nach dem Laden wiedergeben:

  1. Bestätigen Sie, dass ein barrierefreies HTML-Steuerelement am Beginn der Tabulator-Reihenfolge des Dokumentes platziert wurde

  2. Wenn es kein HTML-basiertes Steuerelement gibt, dann bestätigen Sie, dass ein barrierefreies Steuerelement zu Beginn der Tabulator-Reihenfolge des Flash-Films platziert wurde.

  3. Aktivieren die das HTML- oder Flash-basierte Steuerelement

  4. Verifizieren Sie, dass die Tonwiedergabe stoppt

Erwartete Ergebnisse

Wenn dies eine ausreichende Technik für ein Erfolgskriterium ist, dann bedeutet das Scheitern an diesem Testverfahren nicht zwangsläufig, dass das Erfolgskriterium nicht auf irgendeine andere Art und Weise erfüllt wurde, sondern nur, diese Technik nicht erfolgreich implementiert wurde und nicht benutzt werden kann, um die Konformität zu erklären.