13.08.2012 Views

ACTIONSCRIPT 3 Developer’s Guide en

ACTIONSCRIPT 3 Developer’s Guide en

ACTIONSCRIPT 3 Developer’s Guide en

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>ACTIONSCRIPT</strong> 3.0 DEVELOPER’S GUIDE<br />

Using digital rights managem<strong>en</strong>t<br />

2 Create the NetConnection and NetStream objects, supplying implem<strong>en</strong>tations for the onDRMCont<strong>en</strong>tData() and<br />

onPlayStatus() callback functions of the NetStream cli<strong>en</strong>t object.<br />

3 Create a NetStreamPlayOptions object and set the stream property to the URL of the local media file.<br />

4 Call the NetStream preloadEmbeddedMetadata(), passing in the NetStreamPlayOptions object id<strong>en</strong>tifying the<br />

media file to parse.<br />

5 If the media file contains DRM metadata, th<strong>en</strong> the onDRMCont<strong>en</strong>tData() callback function is invoked. The<br />

metadata is passed to this function as a DRMCont<strong>en</strong>tData object.<br />

6 Use the DRMCont<strong>en</strong>tData object to obtain the voucher using the DRMManager loadVoucher() method.<br />

If the value of the auth<strong>en</strong>ticationMethod property of the DRMCont<strong>en</strong>tData object is<br />

flash.net.drm.Auth<strong>en</strong>ticationMethod.USERNAME_AND_PASSWORD, auth<strong>en</strong>ticate the user on the media rights<br />

server before loading the voucher. The serverURL and domain properties of the DRMCont<strong>en</strong>tData object can be<br />

passed to the DRMManager auth<strong>en</strong>ticate() method, along with the user’s cred<strong>en</strong>tials.<br />

7 The onPlayStatus() callback function is invoked wh<strong>en</strong> file parsing is complete. If the onDRMCont<strong>en</strong>tData()<br />

function has not be<strong>en</strong> called, the file does not contain the metadata required to obtain a voucher. This missing call<br />

also possibly means that Flash Access does not protect this file.<br />

The following code example for AIR illustrates how to preload a voucher for a local media file:<br />

package<br />

{<br />

import flash.display.Sprite;<br />

import flash.ev<strong>en</strong>ts.DRMAuth<strong>en</strong>ticationCompleteEv<strong>en</strong>t;<br />

import flash.ev<strong>en</strong>ts.DRMAuth<strong>en</strong>ticationErrorEv<strong>en</strong>t;<br />

import flash.ev<strong>en</strong>ts.DRMErrorEv<strong>en</strong>t;<br />

import flash.ev <strong>en</strong>ts.DRMStatusEv<strong>en</strong>t;<br />

import flash.ev<strong>en</strong>ts.NetStatusEv<strong>en</strong>t;<br />

import flash.net.NetConnection;<br />

import flash.net.NetStream;<br />

import flash.net.NetStreamPlayOptions;<br />

import flash.net.drm.Auth<strong>en</strong>ticationMethod;<br />

import flash.net.drm.DRMCont<strong>en</strong>tData;<br />

import flash.net.drm.DRMManager;<br />

import flash.net.drm.LoadVoucherSetting;<br />

public class DRMPreloader ext<strong>en</strong>ds Sprite<br />

{<br />

private var videoURL:String = "app-storage:/video.flv";<br />

private var userName:String = "user";<br />

private var password:String = "password";<br />

private var preloadConnection:NetConnection;<br />

private var preloadStream:NetStream;<br />

private var drmManager:DRMManager = DRMManager.getDRMManager();<br />

private var drmCont<strong>en</strong>tData:DRMCont<strong>en</strong>tData;<br />

public function DRMPreloader():void {<br />

drmManager.addEv<strong>en</strong>tList<strong>en</strong>er(<br />

DRMAuth<strong>en</strong>ticationCompleteEv<strong>en</strong>t.AUTHENTICATION_COMPLETE,<br />

onAuth<strong>en</strong>ticationComplete);<br />

drmManager.addEv<strong>en</strong>tList<strong>en</strong>er(DRMAuth<strong>en</strong>ticationErrorEv<strong>en</strong>t.AUTHENTICATION_ERROR,<br />

onAuth<strong>en</strong>ticationError);<br />

drmManager.addEv<strong>en</strong>tList<strong>en</strong>er(DRMStatusEv<strong>en</strong>t.DRM_STATUS, onDRMStatus);<br />

drmManager.addEv<strong>en</strong>tList<strong>en</strong>er(DRMErrorEv<strong>en</strong>t.DRM_ERROR, onDRMError);<br />

preloadConnection = new NetConnection();<br />

preloadConnection.addEv<strong>en</strong>tList<strong>en</strong>er(NetStatusEv<strong>en</strong>t.NET_STATUS, onConnect);<br />

preloadConnection.connect(null);<br />

Last updated 6/6/2012<br />

532

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!