Überblick
Der eingebaute Hinweis von AIR sieht auf dem Mac aus, als stamme er aus einem anderen Jahrzehnt. KlugDialog zeigt das Original: native macOS-Alert-Sheets, die am App-Fenster hängen, mit App-Symbol, Systemschrift und den vertrauten Schaltflächenstilen.
Über einfache Hinweise hinaus deckt es ab, was Desktop-Apps täglich brauchen: Dialoge mit Textfeldern (zum Beispiel Benutzername und Passwort, auch als sichere Felder), mehrere Schaltflächen mit eigenen Stilen und ein Fortschritts-Sheet („Verbindung wird hergestellt …“), das Ihr Code aktualisiert und schließt, wenn die Arbeit erledigt ist.
Alles ist asynchron: show() kehrt sofort zurück, und Ihr Callback erhält die gewählte Schaltfläche. KlugDialog läuft in der Mac-Version unserer Apps, unseres Praxisbeweises.
Neu unter Android: dieselben Dialoge als native Android-Dialoge. Textfelder bleiben auf jedem Bildschirm über der Tastatur, auch im Querformat auf Tablets, wo die Schaltflächen früher dahinter verschwanden; Passwörter, Benutzernamen und E-Mail-Adressen werden nie automatisch großgeschrieben, und E-Mail-Felder erhalten die E-Mail-Tastatur. Die Android-Version stapelt außerdem lange Schaltflächenlisten, bietet einen schlichten Spinner und läuft in der Android-Version unserer Apps.
Auch unter iOS: Seit Version 1.2 zeigt dieselbe API native iOS-Hinweise, Dialoge mit Textfeldern und einen Fortschrittsdialog, sodass ein Codepfad Android, iOS und macOS bedient.
Funktionen
- Eigenständig: eine ANE, keine Kernbibliothek und keine abhängigen ANEs, die Sie ergänzen müssten
- Native macOS-Alert-Sheets mit bis zu drei Schaltflächen
- Stile für Information, Warnung und kritische Meldung
- Dialoge mit beliebig vielen Schaltflächen und Textfeldern, einschließlich sicherer Felder
- Fortschritts-Sheet, das aus dem Code aktualisiert und geschlossen werden kann
- Dialoge lassen sich aus dem Code schließen
- Callbacks mit der gewählten Schaltfläche und den eingegebenen Werten
- Android: Felder über der Tastatur, keine automatisch großgeschriebenen Passwörter, E-Mail- / Zahlentastaturen, helles und dunkles Design
Unterstützte Plattformen
Auf anderen Plattformen gibt isSupported false zurück, sodass Ihre App dort auf ihre gewohnten Dialoge zurückfallen kann.
Erste Schritte
Fügen Sie die Erweiterung Ihrem Application Descriptor hinzu:
<extensions>
<extensionID>com.klug.dialog.Dialog</extensionID>
</extensions>
Codebeispiele
Fünf vollständige Abläufe. Jeder Aufruf kehrt sofort zurück; das Ergebnis kommt später in Ihrem Callback an, sodass die App nie blockiert, während ein Dialog geöffnet ist. Vollständige Dokumentation →
import com.klug.dialog.Dialog; var dialog:Dialog = Dialog.getInstance(); if ( dialog.isSupported ) { dialog.show( "Saved", "The recording is in your library." ); // one "OK" button } else { showAppAlert( "Saved" ); // your app's own fallback dialog, e.g. on Windows }
dialog.show( "Delete recording?", "This cannot be undone.", [ "Delete", "Keep" ], function( index:int ):void { // index = position in the buttons array; // -1 = closed without a button, e.g. the Android back key if ( index == 0 ) deleteRecording(); // your app }, Dialog.STYLE_WARNING ); // alert style of the macOS sheet
var buttons:Array = [ { label:"Cancel", style:4, tag:0 }, // style 4 = cancel, 3 = destructive { label:"Sign in", style:0, tag:1 } ]; var fields:Array = [ { placeholder:"E-mail", text:lastEmail, keyboardType:7 }, // 7 = e-mail keyboard { placeholder:"Password", secure:true } // never auto-capitalised ]; dialog.present( "Sign in", "Please enter your account.", true, buttons, fields, function( tag:int, values:Array, cancelled:Boolean = false ):void { if ( cancelled ) return; // closed without a button (tag -1) if ( tag == 1 ) signIn( values[0], values[1] ); // values in field order }, null, "dark" ); // theme on Android and iOS; macOS follows the system
// your own id: the same dialog is updated and closed with it dialog.progressShow( "connect", "Connecting", "Contacting the server…", false, function():void { trace( "progress dialog closed" ); } ); // fires once dialog.progressUpdate( "connect", "Signing in…" ); // when the work is done, or has failed dialog.progressDismiss( "connect" );
// pass your own id as the 7th parameter to close the dialog later dialog.present( "Waiting for the camera", "Tap Cancel to stop waiting.", false, [ { label:"Cancel", style:4, tag:0 } ], null, function( tag:int, values:Array ):void { stopWaiting(); }, // your app "waitCamera" ); // the camera has answered: close the dialog, no callback fires dialog.presentDismiss( "waitCamera" );
API-Übersicht
| Dialog.getInstance() | Gibt die einzige Instanz zurück. |
| isSupported | True unter Android, iOS und macOS; sonst false, zum Beispiel unter Windows. |
| show(title, message, buttons, callback, style) | Hinweis mit bis zu drei Schaltflächen (Standard „OK“); callback(index), -1, wenn ohne Schaltfläche geschlossen wurde. Gibt false zurück, wenn nicht unterstützt. |
| present(title, message, cancelable, buttons, fields, callback, id, theme) | Dialog mit beliebig vielen Schaltflächen und Textfeldern; callback(tag, values, cancelled). Übergeben Sie eine eigene id, um ihn später zu schließen; theme „light“ oder „dark“ unter Android und iOS. |
| presentDismiss(id) | Schließt einen present()-Dialog aus dem Code; es wird kein Callback ausgelöst. |
| progressShow(id, title, message, cancelable, closeCallback, theme) | Fortschrittsdialog mit Spinner; closeCallback wird einmal ausgelöst, wenn er verschwunden ist. |
| progressUpdate(id, message) / progressDismiss(id) | Ändert den Text des Fortschrittsdialogs / schließt ihn. |
| STYLE_INFO, STYLE_WARNING, STYLE_CRITICAL | Hinweisstile für show(), vom macOS-Alert-Sheet verwendet. |
| Button {label, style, tag} | style: 0 default, 1 positive, 2 negative, 3 destructive, 4 cancel, 5 neutral. Android nutzt alle, iOS nutzt 3 und 4, macOS zeigt alle Schaltflächen gleich. |
| Field {placeholder, secure, text, keyboardType, autocorrect, autocap} | keyboardType: 0 default, 3 URL, 4 number, 5 phone, 7 e-mail, 8 decimal. autocap: 0 none (default), 1 sentences, 2 words, 3 all. Die letzten drei gelten unter Android und iOS. |
KlugDialog kaufen
Eine Jahreslizenz für eine AIR-Anwendung, mit allen Updates für 12 Monate. Nach der Zahlung erhalten Sie die Erweiterung, die ActionScript-Bibliothek und die Dokumentation per E-Mail, in der Regel innerhalb eines Werktags. Lizenz und Bedingungen
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Kein Support
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Antwort per E-Mail innerhalb von 7 Tagen
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Antwort per E-Mail innerhalb von 48 Stunden
Voraussetzungen
| AIR SDK | 51.x (HARMAN) |
| Android | Android 6 oder neuer |
| iOS | iOS 13 oder neuer |
| macOS | macOS 11 oder neuer |