Åtkomst av inlästa medier som dataFlash Player 9 och senare, Adobe AIR 1.0 och senare Använd metoderna BitmapData.draw() och SoundMixer.computeSpectrum()för att få åtkomst till inlästa data. Som standard ges inte åtkomst till pixeldata eller ljuddata från grafik- eller ljudobjekt som återges eller används av media som har lästs in i en annan sandlåda. Men du kan använda följande metoder om du vill ge åtkomst till sådana data över sandlådegränserna:
I följande avsnitt beskrivs hur du får åtkomst till bitmapps-, ljud- och videodata. Åtkomst till bitmappsdataMed metoden draw() i objektet BitmapData kan du rita de pixlar som för tillfället visas med ett visningsobjekt. Detta kan innehålla pixlarna från objektet MovieClip, Bitmap eller något annat visningsobjekt. Följande villkor måste uppfyllas för att metoden draw() ska rita pixlar till objektet BitmapData:
Om villkoren inte uppfylls genereras ett SecurityError-undantag. Om du läser in bilden med metoden load() i klassen Loader kan du ange parametern context, som är ett LoaderContext-objekt. Om du ställer in egenskapen checkPolicyFile för LoaderContext-objektet på true söker Flash Player efter en URL-principfil på servern som bilden läses in på. Om det finns en principfil och om filen godkänner domänen för den inläsande SWF-filen, får filen åtkomst till data i Bitmap-objektet, annars får den inte åtkomst. Du kan även ange egenskapen checkPolicyFile i en bild som lästs in via taggen <img> i ett textfält. Mer information finns i Inläsning av SWF-filer och bilder via taggen <img> i ett textfält. Åtkomst av ljuddataFöljande ljudrelaterade API:er i ActionScript 3.0 har säkerhetsbegränsningar:
Varje ljud har två typer av associerade sandlådor; en för innehållet och en för ägaren.
Om du läser in ljudet med metoden load() i klassen Sound kan du ange parametern context, som är ett SoundLoaderContext-objekt. Om du anger egenskapen checkPolicyFile för SoundLoaderContext-objektet till true söker körningen efter en URL-principfil på den server från vilken ljudet lästes in. Om det finns en principfil som godkänner domänen för den kod som ska läsas in får koden åtkomst till egenskapen id för Sound-objektet, annars får den inte åtkomst. Genom att dessutom ange egenskapen checkPolicyFile kan metoden SoundMixer.computeSpectrum() användas för inlästa ljud. Du kan använda metoden SoundMixer.areSoundsInaccessible() för att ta reda på om ett anrop till metoden SoundMixer.stopAll() inte kommer att stoppa alla ljud, på grund av att anroparen saknar åtkomst till sandlådan för en eller flera ljudägare. Genom anrop av metoden SoundMixer.stopAll() stoppas dessa ljud vars ägarsandlåda är densamma som för den som anropar stopAll(). Den stoppar även de ljud vars uppspelning startades med SWF-filer som har anropat metoden Security.allowDomain() för att tillåta åtkomst av domänen med SWF-filen som anropar metoden stopAll(). Några andra ljud stoppas inte och förekomsten av dessa ljud kan upptäckas genom anrop av metoden SoundMixer.areSoundsInaccessible(). För anrop av metoden computeSpectrum() krävs att alla ljud som spelas upp antingen är från samma sandlåda som anropande objekt av metoden eller från en källa som har tilldelats behörighet till anroparens sandlåda, i annat fall genereras ett SecurityError-undantag. För ljud som lästs in från inbäddade ljud i ett bibliotek i en SWF-fil tilldelas behörighet genom ett anrop till metoden Security.allowDomain() i den inlästa SWF-filen. För ljud som lästs in från andra källor än SWF-filer (MP3-filer eller videofiler) är det en URL-principfil på källservern som beviljar tillgång till data i inlästa medier. Mer information finns i Författarinställningar (för utvecklare) och Webbplatsinställningar (principfiler). För åtkomst till ljuddata från RTMP-strömmar måste du tillåta åtkomst på servern. Använd egenskapen Client.audioSampleAccess för ActionScript på serversidan om du vill tillåta åtkomst till särskilda kataloger på Flash Media Server. Mer information finns i Språkreferens för ActionScript på server. Komma åt videodataDu kan använda metoden BitmapData.draw() för att hämta pixeldata från aktuell bildruta med video. Det finns två typer av video:
Om du vill använda metoden BitmapData.draw() för att extrahera grafik för körningen från RTMP-strömmar måste du tillåta åtkomst på servern. Använd egenskapen Client.videoSampleAccess för ActionScript på serversidan om du vill tillåta åtkomst till särskilda kataloger på Flash Media Server. Mer information finns i Språkreferens för ActionScript på server. När du anropar metoden BitmapData.draw() med progressiv video som parametern source, måste anroparen av BitmapData.draw() antingen komma från samma sandlåda som FLV-filen eller så måste servern med FLV-filen ha en principfil som tilldelar behörighet till domänen med anropande SWF-fil. Du kan begära att principfilen ska laddas ned genom att ange egenskapen checkPolicyFile för NetStream-objektet med true. |
|