Översikt
AIR:s inbyggda varning på Mac ser ut som om den kom från ett annat årtionde. KlugDialog visar det äkta: inbyggda macOS-varningsark kopplade till appfönstret, med appikonen, systemtypsnittet och de välbekanta knappstilarna.
Utöver enkla varningar täcker det vad skrivbordsappar behöver varje dag: dialoger med textfält (till exempel användarnamn och lösenord, även som säkra fält), flera knappar med egna stilar och ett förloppsark ("Ansluter…") som din kod uppdaterar och stänger när arbetet är klart.
Allt är asynkront: show() returnerar direkt och din callback får den valda knappen. KlugDialog körs i Mac-versionen av våra appar, vårt proof of concept.
Nytt på Android: samma dialoger som inbyggda Android-dialoger. Textfält stannar ovanför tangentbordet på alla skärmar, även i liggande läge på surfplattor, där knapparna tidigare försvann bakom det; lösenord, användarnamn och e-postadresser får aldrig automatiska versaler, och e-postfält får e-posttangentbordet. Android-versionen staplar också långa knapplistor, erbjuder en enkel spinner och körs i Android-versionen av våra appar.
Även på iOS: sedan version 1.2 visar samma API inbyggda iOS-varningar, dialoger med textfält och en förloppsdialog, så att en enda kodväg täcker Android, iOS och macOS.
Funktioner
- Fristående: ett ANE, inget kärnbibliotek eller beroende-ANE:er att lägga till
- Inbyggda macOS-varningsark med upp till tre knappar
- Stilarna informativ, varning och kritisk
- Dialoger med valfritt antal knappar och textfält, även säkra fält
- Förloppsark som kan uppdateras och stängas från kod
- Dialoger kan stängas från kod
- Callbacks med vald knapp och inmatade värden
- Android: fält ovanför tangentbordet, inga automatiska versaler i lösenord, tangentbord för e-post / siffror, ljust och mörkt tema
Plattformar som stöds
På andra plattformar returnerar isSupported false, så att din app kan falla tillbaka på sina vanliga dialoger där.
Kom igång
Lägg till tillägget i din applikationsbeskrivning (application descriptor):
<extensions>
<extensionID>com.klug.dialog.Dialog</extensionID>
</extensions>
Kodexempel
Fem kompletta flöden. Varje anrop returnerar direkt; resultatet kommer senare i din callback, så appen blockeras aldrig medan en dialog är öppen. Fullständig 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-översikt
| Dialog.getInstance() | Returnerar den enda instansen. |
| isSupported | True på Android, iOS och macOS; false på övriga, till exempel Windows. |
| show(title, message, buttons, callback, style) | Varning med upp till tre knappar (standard "OK"); callback(index), -1 om den stängdes utan knapp. Returnerar false om det inte stöds. |
| present(title, message, cancelable, buttons, fields, callback, id, theme) | Dialog med valfritt antal knappar och textfält; callback(tag, values, cancelled). Ange ditt eget id för att stänga den senare; theme "light" eller "dark" på Android och iOS. |
| presentDismiss(id) | Stänger en present()-dialog från kod; ingen callback utlöses. |
| progressShow(id, title, message, cancelable, closeCallback, theme) | Förloppsdialog med en spinner; closeCallback utlöses en gång när den är borta. |
| progressUpdate(id, message) / progressDismiss(id) | Ändrar förloppsdialogens text / stänger den. |
| STYLE_INFO, STYLE_WARNING, STYLE_CRITICAL | Varningsstilar för show(), som används av macOS-varningsarket. |
| Button {label, style, tag} | style: 0 default, 1 positive, 2 negative, 3 destructive, 4 cancel, 5 neutral. Android använder alla, iOS använder 3 och 4, macOS visar alla knappar likadant. |
| Field {placeholder, secure, text, keyboardType, autocorrect, autocap} | keyboardType: 0 default, 3 URL, 4 number, 5 phone, 7 e-mail, 8 decimal. autocap: 0 none (standard), 1 sentences, 2 words, 3 all. De tre sista gäller på Android och iOS. |
Köp KlugDialog
En årslicens för en AIR-applikation, med alla uppdateringar i 12 månader. Efter betalning får du tillägget, ActionScript-biblioteket och dokumentationen via e-post, vanligtvis inom en arbetsdag. Licens och villkor
- Licens för en AIR-applikation
- Alla uppdateringar i 12 månader
- Ingen support
- Licens för en AIR-applikation
- Alla uppdateringar i 12 månader
- Svar via e-post inom 7 dagar
- Licens för en AIR-applikation
- Alla uppdateringar i 12 månader
- Svar via e-post inom 48 timmar
Krav
| AIR SDK | 51.x (HARMAN) |
| Android | Android 6 eller senare |
| iOS | iOS 13 eller senare |
| macOS | macOS 11 eller senare |