Basisinformatie over AIR-vensters



AIR biedt een gebruikersvriendelijke API die op meerdere platforms kan worden gebruikt. Met deze API voor vensters kunnen met Flash®-, Flex™- en HTML-programmeertechnieken native vensters worden gemaakt (dit zijn vensters die eigen zijn aan het besturingssysteem).

Met AIR hebt u een grote vrijheid bij het ontwikkelen van het uiterlijk van uw toepassing. De vensters die u maakt kunnen er uitzien als een standaard desktoptoepassing die passen bij de Apple-stijl wanneer ze worden uitgevoerd op de Mac, die voldoen aan de Microsoft-conventies wanneer ze worden uitgevoerd op Windows en die zich aanpassen aan het Linux-vensterbeheer op Linux zonder dat u een regel platformspecifieke code hoeft te gebruiken. U kunt echter ook de uitbreidbare interface met verwisselbare skins (weergaven) gebruiken die door het Flex-framework wordt geboden. Met deze interface kunt u uw eigen stijl ontwikkelen, ongeacht het besturingssysteem waarin uw toepassing wordt uitgevoerd. U kunt zelfs uw eigen vensterinterface tekenen met vector- en bitmap-illustraties met volledige ondersteuning voor transparantie. Ook alfa-overvloeiing wordt ondersteund, waarmee u een gedeeltelijk transparant venster kunt laten overvloeien in de bureaubladachtergrond. Hebt u genoeg van die rechthoekige vensters? Teken eens een rond venster.

Vensters in AIR

AIR ondersteunt drie specifieke API's voor het werken met vensters:

  • De ActionScript-georiënteerde NativeWindow-klasse biedt de venster-API van het laagste niveau. Gebruik NativeWindows in toepassingen die met ActionScript en Flash CS zijn gemaakt. U kunt de klasse NativeWindow uitbreiden om de vensters te specialiseren die in de toepassing worden gebruikt.

  • De Flex-frameworkklassen mx:WindowedApplication en mx:Window bieden een Flex-“wrapper” voor de klasse NativeWindow. De component WindowedApplication vervangt de component Application wanneer u een AIR-toepassing met Flex maakt en moet altijd worden gebruikt als beginvenster in uw Flex-toepassing.

  • In de HTML-omgeving kunt u de klasse JavaScript Window gebruiken, net als in een browsergebaseerde webtoepassing. Aanroepen naar JavaScript Window-methoden worden doorgestuurd naar het onderliggende native Window-object.

ActionScript-vensters

Wanneer u vensters maakt met de klasse NativeWindow, kunt u rechtstreeks gebruikmaken van de stage en weergavelijst van Flash Player. Als u visuele objecten aan een NativeWindow wilt toevoegen, voegt u het object toe aan de weergavelijst van de vensterstage of aan een andere weergaveobjectcontainer op de stage.

Flex-frameworkvensters

Het Flex-framework definieert zijn eigen venstercomponenten waarin de NativeWindow-API is verpakt. Deze componenten, mx:WindowedApplication en mx:Window, kunnen niet buiten het framework worden gebruikt, en kunnen dus niet worden gebruikt in AIR-toepassingen die zijn ontwikkeld met Flash CS.

HTML-vensters

Wanneer u HTML-vensters maakt, gebruikt u HTML, CSS en JavaScript om inhoud weer te geven. Als u een visueel object aan een HTML-venster wilt toevoegen, voegt u die inhoud toe aan het HTML DOM. HTML-vensters vormen een speciale categorie van NativeWindow. De AIR-host definieert in HTML-vensters een nativeWindow-eigenschap die toegang biedt tot de onderliggende NativeWindow-instantie. U kunt deze eigenschap gebruiken om toegang te krijgen tot de NativeWindow-eigenschappen, -methoden en -gebeurtenissen die hier worden beschreven.

Opmerking: Het JavaScript-object Window heeft ook methoden voor het schrijven van scripts voor het venster waarin het object zich bevindt, zoals moveTo() en close(). Wanneer er methoden beschikbaar zijn die elkaar overlappen, kunt u de methode gebruiken die het handigst is.

Het beginvenster van de toepassing

Het eerste venster van uw toepassing wordt automatisch voor u gemaakt door AIR. AIR stelt de eigenschappen en inhoud van het venster in met de parameters die zijn opgegeven in het element initialWindow van het descriptorbestand van de toepassing.

