Adobe Flash Professional Version MX und höher
Adobe Flex
Die Technik bezieht sich auf:
Siehe User Agent Support for Flash für allgemeine Informationen zur Unterstützung durch Benutzeragenten.
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.
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";
}
}
}
}
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.
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
}
}
}
}
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>
Dies wird in dem funktionierenden Beispiel für „Providing a button in the HTML before the Flash object to stop sound“ (Bereitstellung einer Schaltfläche im HTML vor dem Flash-Objekt, um die Tonwiedergabe zu stoppen). Das funktionierende Beispiel für „Bereitstellung einer Schaltfläche im HTML vor dem Flash-Objekt, um die Tonwiedergabe zu stoppen“ steht zur Verfügung.
Bei Flash-Filmen, die Ton automatisch nach dem Laden wiedergeben:
Bestätigen Sie, dass ein barrierefreies HTML-Steuerelement am Beginn der Tabulator-Reihenfolge des Dokumentes platziert wurde
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.
Aktivieren die das HTML- oder Flash-basierte Steuerelement
Verifizieren Sie, dass die Tonwiedergabe stoppt
Test #1 oder #2 ist wahr und #4 ist wahr.
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.