Die ProgressBar-Komponente (Fortschrittsleiste oder Verlaufsbalken) zeigt den Fortschritt beim Laden von Inhalt an. Bei umfangreichen Inhalten, die die Ausführung einer Anwendung verzögern, ist dies wichtig für den Benutzer, da er dadurch die Bestätigung bekommt, dass tatsächlich etwas passiert. Dies ist z.B. hilfreich, um den Fortschritt beim Laden von Bildern und Teilen einer Anwendung anzuzeigen. Der Fortschritt beim Laden kann bestimmt oder unbestimmt sein. Eine
bestimmte
Fortschrittsleiste ist eine lineare Darstellung des Fortschritts einer Aufgabe im Zeitverlauf; sie wird verwendet, wenn bekannt ist, wie groß der geladene Inhalt ist. Eine
unbestimmte
Fortschrittsleiste wird verwendet, wenn die Größe des geladenen Inhalts nicht bekannt ist. Sie können auch eine Label-Komponente hinzufügen, die den Ladefortschritt als Prozentsatz anzeigt.
Die ProgressBar-Komponente verwendet die Skalierung im 9-teiligen Segmentraster (Scale-9) und verfügt über Skins für die Leiste und für den Balken sowie über eine unbestimmte Skin.
Benutzerinteraktion mit der ProgressBar-Komponente
Es gibt drei Modi für den Einsatzder ProgressBar-Komponente. Am häufigsten werden der Ereignismodus („event“) und der Abfragemodus („polled“) verwendet. Diese Modi bestimmen die Art des Ladevorgangs: Es werden entweder
progress
- und
complete
-Ereignisse ausgegeben (im Ereignis- und Abfragemodus) oder es werden die
bytesLoaded
- und
bytesTotal
-Eigenschaften angezeigt (im Abfragemodus). Außerdem können Sie die ProgressBar-Komponente im manuellen Modus einsetzen, indem Sie die Eigenschaften
maximum
, minimum
und
value
zusammen mit Aufrufen an die Methode
ProgressBar.setProgress()
einstellen. Mithilfe der Eigenschaft „indeterminate“ können Sie festlegen, ob die Fortschrittsleiste eine gestreifte Füllung hat und eine Quelle unbekannter Größe (
true
) oder eine durchgängige Füllung und eine Quelle bekannter Größe (
false
).
Sie legen den Modus der Fortschrittsleiste fest, indem Sie ihre
mode
-Eigenschaft angeben, und zwar entweder mithilfe des
mode
-Parameters im Eigenschafteninspektor oder im Komponenten-Inspektor oder mithilfe von ActionScript.
Wenn die Fortschrittsleiste einen Verarbeitungsstatus anzeigen soll, etwa bei der Analyse von 100.000 Elementen, ist Folgendes zu beachten: Bei einer einzelnen Frame-Schleife gibt es keine sichtbaren Aktualisierungen in der Fortschrittsleiste, da der Bildschirm dabei nicht neu aufgebaut wird.
Parameter der ProgressBar-Komponente
Die folgenden Parameter können für jede Instanz einer ProgressBar-Komponente im Eigenschaften- oder Komponenten-Inspektor festgelegt werden:
direction
,
mode
und
source
. Jeder dieser Parameter besitzt eine entsprechende ActionScript-Eigenschaft desselben Namens.
Mithilfe von ActionScript-Anweisungen können Sie diese und weitere Optionen für die ProgressBar-Komponente über deren Eigenschaften, Methoden und Ereignisse steuern. Weitere Informationen finden Sie im Abschnitt zur ProgressBar-Klasse im
ActionScript 3.0 Referenzhandbuch
für Flash Professional
.
Erstellen einer Anwendung mit der ProgressBar-Komponente
Im Folgenden wird gezeigt, wie Sie beim Authoring eine ProgressBar-Komponente in eine Anwendung einfügen. In diesem Beispiel wird die Fortschrittsleiste im Ereignismodus eingesetzt. Im Ereignismodus werden vom ladenden Inhalt die Ereignisse
progress
und
complete
ausgegeben. Diese verarbeitet die Fortschrittsleiste für die Anzeige des Fortschritts. Wenn das Ereignis
progress
stattfindet, wird eine Beschriftung so aktualisiert, dass sie den Prozentsatz des bereits geladenen Inhalts anzeigt. Wenn das Ereignis
complete
stattfindet, wird in diesem Beispiel
„Loading complete“ angezeigt sowie der Wert der Eigenschaft
bytesTotal
, nämlich die Größe der Datei.
-
Erstellen Sie ein neues Flash-Dokument (ActionScript 3.0).
-
Ziehen Sie die ProgressBar-Komponente vom Bedienfeld „Komponenten“ auf die Bühne.
-
Geben Sie im Eigenschafteninspektor den Instanznamen
aPb
ein.
-
Geben Sie auf der Registerkarte „Parameter“
200
als X-Wert ein.
-
Geben Sie
260
als Y-Wert ein.
-
Wählen Sie
event
für den Parameter
mode
.
-
Ziehen Sie die Button-Komponente vom Bedienfeld „Komponenten“ auf die Bühne.
-
Geben Sie im Eigenschafteninspektor den Instanznamen
loadButton
ein.
-
Geben Sie
220
als X-Wert ein.
-
Geben Sie
290
als Y-Wert ein.
-
Geben Sie
Show
für den Parameter „label“ ein.
-
Ziehen Sie die Label-Komponente auf die Bühne und geben Sie ihr den Instanznamen
progLabel
.
-
Geben Sie als Breite (B) den Wert
150
ein.
-
Geben Sie
200
als X-Wert ein.
-
Geben Sie
230
als Y-Wert ein.
-
Löschen Sie auf der Registerkarte „Parameter“ den Wert für den Parameter
text
.
-
Öffnen Sie das Bedienfeld „Aktionen“, wählen Sie in der Hauptzeitleiste Bild 1 aus und geben Sie den folgenden ActionScript-Code ein, um eine .mp3-Audiodatei zu laden:
import fl.controls.ProgressBar;
import flash.events.ProgressEvent;
import flash.events.IOErrorEvent;
var aSound:Sound = new Sound();
aPb.source = aSound;
var url:String = "http://www.helpexamples.com/flash/sound/song1.mp3";
var request:URLRequest = new URLRequest(url);
aPb.addEventListener(ProgressEvent.PROGRESS, progressHandler);
aPb.addEventListener(Event.COMPLETE, completeHandler);
aSound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loadButton.addEventListener(MouseEvent.CLICK, clickHandler);
function progressHandler(event:ProgressEvent):void {
progLabel.text = ("Sound loading ... " + aPb.percentComplete);
}
function completeHandler(event:Event):void {
trace("Loading complete");
trace("Size of file: " + aSound.bytesTotal);
aSound.close();
loadButton.enabled = false;
}
function clickHandler(event:MouseEvent) {
aSound.load(request);
}
function ioErrorHandler(event:IOErrorEvent):void {
trace("Load failed due to: " + event.text);
}
-
Wählen Sie „Steuerung“ > „Film testen“.
Erstellen einer Anwendung mit der ProgressBar-Komponente im Abfragemodus
Im folgenden Beispiel befindet sich die ProgressBar-Komponente im Abfragemodus. Im Abfragemodus wird der Fortschritt folgendermaßen bestimmt: Es wird auf
progress
-Ereignisse zum ladenden Inhalt gewartet und mithilfe der Eigenschaften
bytesLoaded
und
bytesTotal
des ladenden Inhalts der Fortschritt berechnet. Dieses Beispiel lädt ein Sound-Objekt, wartet auf seine
progress
-Ereignisse und berechnet den geladenen Prozentsatz unter Verwendung der Eigenschaften
bytesLoaded
und
bytesTotal
. Der bereits geladene Inhalt wird als Prozentwert in einer Bezeichnung und im Bedienfeld „Ausgabe“ angezeigt.
-
Erstellen Sie ein neues Flash-Dokument (ActionScript 3.0).
-
Ziehen Sie eine ProgressBar-Komponente vom Bedienfeld „Komponenten“ auf die Bühne und geben Sie im Eigenschafteninspektor die folgenden Werte ein:
-
Geben Sie als Instanznamen
aPb
ein.
-
Geben Sie
185
als X-Wert ein.
-
Geben Sie
225
als Y-Wert ein.
-
Ziehen Sie eine Label-Komponente auf die Bühne und geben Sie im Eigenschafteninspektor die folgenden Werte ein:
-
Geben Sie als Instanznamen
progLabel
ein.
-
Geben Sie
180
als X-Wert ein.
-
Geben Sie
180
als Y-Wert ein.
-
Löschen Sie auf der Registerkarte „Parameter“ den Wert für den Parameter „text“.
-
Öffnen Sie das Bedienfeld „Aktionen“, wählen Sie Bild 1 in der Zeitleiste aus und geben Sie den folgenden ActionScript-Code ein, mit dem ein Soundobjekt (
aSound
) erstellt und die Methode
loadSound()
aufgerufen wird, um einen Sound in das Soundobjekt zu laden:
import fl.controls.ProgressBarMode;
import flash.events.ProgressEvent;
import flash.media.Sound;
var aSound:Sound = new Sound();
var url:String = "http://www.helpexamples.com/flash/sound/song1.mp3";
var request:URLRequest = new URLRequest(url);
aPb.mode = ProgressBarMode.POLLED;
aPb.source = aSound;
aSound.addEventListener(ProgressEvent.PROGRESS, loadListener);
aSound.load(request);
function loadListener(event:ProgressEvent) {
var percentLoaded:int = event.target.bytesLoaded / event.target.bytesTotal * 100;
progLabel.text = "Percent loaded: " + percentLoaded + "%";
trace("Percent loaded: " + percentLoaded + "%");
}
-
Wählen Sie „Steuerung“ > „Film testen“ aus, um die Anwendung auszuführen.
Erstellen einer Anwendung mit der ProgressBar-Komponente im manuellen Modus
Im folgenden Beispiel befindet sich die ProgressBar-Komponente im manuellen Modus. Im manuellen Modus müssen Sie den Fortschritt manuell einstellen, indem Sie die Methode
setProgress()
aufrufen und ihr den aktuellen und den maximalen Wert übergeben. Aufgrund dieser Werte berechnet die Methode, wie weit der Vorgang fortgeschritten ist. Die Eigenschaft
source
stellen Sie im manuellen Modus nicht ein. Im Beispiel wird eine NumericStepper-Komponente mit einem Maximalwert von 250 verwendet, um die Fortschrittsleiste hochzuzählen. Wenn sich der Wert in der NumericStepper-Komponente ändert und ein
CHANGE
-Ereignis auslöst, ruft die Ereignisprozedur (
nsChangeHander
) die Methode
setProgress()
auf, um die Fortschrittsleiste nach vorne zu bewegen. Zudem wird angezeigt, zu wie viel Prozent der Vorgang in Relation zum Maximalwert abgeschlossen ist.
-
Erstellen Sie ein neues Flash-Dokument (ActionScript 3.0).
-
Ziehen Sie eine ProgressBar-Komponente vom Bedienfeld „Komponenten“ auf die Bühne und geben Sie im Eigenschafteninspektor die folgenden Werte ein:
-
Geben Sie als Instanznamen
aPb
ein.
-
Geben Sie
180
als X-Wert ein.
-
Geben Sie
175
als Y-Wert ein.
-
Ziehen Sie eine NumericStepper-Komponente auf die Bühne und geben Sie im Eigenschafteninspektor die folgenden Werte ein:
-
Geben Sie als Instanznamen
aNs
ein.
-
Geben Sie
220
als X-Wert ein.
-
Geben Sie
215
als Y-Wert ein.
-
Geben Sie unter „Parameter“
250
als Maximalwert (maximum),
0
als Minimalwert (minimum),
1
als Schrittintervall (
stepSize
) und
0
für den Parameter
value
an.
-
Ziehen Sie eine Label-Komponente auf die Bühne und geben Sie im Eigenschafteninspektor die folgenden Werte ein:
-
Geben Sie als Instanznamen
progLabel
ein.
-
Geben Sie als Breite (B) den Wert
150
ein.
-
Geben Sie
180
als X-Wert ein.
-
Geben Sie
120
als Y-Wert ein.
-
Löschen Sie auf der Registerkarte „Parameter“ den Wert „Label“ für den Parameter „text“.
-
Öffnen Sie das Bedienfeld „Aktionen“, wählen Sie in der Hauptzeitleiste Bild 1 aus und geben Sie den folgenden Code ein:
import fl.controls.ProgressBarDirection;
import fl.controls.ProgressBarMode;
import flash.events.Event;
aPb.direction = ProgressBarDirection.RIGHT;
aPb.mode = ProgressBarMode.MANUAL;
aPb.minimum = aNs.minimum;
aPb.maximum = aNs.maximum;
aPb.indeterminate = false;
aNs.addEventListener(Event.CHANGE, nsChangeHandler);
function nsChangeHandler(event:Event):void {
aPb.value = aNs.value;
aPb.setProgress(aPb.value, aPb.maximum);
progLabel.text = "Percent of progress = " + int(aPb.percentComplete) + "%";
}
-
Wählen Sie „Steuerung“ > „Film testen“ aus, um die Anwendung auszuführen.
-
Klicken Sie auf den nach oben gerichteten Pfeil des Zählers, um die Fortschrittsleiste vorrücken zu lassen.
Erstellen einer Fortschrittsleiste mithilfe von ActionScript-Code
In diesem Beispiel wird eine Fortschrittsleiste mithilfe von ActionScript-Code erstellt. Außerdem wird die Funktion des vorigen Beispiels wiederholt, in dem eine Fortschrittsleiste im manuellen Modus erstellt wurde.
-
Erstellen Sie ein neues Flash-Dokument (ActionScript 3.0).
-
Ziehen Sie eine ProgressBar-Komponente in das Bedienfeld „Bibliothek“.
-
Ziehen Sie eine NumericStepper-Komponente in das Bedienfeld „Bibliothek“.
-
Ziehen Sie eine Label-Komponente in das Bedienfeld „Bibliothek“.
-
Öffnen Sie das Bedienfeld „Aktionen“, wählen Sie in der Hauptzeitleiste Bild 1 aus und geben Sie den folgenden Code ein:
import fl.controls.ProgressBar;
import fl.controls.NumericStepper;
import fl.controls.Label;
import fl.controls.ProgressBarDirection;
import fl.controls.ProgressBarMode;
import flash.events.Event;
var aPb:ProgressBar = new ProgressBar();
var aNs:NumericStepper = new NumericStepper();
var progLabel:Label = new Label();
addChild(aPb);
addChild(aNs);
addChild(progLabel);
aPb.move(180,175);
aPb.direction = ProgressBarDirection.RIGHT;
aPb.mode = ProgressBarMode.MANUAL;
progLabel.setSize(150, 22);
progLabel.move(180, 150);
progLabel.text = "";
aNs.move(220, 215);
aNs.maximum = 250;
aNs.minimum = 0;
aNs.stepSize = 1;
aNs.value = 0;
aNs.addEventListener(Event.CHANGE, nsChangeHandler);
function nsChangeHandler(event:Event):void {
aPb.setProgress(aNs.value, aNs.maximum);
progLabel.text = "Percent of progress = " + int(aPb.percentComplete) + "%";
}
-
Wählen Sie „Steuerung“ > „Film testen“ aus, um die Anwendung auszuführen.
-
Klicken Sie auf den nach oben gerichteten Pfeil des Zählers, um die Fortschrittsleiste vorrücken zu lassen.
|
|
|