Als de inhoud van de hoofdmap een SWF-bestand is, maakt AIR een NativeWindow-instantie, laadt het dit SWF-bestand en voegt het dit bestand toe aan de vensterstage. Als de inhoud van de hoofdmap een HTML-bestand is, maakt AIR een HTML-venster en laadt het dit HTML-bestand.

Zie De structuur van het descriptorbestand van de toepassing voor meer informatie over de venstereigenschappen die zijn opgegeven in de toepassingsdescriptor.

Klassen van native vensters

De API voor native vensters bevat de volgende klassen:

Pakket

Klassen

flash.display

  • NativeWindow

  • NativeWindowInitOptions

  • NativeWindowDisplayState

  • NativeWindowResize

  • NativeWindowSystemChrome

  • NativeWindowType

Tekenreeksconstanten voor vensters worden gedefinieerd in de volgende klassen:

  • NativeWindowDisplayState

  • NativeWindowResize

  • NativeWindowSystemChrome

  • NativeWindowType

flash.events

  • NativeWindowBoundsEvent

  • NativeWindowDisplayStateEvent

Gebeurtenisstromen voor native vensters

Native vensters verzenden gebeurtenissen om belanghebbende componenten te melden dat er een belangrijke wijziging zal worden doorgevoerd of al is doorgevoerd. Veel gebeurtenissen die betrekking hebben op vensters, worden in paren verzonden. De eerste gebeurtenis waarschuwt dat er binnenkort een verandering zal plaatsvinden. De tweede gebeurtenis meldt dat de wijziging heeft plaatsgevonden. U kunt een waarschuwingsgebeurtenis annuleren, maar een meldingsgebeurtenis niet. De volgende reeks gebeurtenissen laat zien hoe de gebeurtenisstroom loopt wanneer een gebruiker op de knop Maximaliseren van een venster klikt:

  1. Het NativeWindow-object verzendt de gebeurtenis displayStateChanging.

  2. Als de gebeurtenis niet door geregistreerde listeners wordt geannuleerd, wordt het venster gemaximaliseerd.

  3. Het NativeWindow-object verzendt de gebeurtenis displayStateChange.

    Daarnaast verzendt het NativeWindow-object ook gebeurtenissen voor gerelateerde wijzigingen in het formaat en de positie van het venster. Het venster verzendt geen waarschuwingsgebeurtenissen voor deze gerelateerde wijzigingen. De gerelateerde wijzigingen zijn:

    1. De gebeurtenis move wordt verzonden als de linkerbovenhoek van het vensters is verplaatst als gevolg van het maximaliseren.

    2. De gebeurtenis resize wordt verzonden als het vensterformaat is gewijzigd als gevolg van het maximaliseren.

    Het NativeWindow-object verzendt een vergelijkbare reeks gebeurtenissen bij het minimaliseren, sluiten en verplaatsen van vensters en bij het wijzigen of herstellen van het formaat van vensters.

    De waarschuwingsgebeurtenissen worden alleen verzonden wanneer een wijziging is geactiveerd via de vensterinterface of andere door het besturingssysteem gecontroleerde mechanismen. Wanneer u een venstermethode oproept om het formaat, de positie of de weergavestatus te wijzigen, verzendt het venster alleen een gebeurtenis om de wijziging te melden. U kunt desgewenst een waarschuwingsgebeurtenis verzenden met de methode dispatchEvent() van het venster en vervolgens controleren of uw waarschuwingsgebeurtenis is geannuleerd voordat u de wijziging doorvoert.

    Zie ActionScript 3.0 Language and Components Reference (http://www.adobe.com/go/learn_flash_aslr_nl) voor gedetailleerde informatie over de klassen, methoden, eigenschappen en gebeurtenissen van de API voor vensters.

    Voor algemene informatie over het gebruik van de Flash-weergavelijst, raadpleegt u de sectie 'Weergave programmeren' van de naslaggids Adobe ActionScript 3.0 programmeren (http://www.adobe.com/go/learn_fl_cs4_programmingAS3_nl).

Eigenschappen die de stijl en het gedrag van een native venster bepalen

De volgende eigenschappen bepalen het basisuiterlijk en -gedrag van een venster:

  • type

  • systemChrome

  • transparent

Wanneer u een venster maakt, stelt u deze eigenschappen in voor het NativeWindowInitOptions-object dat aan de vensterconstructor wordt doorgegeven. AIR leest de eigenschappen voor het beginvenster van de toepassing vanuit de toepassingsdescriptor. (Dit geldt niet voor de eigenschap type, die niet in de toepassingsdescriptor kan worden ingesteld en altijd is ingesteld op normal.) De eigenschappen kunnen niet worden gewijzigd nadat het venster is gemaakt.

Sommige instellingen van deze eigenschappen sluiten elkaar uit: systemChrome kan niet worden ingesteld op standard als transparent is ingesteld op true of als type is ingesteld op lightweight.

Venstertypen

In de venstertypen van AIR zijn de interface- en zichtbaarheidskenmerken van het oorspronkelijke besturingssysteem gecombineerd. Op die manier zijn er drie functionele typen vensters ontstaan. Gebruik de constanten die in de klasse NativeWindowType zijn gedefinieerd, om in de code te verwijzen naar de naam van de typen. AIR biedt de volgende venstertypen:

Type

Beschrijving

Normaal

Dit is een normaal venster. Normale vensters maken gebruik van het maximale formaat van de interface en verschijnen op de taakbalk van Windows en in het venstermenu van Mac OS X.

Utiliteit

Dit is een venster met een palet met hulpmiddelen. Utiliteitsvensters maken gebruik van een afgeslankte versie van de systeeminterface en verschijnen niet op de taakbalk van Windows of in het venstermenu van Mac OS X.

Lichtgewicht

Lichtgewicht vensters hebben geen interface en verschijnen niet op de taakbalk van Windows of in het venstermenu van Mac OS X. Bovendien beschikken lichtgewicht vensters niet over een systeemmenu (Alt+Spatiebalk) in Windows. Lichtgewicht vensters zijn geschikt voor het weergeven van ballonnetjes met mededelingen en voor besturingselementen, zoals keuzelijsten met invoervak die kortstondig een weergavegebied openen. Wanneer het lichtgewicht venster type wordt gebruikt, moet systemChrome zijn ingesteld op none.

Vensterinterface

De vensterinterface bestaat uit een set besturingselementen waarmee gebruikers een venster in de bureaubladomgeving kunnen manipuleren. Tot de interface-elementen behoren de titelbalk, titelbalkknoppen, vensterrand en formaatgrepen.

Systeeminterface

U kunt de eigenschap systemChrome instellen op standard of none. Kies standard voor de systeeminterface als u het venster wilt voorzien van de reeks standaard besturingselementen die worden gemaakt en vormgegeven door het besturingssysteem van de gebruiker. Kies none als u het venster wilt voorzien van uw eigen interface. Gebruik de constanten die in de klasse NativeWindowSystemChrome zijn gedefinieerd, om in de code te verwijzen naar de instellingen van de systeeminterface.

De systeeminterface wordt beheerd door het systeem. Uw toepassing heeft niet rechtstreeks toegang tot de besturingselementen zelf, maar kan reageren op de gebeurtenissen die worden verzonden wanneer de besturingselementen worden gebruikt. Wanneer u de standaardinterface gebruikt voor een venster, moet de eigenschap transparent zijn ingesteld op false en moet de eigenschap type zijn ingesteld op normal of utility.

Aangepaste interface

Wanneer u een venster maakt zonder systeeminterface, moet u uw eigen interfacebesturingselementen toevoegen om de interactie tussen een gebruiker en het venster mogelijk te maken en te sturen. U hebt ook de mogelijkheid om transparante, niet-rechthoekige vensters te maken.

Venstertransparantie

Als u alfa-overvloeiing wilt toestaan, waarbij het venster deels transparant wordt en overvloeit in de bureaubladachtergrond of in andere vensters, stelt u de eigenschap transparent van het venster in op true. De eigenschap transparent moet worden ingesteld voordat het venster wordt gemaakt en kan niet worden gewijzigd als het venster eenmaal is gemaakt.

Een transparant venster heeft geen standaardachtergrond. Elk venstergebied dat geen object bevat dat door de toepassing is getekend, is onzichtbaar. Als voor een weergegeven object de alfa-instelling kleiner is dan één, is alles wat zich onder het object bevindt, gedeeltelijk zichtbaar door het object heen, inclusief eventuele andere weergaveobjecten, andere vensters en het bureaublad. Het opbouwen van het beeld van grote gebieden waarop alfa-overvloeiing is toegepast, kan veel tijd kosten. Gebruik dit effect daarom slechts met mate.

Transparante vensters zijn handig wanneer u toepassingen wilt maken met randen die onregelmatig van vorm zijn, geleidelijk vervagen of onzichtbaar lijken.

Belangrijk: In Linux kunnen muisgebeurtenissen volledig transparante pixel niet passeren. Vermijd het maken van vensters met grote, volledig transparante gebieden, aangezien u de toegang van de gebruiker tot andere vensters of items op hun bureaublad mogelijk op onzichtbare wijze zou kunnen blokkeren. In Mac OS X en Windows kunnen muisgebeurtenissen volledig transparante pixels niet passeren.

Transparantie kan niet worden gebruikt voor vensters die gebruikmaken van de systeeminterface. Daarnaast worden SWF-inhoud en PDF-inhoud in HTML niet weergegeven in transparante vensters. Zie Belangrijke opmerkingen voor het laden van SWF- of PDF-inhoud in een HTML-pagina voor meer informatie.

In bepaalde besturingssystemen wordt transparantie niet ondersteund omdat de hardware- of softwareconfiguratie dat niet toestaat of omdat de door de gebruiker gekozen weergaveopties dat verhinderen. Als transparantie niet wordt ondersteund, wordt de toepassing tegen een zwarte achtergrond geplaatst. In deze gevallen worden transparante gebieden van de toepassing dekkend zwart weergegeven.

De statische eigenschap NativeWindow.supportsTransparency geeft aan of venstertransparantie beschikbaar is. Als uit de test blijkt dat deze eigenschap de waarde false heeft, kunt u bijvoorbeeld een waarschuwingsvenster weergeven voor de gebruiker of de rechthoekige, niet-transparante gebruikersinterface weergeven die u voor dit soort gevallen achter de hand hebt. Bedenk dat transparantie altijd wordt ondersteund door Mac- en Windows-besturingssystemen. Voor ondersteuning in Linux-besturingssystemen is een hulpprogramma voor samenstellend vensterbeheer vereist. Zelfs als zo'n hulpprogramma actief is, is transparantie mogelijk niet beschikbaar vanwege de door de gebruiker gekozen weergaveopties of de hardwareconfiguratie.

Transparantie in een HTML-toepassingsvenster

De achtergrond van HTML-inhoud die in HTML-vensters en HTMLLoader-objecten wordt weergegeven, is standaard ondoorzichtig, zelfs als het venster waarin de inhoud wordt weergegeven, transparant is. Als u de standaardachtergrond wilt uitschakelen die voor HTML-inhoud wordt weergegeven, stelt u de eigenschap paintsDefaultBackground in op false. In het volgende voorbeeld wordt een HTMLLoader gemaakt en wordt de standaardachtergrond uitgeschakeld:

var html:HTMLLoader = new HTMLLoader(); 
html.paintsDefaultBackground = false;

In dit voorbeeld wordt JavaScript gebruikt om de standaardachtergrond van een HTML-venster uit te schakelen:

window.htmlLoader.paintsDefaultBackground = false;

Als een element in het HTML-document een achtergrondkleur instelt, is de achtergrond van dat element niet transparant. Het instellen van een waarde voor gedeeltelijke transparantie (of matheid) wordt niet ondersteund. U kunt echter een transparante afbeelding in de PNG-indeling als achtergrond voor een pagina of pagina-element gebruiken om een vergelijkbaar visueel effect te krijgen.

Een visuele venstercatalogus

De volgende tabel illustreert de visuele effecten van verschillende combinaties van de instellingen van venstereigenschappen in de besturingssystemen Mac OS X, Windows en Linux:

Vensterinstellingen

Mac OS X

Microsoft Windows

Linux*

Type: normal

SystemChrome: standard

Transparent: false




Type: utility

SystemChrome: standard

Transparent: false




Type: alle

SystemChrome: none

Transparent: false




Type: alle

SystemChrome: none

Transparent: true




mxWindowedApplication of mx:Window

Type: alle

SystemChrome: none

Transparent: true




*Ubuntu met Compiz-vensterbeheer

Opmerking: De volgende systeemchroomelementen worden niet ondersteund door AIR: de Mac OS X-werkbalk, het Mac OS X-proxypictogram, pictogrammen op de Windows-titelbalk en alternatieve systeemchroom.