Geladen media benaderen als gegevensFlash Player 9 of hoger, Adobe AIR 1.0 of hoger Voor toegang tot geladen gegevens gebruikt u de methoden BitmapData.draw() en SoundMixer.computeSpectrum(). Standaard kunt u geen pixel- of audiogegevens verkrijgen van afbeeldingen of audio-objecten die worden gerenderd of afgespeeld door media in een andere sandbox. Met de volgende methoden kunt u echter wel toegang verlenen tot dergelijke gegevens, ook al staan de gegevens in andere sandboxen.
In de volgende secties wordt aandacht besteed aan het opvragen van bitmap-, geluids- en videogegevens. Bitmapgegevens opvragenMet de methode draw() van een object BitmapData kunt u de weergegeven pixels van een willekeurig weergaveobject overnemen in het object BitmapData. Dit kunnen de pixels zijn van een object MovieClip, een object Bitmap of een weergaveobject. De methode draw() kan alleen worden gebruikt voor het overnemen van pixels in het object BitmapData als aan de volgende voorwaarden wordt voldaan:
Als niet aan deze voorwaarden wordt voldaan, wordt een uitzondering SecurityError gegenereerd. Wanneer u de afbeelding laadt met de methode load() van de klasse Loader, kunt u een parameter context opgeven (een object LoaderContext). Als u de eigenschap checkPolicyFile van het object LoaderContext instelt op true, controleert Flash Player of er een bestand met URL-beleid aanwezig is op de server waarvan de afbeelding wordt geladen. Als dat het geval is en in dit bestand is vastgelegd dat het domein van het ladende SWF-bestand toegang heeft, krijgt het bestand toegang tot de gegevens in het object Bitmap. In alle andere gevallen wordt de toegang geweigerd. U kunt ook de eigenschap checkPolicyFile opgeven voor een afbeelding die wordt geladen via de tag <img> in een tekstveld. SWF-bestanden en afbeeldingen in een tekstveld laden met de tag SWF-bestanden en afbeeldingen in een tekstveld laden met de tag <img > Geluidsgegevens opvragenEr gelden beveiligingsbeperkingen voor de volgende API’s van ActionScript 3.0 voor geluiden:
Elk geluid is gekoppeld aan twee soorten sandboxen: een inhoudssandbox en een eigenaarssandbox.
Wanneer u het geluid laadt met de methode load() van de klasse Sound, kunt u een parameter context opgeven (een object SoundLoaderContext). Als u de eigenschap checkPolicyFile van het object SoundLoaderContext instelt op true, controleert de runtime of er een bestand met URL-beleid aanwezig is op de server waarvan het geluid wordt geladen. Als dat het geval is en in dit bestand is vastgelegd dat het domein van de ladende code toegang heeft, krijgt de code toegang tot de eigenschap id van het Sound-object. In alle andere gevallen wordt de toegang geweigerd. Via de eigenschap checkPolicyFile kan ook de methode SoundMixer.computeSpectrum() worden ingeschakeld voor geladen geluiden. U kunt de methode SoundMixer.areSoundsInaccessible() gebruiken om vast te stellen of een aanroep van de methode SoundMixer.stopAll() tot gevolg heeft dat het afspelen van alle geluiden wordt gestopt, omdat de eigenaarssandbox van een of meer geluiden niet toegankelijk is voor de aanroeper. Het aanroepen van de methode SoundMixer.stopAll() heeft tot gevolg dat het afspelen wordt gestopt van de geluiden waarvan de eigenaarssandbox dezelfde is als die van de aanroeper van stopAll(). De aanroep heeft eveneens tot gevolg dat het afspelen wordt gestopt van de geluiden waarvan het afspelen is gestart door SWF-bestanden die de methode Security.allowDomain() hebben aangeroepen om toegang te verlenen aan het domein van het SWF-bestand dat de methode stopAll() aanroept. Het afspelen van eventuele andere geluiden wordt niet gestopt. De aanwezigheid van deze geluiden kan worden vastgesteld door de methode SoundMixer.areSoundsInaccessible() aan te roepen. De methode computeSpectrum() kan alleen worden aangeroepen als alle geluiden die worden afgespeeld afkomstig zijn uit de sandbox van het object dat de methode aanroept of uit een bron die toegang heeft verleend aan de sandbox van de aanroeper. Als niet aan deze voorwaarden wordt voldaan, wordt een uitzondering SecurityError gegenereerd. In het geval van geluiden die zijn geladen uit ingesloten geluiden in een bibliotheek in een SWF-bestand kan toegang worden verleend met een aanroep van de methode Security.allowDomain() in het geladen SWF-bestand. Voor geluiden die zijn geladen uit andere bronnen dan SWF-bestanden (zoals uit geladen MP3-bestanden of uit videobestanden) moet in een URL-beleidsbestand op de server van het bronobject toegang worden verleend tot gegevens in geladen media. Zie Controlemiddelen voor auteurs (ontwikkelaars) en Controlemiddelen voor websites (beleidsbestanden) voor meer informatie. Als u toegang wilt tot geluidsgegevens van RTMP-streams, moet u toegang verlenen tot de server. Met de ActionScript-eigenschap Client.audioSampleAccess aan de serverkant kunt u toegang verlenen tot bepaalde mappen op Flash Media Server. Zie de Server-Side ActionScript Language Reference voor meer informatie. Videogegevens opvragenMet de methode BitmapData.draw() kunt u de pixelgegevens vastleggen uit het huidige frame van een video. Er zijn twee verschillende soorten video:
Als u de methode BitmapData.draw() wilt gebruiken om runtimeafbeeldingen te extraheren uit RTMP-streams, moet u toegang verlenen tot de server. Met de ActionScript-eigenschap Client.videoSampleAccess aan de serverkant kunt u toegang verlenen tot bepaalde mappen op Flash Media Server. Zie de Server-Side ActionScript Language Reference voor meer informatie. Wanneer u de methode BitmapData.draw() aanroept met progressieve video als waarde voor de parameter source, moet de aanroeper van BitmapData.draw() deel uitmaken van de sandbox van het FLV-bestand of moet op de server van het FLV-bestand een beleidsbestand bestaan waarin toegang wordt verleend aan het domein van het aanroepende SWF-bestand. U kunt aanvragen dat het beleid wordt gedownload door de eigenschap checkPolicyFile van het object NetStream in te stellen op true. |
![]() |