flash.netXMLSocket XMLSocket クラスはクライアントソケットを実装しており、Flash Player または AIR アプリケーションはこのソケットを使用して、IP アドレスまたはドメイン名で識別されるサーバーコンピューターと通信できます。flash.events:EventDispatcher XMLSocket クラスはクライアントソケットを実装しており、Flash Player または AIR アプリケーションはこのソケットを使用して、IP アドレスまたはドメイン名で識別されるサーバーコンピューターと通信できます。 XMLSocket クラスは、リアルタイムのチャットシステムなど待ち時間を短くすることが求められるクライアント/サーバーアプリケーションに適しています。従来の HTTP ベースチャットソリューションは頻繁にサーバーをポーリングし、HTTP 要求を使用して新しいメッセージをダウンロードします。それに対して、XMLSocket チャットソリューションはサーバーに対して開いた接続を維持するため、サーバーはクライアントから要求を受けずにただちに着信メッセージを送ることができます。XMLSocket クラスを使用するには、サーバーコンピューターは XMLSocket クラスで使用されるプロトコルに対応したデーモンを実行する必要があります。プロトコルの説明を次の一覧に示します。
  • XML メッセージは、全二重 TCP/IP ストリームソケット接続を介して送られます。
  • 個々の XML メッセージは完全な XML ドキュメントであり、ゼロ(0)バイトで終了します。
  • 1 つの XMLSocket 接続を使用して送受信できる XML メッセージの数に制限はありません。

XMLSocket オブジェクトと通信するようにサーバーを設定すると、問題が発生する可能性があります。 アプリケーションがリアルタイムのインタラクティブ機能を必要としない場合は、XMLSocket クラスの代わりに、URLLoader クラスを使用します。

XMLSocket クラスのメソッドを使用するには、まず new XMLSocket コンストラクターを使用して XMLSocket オブジェクトを作成します。

ローカルファイルシステムのサンドボックス内の SWF ファイルはソケットを使用できません。

ターゲットホスト上のソケットポリシーファイルで、SWF ファイルがソケット接続できるホストと、その接続ができるポートを指定します。Flash Player の最近のリリースでは、ソケットポリシーファイルに関するセキュリティ要件が以前より厳密になっています。Flash Player のすべてのバージョンで、ソケットポリシーファイルを使用することをお勧めします。環境によっては、ソケットポリシーファイルの使用が必須となっています。このため、XMLSocket オブジェクトを使用している場合は、必要に応じてターゲットホストがソケットポリシーファイルを提供するようにしてください。

次の一覧は、Flash Player の各バージョンにおけるソケットポリシーファイルの要件をまとめたものです。

  • Flash Player 9.0.124.0 以降のバージョンでは、XMLSocket 接続にソケットポリシーファイルが必要です。つまり、接続しているポートには関係なく、ターゲットホスト上にソケットポリシーファイルが必要ということです。また、SWF ファイルを提供している同じホスト上のポートに接続している場合でも同様です。
  • Flash Player 9.0.115.0 以前のバージョンでは、1024 未満のポートに接続するか、SWF ファイルを提供しているホスト以外のホストに接続するときは、ターゲットホスト上にソケットポリシーファイルが必要です。
  • Flash Player 9.0.115.0 では、ソケットポリシーファイルが不要な場合でも、ターゲットホストがソケットポリシーファイルを提供していないときに Flash Debug Player を使うと警告が表示されます。

ただし、Adobe AIR では、アプリケーションセキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

次の例では、クラス XMLSocketExample を使用して、XMLSocket でデータを送信し、XMLSocket イベント時に情報をプリントします。ここでは以下の手順を実行します。
  1. XMLSocketExample コンストラクターが socket という名前の XMLSocket インスタンスを作成し、socket を後述の ConfigureListeners() に渡します。次に XMLSocket の connect() メソッドを呼び出します。この呼び出しには、ホスト名 "localhost" とポート番号 8080 を使用します。
  2. configureListeners()メソッドを呼び出して、サポートされる各 XMLSocket イベントのリスナーを追加します。
    • closeHandler()close イベントをリッスンします。このイベントはネットワーク接続が閉じられた後に送出されます。
    • connectHandler()connect イベントをリッスンします。このイベントはネットワーク接続が確立されたときに送出されます。
    • dataHandler()data イベントをリッスンします。このイベントは XMLSocket が新しいデータを受け取るたびに送出されます。
    • progressHandler()progress イベントをリッスンします。このイベントは send() が呼び出されたとき、送信中に送出されます。
    • securityErrorHandler()securityError イベントをリッスンします。このイベントは、ローカルでの再生に関するセキュリティを誤って設定して、または 1024 より小さいポートを使用して、XMLSocket にアクセスしようとしたときに送出されます。
    • ioErrorHandler()ioError イベントをリッスンします。このイベントはデータの送信または受信操作に失敗すると発生します。

注意:

  • 「ローカルでの再生に関するセキュリティ」を「ネットワークにのみアクセスする」に設定して SWF ファイルをコンパイルする必要があります。
  • このコード例が動作するには、ポート 8080 を使用して、ドメイン名上で実行しているサーバーが必要です。
  • Flash Player 9.0.124.0 以降のバージョンを実行しているときは、ドメインからポート 8080 へのソケット接続を許可するソケットポリシーファイルをサーバー上に置く必要があります。ソケットポリシーファイルの提供については、Flash Player デベロッパーセンターのトピックソケットポリシーファイルサーバーの設定を参照してください。

package { import flash.display.Sprite; import flash.events.*; import flash.net.XMLSocket; public class XMLSocketExample extends Sprite { private var hostName:String = "localhost"; private var port:uint = 8080; private var socket:XMLSocket; public function XMLSocketExample() { socket = new XMLSocket(); configureListeners(socket); if (hostName && port) { socket.connect(hostName, port); } } public function send(data:Object):void { socket.send(data); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CLOSE, closeHandler); dispatcher.addEventListener(Event.CONNECT, connectHandler); dispatcher.addEventListener(DataEvent.DATA, dataHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); } private function closeHandler(event:Event):void { trace("closeHandler: " + event); } private function connectHandler(event:Event):void { trace("connectHandler: " + event); } private function dataHandler(event:DataEvent):void { trace("dataHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } } }
flash.net.URLLoader.load()flash.net.URLLoadersecurityError XMLSocket.connect() メソッドの呼び出しによって、呼び出し元のセキュリティサンドボックスの外にあるサーバーや 1024 未満のポート番号に対して接続しようとしたときに送出されます。flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent XMLSocket.connect() メソッドの呼び出しによって、呼び出し元のセキュリティサンドボックスの外にあるサーバーや 1024 未満のポート番号に対して接続しようとしたときに送出されます。 XMLSocket.connect()ioError 入出力エラーが発生して送信または受信操作が失敗したときに送出されます。flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent 入出力エラーが発生して送信または受信操作が失敗したときに送出されます。 data 未処理のデータが送受信された後に送出されます。flash.events.DataEvent.DATAflash.events.DataEvent 未処理のデータが送受信された後に送出されます。 connect XMLSocket.connect() メソッドの呼び出しが成功したときに送出されます。flash.events.Event.CONNECTflash.events.Event XMLSocket.connect() メソッドの呼び出しが成功した後に送出されます。 close サーバーによりソケット接続が閉じられたときに送出されます。flash.events.Event.CLOSEflash.events.Event サーバーによりソケット接続が閉じられたときに送出されます。close イベントは、サーバーにより接続が閉じられたときのみ送出されます。XMLSocket.close() メソッドを呼び出しても送出されません。 XMLSocket 新しい XMLSocket オブジェクトを作成します。hostStringnullFQDN(完全修飾ドメイン名)、つまり 111.222.333.444 という形式の IP アドレスです。Flash Player 9.0.115.0 および AIR 1.0 以降では、rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f] などの IPv6 アドレスを指定できます。null を指定して、SWF ファイルが存在するホストサーバーに接続することもできます。呼び出し元の SWF ファイルが Web ブラウザー内で実行されている場合は、host が SWF ファイルと同じドメイン内に存在する必要があります。 portint0接続の確立に使用するターゲットホスト上の TCP ポート番号です。Flash Player 9.0.124.0 以降のバージョンでは、ターゲットホストは、SWF ファイルを提供するホストから指定のポートへのソケット接続を許可するように指定した、ソケットポリシーファイルを提供する必要があります。以前のバージョンの Flash Player では、1024 番未満のポートに接続するか、SWF ファイルを提供しているホスト以外のホストに接続するときのみ、ソケットポリシーファイルが必要です。 新しい XMLSocket オブジェクトを作成します。 パラメーターを指定しないと、初期状態では未接続のソケットが作成されます。パラメーターを指定すると、指定したホストおよびポートへの接続が試行されます。

注意:パラメーターを指定せずにコンストラクターフォームを使用し、さらにいずれかのイベントリスナーを追加し、connect メソッドを呼び出すことを強く推奨します(ホストおよびポートをパラメーターに指定する)。このシーケンスによって、すべてのイベントリスナーが正しく動作するようになります。

connect()
close XMLSocket オブジェクトで指定された接続を閉じます。 XMLSocket オブジェクトで指定された接続を閉じます。close イベントは、サーバーにより接続が閉じられたときのみ送出されます。close() メソッドを呼び出しても送出されません。 connect()connect 指定された TCP ポートを使用して指定されたインターネットホストへの接続を確立します。信頼されていないローカルファイルはインターネットへの接続を許可されません。このファイルを local-with-networking または trusted として分類し直すことで、この制限を回避します。 SecurityErrorSecurityError65535 より大きいソケットポートを指定することはできません。 SecurityErrorSecurityErrorhostStringFQDN(完全修飾ドメイン名)、つまり 111.222.333.444 という形式の IP アドレスです。null を指定して、SWF ファイルが存在するホストサーバーに接続することもできます。呼び出し元ファイルが Web ブラウザー内で実行されている SWF ファイルである場合は、host がこのファイルと同じドメイン内に存在する必要があります。 portint接続の確立に使用するターゲットホスト上の TCP ポート番号です。Flash Player 9.0.124.0 以降のバージョンでは、ターゲットホストは、SWF ファイルを提供するホストから指定のポートへのソケット接続を許可するように指定した、ソケットポリシーファイルを提供する必要があります。以前のバージョンの Flash Player では、1024 番未満のポートに接続するか、SWF ファイルを提供しているホスト以外のホストに接続するときのみ、ソケットポリシーファイルが必要です。 指定された TCP ポートを使用して指定されたインターネットホストへの接続を確立します。

nullhost パラメーターに対して指定した場合は、XMLSocket.connect() を呼び出すファイルが存在するホストに接続します。例えば、www.adobe.com から呼び出し元ファイルをダウンロードした場合は、host パラメーターに null を指定することは、www.adobe.com に接続することを意味します。

ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含む HTML ページに allowNetworking パラメーター(object タグおよび embed タグ)を設定します。

詳細については、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

flash.events.Event.CONNECTsecurityErrorflash.events:SecurityErrorEvent接続操作で、呼び出し側のセキュリティサンドボックスの外部のホスト、またはソケットポリシーファイルが必要なポートに接続しようとしました。ターゲットホスト上でソケットポリシーファイルを使用することで、両方の問題を回避します。 接続操作で、呼び出し側のセキュリティサンドボックスの外部のホスト、またはソケットポリシーファイルが必要なポートに接続しようとしました。dataflash.events:DataEvent未処理のデータを受信したときに送出されます。 未処理のデータを受信したときに送出されます。connectflash.events:Eventネットワーク接続が確立されたときに送出されます。 ネットワーク接続が確立されたときに送出されます。
send object パラメーターで指定された XML オブジェクトまたはデータをストリングに変換し、その後ろにゼロ(0)バイトを付加してサーバーに転送します。XMLSocket オブジェクトはサーバーに接続されません。 IOErrorflash.errors:IOErrorobjectサーバーに転送する XML オブジェクトまたは他のデータです。 object パラメーターで指定された XML オブジェクトまたはデータをストリングに変換し、その後ろにゼロ(0)バイトを付加してサーバーに転送します。object が XML オブジェクトである場合、ストリングは XML オブジェクトの XML テキスト表現です。送信操作は非同期です。つまり、転送処理はただちに終了しますが、データが転送されるのは、その後です。XMLSocket.send() メソッドは、データが正常に転送されたかどうかを示す値を返しません。

XMLSocket.connect() を使用して、XMLSocket オブジェクトをサーバーに接続していない場合、XMLSocket.send() 操作は失敗します。

connect()
connected この XMLSocket オブジェクトが現在、接続されているかどうかを示します。Boolean この XMLSocket オブジェクトが現在、接続されているかどうかを示します。connect イベントと ioError イベントに対して登録を行い、接続が成功したかどうかを調べることもできます。 connectioErrortimeout 接続までの待ち時間(ミリ秒数)を示します。int 接続までの待ち時間(ミリ秒数)を示します。

指定した時間内に接続できなかったときは、接続が失敗することになります。デフォルト値は 20,000 (20 秒) です。

IPVersion IPVersion クラスは、様々な IP アドレスのファミリーを表す定数を定義します。Object IPVersion クラスは、様々な IP アドレスのファミリーを表す定数を定義します。 IPV4 インターネットプロトコルバージョン 4 (IPv4)アドレス。IPv4String インターネットプロトコルバージョン 4 (IPv4)アドレス。

IPv4 アドレスは、ActionScript ではドット区切りの 10 進数のストリングとして表されます(例:"192.0.2.0")。

IPV6 インターネットプロトコルバージョン 6 (IPv6)アドレス。IPv6String インターネットプロトコルバージョン 6 (IPv6)アドレス。

IPv6 アドレスは、ActionScript では角括弧で囲まれたコロン区切りの 16 進数のストリングとして表されます(例:"[2001:db8:ccc3:ffff:0:444d:555e:666f]")。

Socket Socket クラスは、コードでバイナリデータを送受信するための Transport Control Protocol (TCP)ソケット接続を確立できるようにします。flash.utils:IDataInputflash.utils:IDataOutputflash.events:EventDispatcher Socket クラスは、コードでバイナリデータを送受信するための Transport Control Protocol (TCP)ソケット接続を確立できるようにします。

Socket クラスは、バイナリプロトコルを使用するサーバーとの通信に役立ちます。

Socket クラスのメソッドを使用するには、まず new Socket コンストラクターを使用して Socket オブジェクトを作成する必要があります。

ソケットはデータの送信と受信を非同期に行います。

オペレーティングシステムによっては、flush() は実行フレーム間で自動的に呼び出されますが、Windows などのオペレーティングシステムでは、flush() を明示的に呼び出さない限り、データは送信されません。アプリケーションが確実にすべてのオペレーティングシステムで動作するようにするには、各メッセージ(または関連するデータのグループ)をソケットに書き出した後で、flush() メソッドを呼び出すことをお勧めします。

Adobe AIR では、Socket オブジェクトは、監視中の ServerSocket が外部プロセスからの接続を受信したときにも作成されます。この Socket オブジェクトは、ServerSocketConnectEvent で送出された接続を表します。アプリケーションには、この Socket オブジェクトへの参照を維持する役割があります。維持を行わない場合、この Socket オブジェクトはガベージコレクションの対象となり、警告を表示せずにランタイムによって破棄される可能性があります。

local-with-filesystem セキュリティサンドボックスで実行されている SWF コンテンツはソケットを使用できません。

ターゲットホスト上のソケットポリシーファイルで、SWF ファイルがソケット接続できるホストと、その接続ができるポートを指定します。Flash Player の最近のリリースでは、ソケットポリシーファイルに関するセキュリティ要件が以前より厳密になっています。Flash Player のすべてのバージョンで、ソケットポリシーファイルを使用することをお勧めします。環境によっては、ソケットポリシーファイルの使用が必須となっています。このため、Socket オブジェクトを使用している場合は、必要に応じてターゲットホストがソケットポリシーファイルを提供するようにしてください。

次の一覧は、Flash Player の各バージョンにおけるソケットポリシーファイルの要件をまとめたものです。

  • Flash Player 9.0.124.0 以降のバージョンでは、Socket 接続にソケットポリシーファイルが必要です。つまり、接続しているポートには関係なく、ターゲットホスト上にソケットポリシーファイルが必要ということです。また、SWF ファイルを提供している同じホスト上のポートに接続している場合でも同様です。
  • Flash Player 9.0.115.0 以前のバージョンでは、1024 未満のポートに接続するか、SWF ファイルを提供しているホスト以外のホストに接続するときは、ターゲットホスト上にソケットポリシーファイルが必要です。
  • Flash Player 9.0.115.0 では、ソケットポリシーファイルが不要な場合でも、ターゲットホストがソケットポリシーファイルを提供していないときに Flash Debug Player を使うと警告が表示されます。
  • AIR では、アプリケーションセキュリティサンドボックス内でコンテンツを実行するためにソケットポリシーファイルは必要ありません。AIR アプリケーションセキュリティサンドボックス外で実行されるコンテンツによって確立されるソケット接続には、ソケットポリシーファイルが必要です。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

次の例では、ソケットに対して読み取りおよび書き込みを行い、socket イベント中に転送される情報を出力します。この例のハイライトは、次のとおりです。
  1. コンストラクターが CustomSocket インスタンスの socket を作成し、ホスト名 localhost とポート 80 をパラメーターとして渡します。CustomSocket は Socket を継承するので、super() を呼び出すと Socket のコンストラクターが呼び出されます。
  2. 次に configureListeners() メソッドが呼び出され、このメソッドにより Socket イベントのリスナーが追加されます。
  3. 最後に、ソケット connect() メソッドがホスト名 localhost、ポート番号 80 で呼び出されます。

注意:この例を実行するには、SWF が存在するドメインと同じドメインで実行され、ポート 80 でリッスンするサーバー(この例では localhost)が必要です。

package { import flash.display.Sprite; public class SocketExample extends Sprite { public function SocketExample() { var socket:CustomSocket = new CustomSocket("localhost", 80); } } } import flash.errors.*; import flash.events.*; import flash.net.Socket; class CustomSocket extends Socket { private var response:String; public function CustomSocket(host:String = null, port:uint = 0) { super(); configureListeners(); if (host && port) { super.connect(host, port); } } private function configureListeners():void { addEventListener(Event.CLOSE, closeHandler); addEventListener(Event.CONNECT, connectHandler); addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); } private function writeln(str:String):void { str += "\n"; try { writeUTFBytes(str); } catch(e:IOError) { trace(e); } } private function sendRequest():void { trace("sendRequest"); response = ""; writeln("GET /"); flush(); } private function readResponse():void { var str:String = readUTFBytes(bytesAvailable); response += str; } private function closeHandler(event:Event):void { trace("closeHandler: " + event); trace(response.toString()); } private function connectHandler(event:Event):void { trace("connectHandler: " + event); sendRequest(); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function socketDataHandler(event:ProgressEvent):void { trace("socketDataHandler: " + event); readResponse(); } }
ServerSocketDatagramSocketsecurityError Socket.connect() への呼び出しが、呼び出し元のセキュリティサンドボックスによって禁止されているサーバーまたは 1024 より下位のポートに接続しようとしたときに、そのような接続を許可するポリシーファイルが存在しない場合に送出されます。flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEventセキュリティエラーが発生したときに送出されます。 Socket.connect() への呼び出しが、呼び出し元のセキュリティサンドボックスによって禁止されているサーバーまたは 1024 より下位のポートに接続しようとしたときに、そのような接続を許可するポリシーファイルが存在しない場合に送出されます。

注意: AIR アプリケーションでは、アプリケーションセキュリティサンドボックスで実行されるコンテンツはソケットポリシーファイルなしでサーバーおよびポート番号に接続できません。

Socket.connect()
socketData ソケットがデータを受信したときに送出されます。flash.events.ProgressEvent.SOCKET_DATAflash.events.ProgressEvent ソケットがデータを受信したときに送出されます。

ソケットが受信するデータは、読み込まれるまでソケットに残ります。このイベントのハンドラーで使用できるすべてのデータを読み込む必要はありません。

socketData タイプのイベントでは、ProgressEvent.bytesTotal プロパティは使用されません。

ioError 入出力エラーが発生して送信またはロード操作が失敗したときに送出されます。flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent 入出力エラーが発生して送信またはロード操作が失敗したときに送出されます。 connect ネットワーク接続が確立されたときに送出されます。flash.events.Event.CONNECTflash.events.Event ネットワーク接続が確立されたときに送出されます。 close サーバーによりソケット接続が閉じられたときに送出されます。flash.events.Event.CLOSEflash.events.Event サーバーによりソケット接続が閉じられたときに送出されます。

close イベントは、サーバーにより接続が閉じられたときのみ送出されます。Socket.close() メソッドを呼び出しても送出されません。

Socket Socket オブジェクトを新規作成します。このエラーは、SWF コンテンツ内で次の理由で発生します。
  • Local-with-filesystem ファイルはインターネットと通信できません。この問題は、この SWF ファイルを local-with-networking または trusted として分類し直すことで回避できます。 この制限は、アプリケーションセキュリティサンドボックス内の AIR アプリケーションコンテンツには適用されません。
  • 65535 より大きいソケットポートを指定することはできません。
SecurityErrorSecurityError
hostStringnullFQDN(完全修飾ドメイン名)、つまり IP アドレスです。IPv4 アドレスは、192.0.2.0 のようにドット区切りの 10 進数表記で指定されます。 Flash Player 9.0.115.0 および AIR 1.0 以降では、2001:db8:ccc3:ffff:0:444d:555e::666f のようにコロン区切りの 16 進数表記を使用して IPv6 アドレスを指定できます。null を指定して、SWF ファイルが存在するホストサーバーに接続することもできます。呼び出し元の SWF ファイルが Web ブラウザー内で実行されている場合は、host が SWF ファイルが作成された元のドメイン内に存在する必要があります。 portint0接続の確立に使用するターゲットホスト上の TCP ポート番号です。Flash Player 9.0.124.0 以降のバージョンでは、ターゲットホストは、SWF ファイルを提供するホストから指定のポートへのソケット接続を許可するように指定した、ソケットポリシーファイルを提供する必要があります。以前のバージョンの Flash Player では、1024 番未満のポートに接続するか、SWF ファイルを提供しているホスト以外のホストに接続するときのみ、ソケットポリシーファイルが必要です。
Socket オブジェクトを新規作成します。パラメーターを指定しないと、初期状態では未接続のソケットが作成されます。パラメーターを指定すると、指定したホストおよびポートへの接続が試行されます。

注意:パラメーターを指定せずにコンストラクターフォームを使用し、さらにいずれかのイベントリスナーを追加し、connect メソッドを呼び出すことを強く推奨します(ホストおよびポートをパラメーターに指定する)。このシーケンスによって、すべてのイベントリスナーが正しく動作するようになります。

connectflash.events:Eventネットワーク接続が確立されたときに送出されます。 ネットワーク接続が確立されたときに送出されます。ioErrorflash.events:IOErrorEvent入出力エラーが発生して接続が失敗すると送信されます。 入出力エラーが発生して接続が失敗すると送信されます。securityErrorflash.events:SecurityErrorEvent Socket.connect() の呼び出しによって、ソケットポリシーファイルを提供しないサーバーや、特定のポートに対して呼び出し元のホストアクセスを許可しないポリシーファイルを持つサーバーに接続しようとしたときに送出されます。ポリシーファイルについて詳しくは、『ActionScript 3.0 開発ガイド』の「Web サイトのコントロール(ポリシーファイル)」および Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。 このエラーは SWF コンテンツで発生します。Socket.connect() の呼び出しによって、ソケットポリシーファイルを提供しないサーバーや、特定のポートに対して呼び出し元のホストアクセスを許可しないポリシーファイルを持つサーバーに接続しようとしたときに送出されます。
close ソケットを閉じます。ソケットを閉じることができないか、またはソケットが開いていません。. IOErrorflash.errors:IOError ソケットを閉じます。close() メソッドが呼び出された後は、データの読み書きはできません。

close イベントは、サーバーにより接続が閉じられたときのみ送出されます。close() メソッドを呼び出しても送出されません。

Socket オブジェクトで connect() メソッドをもう一度呼び出すことで、その Socket オブジェクトを再使用できます。

connect 指定されたホストおよびポートにソケットを接続します。ホストが指定されていないので、接続に失敗しました。 IOErrorflash.errors:IOErrorこのエラーは、SWF コンテンツ内で次の理由で発生します。
  • 信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。この制限は、このファイルを local-with-networking または trusted として分類し直すことで回避できます。
  • 65535 より大きいソケットポートを指定することはできません。
  • SWF コンテンツがある HTML ページでは、allowNetworking パラメーター(object タグおよび embed タグ)は "none" に設定します。
SecurityErrorSecurityError
hostString接続するホストのホスト名または IP アドレスです。ホストを指定しないと、接続するホストは、呼び出す ファイルが存在するホストになります。ホストを指定しない場合は、イベントリスナーを使用して接続が成功したかどうかを判定します。 portint接続先のポート番号です。
指定されたホストおよびポートにソケットを接続します。

直後に接続が失敗した場合、イベントが送出されるか例外がスローされます。ホストが指定されている場合はエラーイベントが送出され、ホストが指定されていない場合は例外がスローされます。接続が成功した場合は、接続のステータスがイベントにより報告されます。ソケットが既に接続済みの場合、最初に既存の接続が閉じられます。

connectflash.events:Eventネットワーク接続が確立されたときに送出されます。 ネットワーク接続が確立されたときに送出されます。ioErrorflash.events:IOErrorEventホストが指定されていて、入出力エラーが発生して接続が失敗した場合に送出されます。 ホストが指定されていて、入出力エラーが発生して接続が失敗した場合に送出されます。securityErrorflash.events:SecurityErrorEventSocket.connect() の呼び出しによって、ソケットポリシーファイルを提供しないサーバーや、特定のポートに対して呼び出し元のホストアクセスを許可しないポリシーファイルを持つサーバーに接続しようとしたときに送出されます。ポリシーファイルについて詳しくは、『ActionScript 3.0 開発ガイド』の「Web サイトのコントロール(ポリシーファイル)」および Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。 Socket.connect() の呼び出しによって、ソケットポリシーファイルを提供しないサーバーや、特定のポートに対して呼び出し元のホストアクセスを許可しないポリシーファイルを持つサーバーに接続しようとしたときに送出されます。
flush ソケットの出力バッファーに蓄積されたデータをフラッシュします。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOError ソケットの出力バッファーに蓄積されたデータをフラッシュします。

オペレーティングシステムによっては、flush() は実行フレーム間で自動的に呼び出されますが、Windows などのオペレーティングシステムでは、flush() を明示的に呼び出さない限り、データは送信されません。アプリケーションが確実にすべてのオペレーティングシステムで動作するようにするには、各メッセージ(または関連するデータのグループ)をソケットに書き出した後で、flush() メソッドを呼び出すことをお勧めします。

readBoolean ソケットからブール値を読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOError読み取られたバイトがゼロ以外の場合に値は true になり、それ以外の場合は false になります。 Boolean ソケットからブール値を読み取ります。1 バイトを読み取った後、メソッドはバイトがゼロ以外の場合は true、それ以外の場合は false を返します。 readByte ソケットから符号付きバイトを読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOError値は -128 ~ 127 です。 int ソケットから符号付きバイトを読み取ります。 readBytes ソケットから、length パラメーターで指定したデータバイト数を読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorbytesflash.utils:ByteArrayデータの読み込み先の ByteArray オブジェクトです。 offsetuint0データの読み取りを開始するバイト配列のオフセットです。 lengthuint0読み取るバイト数です。デフォルト値の 0 に設定すると、すべてのデータが読み取られます。 ソケットから、length パラメーターで指定したデータバイト数を読み取ります。このバイトは、指定したバイト配列の、offset で指定された位置以降に読み込まれます。 readDouble ソケットから IEEE 754 倍精度浮動小数点数を読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorIEEE 754 倍精度浮動小数点数です。 Number ソケットから IEEE 754 倍精度浮動小数点数を読み取ります。 readFloat ソケットから IEEE 754 単精度浮動小数点数を読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorIEEE 754 単精度浮動小数点数です。 Number ソケットから IEEE 754 単精度浮動小数点数を読み取ります。 readInt ソケットから符号付き 32 ビット整数を読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOError値は -2147483648 ~ 2147483647 です。 int ソケットから符号付き 32 ビット整数を読み取ります。 readMultiByte 指定した文字セットを使用して、バイトストリームからマルチバイトストリングを読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorUTF-8 エンコードされたストリングです。 Stringlengthuintバイトストリームから読み取るバイト数です。 charSetStringバイトの解釈に使用する文字セットを表すストリングです。文字セットのストリングには、"shift_jis""CN-GB"、および "iso-8859-1" があります。完全な一覧については、「サポートされている文字セット」を参照してください。

注意:charSet パラメーターの値が現在のシステムによって認識されない場合、アプリケーションはシステムのデフォルトコードページを文字セットとして使用します。例えば、charSet パラメーターの指定で、myTest.readMultiByte(22, "iso-8859-01") のように、011 の代わりに使用した場合、その文字セットパラメーターは開発マシンでは認識されるかもしれませんが、別のマシンでは認識されない可能性があります。もう一方のマシンでは、アプリケーションがシステムのデフォルトコードページを使用することになります。

指定した文字セットを使用して、バイトストリームからマルチバイトストリングを読み取ります。
readObject ソケットから AMF 直列化形式でエンコードされたオブジェクトを読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOError非直列化されたオブジェクトです。 ソケットから AMF 直列化形式でエンコードされたオブジェクトを読み取ります。 ObjectEncodingflash.net.registerClassAlias()readShort ソケットから符号付き 16 ビット整数を読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOError値は -32768 ~ 32767 です。 int ソケットから符号付き 16 ビット整数を読み取ります。 readUTFBytes ソケットから length パラメーターで指定した UTF-8 バイト数を読み取り、ストリングを返します。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorUTF-8 ストリング。 Stringlengthuint読み取るバイト数です。 ソケットから length パラメーターで指定した UTF-8 バイト数を読み取り、ストリングを返します。 readUTF ソケットから UTF-8 ストリングを読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorUTF-8 ストリング。 String ソケットから UTF-8 ストリングを読み取ります。このストリングには、バイト単位の長さを示す符号なし short 型整数が前に付いているものと見なされます。 readUnsignedByte ソケットから符号なしバイトを読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOError値は 0 ~ 255 です。 uint ソケットから符号なしバイトを読み取ります。 readUnsignedInt ソケットから符号なし 32 ビット整数を読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOError値は 0 ~ 4294967295 です。 uint ソケットから符号なし 32 ビット整数を読み取ります。 readUnsignedShort ソケットから符号なし 16 ビット整数を読み取ります。読み取り可能なデータが不足しています。 EOFErrorflash.errors:EOFErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOError値は 0 ~ 65535 です。 uint ソケットから符号なし 16 ビット整数を読み取ります。 writeBoolean ソケットにブール値を書き込みます。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorvalueBooleanソケットに書き込まれる値は、1(true の場合)または 0(false の場合)です。 ソケットにブール値を書き込みます。このメソッドは 1 バイトを書き込みます。1(true の場合)または 0(false の場合)のいずれかの値が使用されます。 flush()writeByte ソケットに 1 バイトを書き込みます。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorvalueintソケットに書き込む値です。値の下位 8 ビットが使用されます。上位 24 ビットは無視されます。 ソケットに 1 バイトを書き込みます。 flush()writeBytes 指定したバイト配列のバイトのシーケンスを書き込みます。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErroroffsetbytes で指定された ByteArray の長さよりも長い場合、または offsetlength を加えた値によって記述されるように指定されたデータ量が、利用可能なデータを超過した場合に発生します。 RangeErrorRangeErrorbytesflash.utils:ByteArrayデータの書き込み元の ByteArray オブジェクトです。 offsetuint0データの書き込みを開始する、bytes ByteArray オブジェクトへのゼロから始まるオフセットです。 lengthuint0書き込むバイト数です。デフォルト値の 0 に設定すると、offset パラメーターで指定した値以降にバッファー全体が書き込まれます。 指定したバイト配列のバイトのシーケンスを書き込みます。書き込み操作は、offset で指定された位置から開始されます。

length パラメーターを省略するとデフォルトの長さ 0 が使用され、offset の位置からバッファー全体が書き込まれます。

offset パラメーターを省略した場合も、バッファー全体が書き込まれます。

flush()
writeDouble ソケットに IEEE 754 倍精度浮動小数点数を書き込みます。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorvalueNumberソケットに書き込む値です。 ソケットに IEEE 754 倍精度浮動小数点数を書き込みます。 flush()writeFloat ソケットに IEEE 754 単精度浮動小数点数を書き込みます。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorvalueNumberソケットに書き込む値です。 ソケットに IEEE 754 単精度浮動小数点数を書き込みます。 flush()writeInt ソケットに 32 ビット符号付き整数を書き込みます。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorvalueintソケットに書き込む値です。 ソケットに 32 ビット符号付き整数を書き込みます。 flush()writeMultiByte 指定した文字セットを使用して、バイトストリームからマルチバイトストリングを書き込みます。valueString書き込まれるストリング値です。 charSetStringバイトの解釈に使用する文字セットを表すストリングです。文字セットのストリングには、"shift_jis""CN-GB"、および "iso-8859-1" があります。完全な一覧については、「サポートされている文字セット」を参照してください。 指定した文字セットを使用して、バイトストリームからマルチバイトストリングを書き込みます。 flush()writeObject ソケットに AMF 直列化形式でオブジェクトを書き込みます。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorobject直列化されるオブジェクトです。 ソケットに AMF 直列化形式でオブジェクトを書き込みます。 flush()ObjectEncodingflash.net.registerClassAlias()writeShort ソケットに 16 ビット整数を書き込みます。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorvalueintソケットに書き込む値です。 ソケットに 16 ビット整数を書き込みます。次のようにバイトが書き込まれます。
(v >> 8) & 0xff v & 0xff

パラメーターの下位 16 ビットが使用されます。上位 16 ビットは無視されます。

flush()
writeUTFBytes ソケットに UTF-8 ストリングを書き込みます。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorvalueStringソケットに書き込むストリングです。 ソケットに UTF-8 ストリングを書き込みます。 flush()writeUTF 指定された UTF-8 ストリングの長さ(バイト単位)を示す 16 ビット符号なし整数をソケットに書き込み、その後にストリング自体を書き込みます。長さが 65535 を超えています。 RangeErrorRangeErrorソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorvalueStringソケットに書き込むストリングです。 指定された UTF-8 ストリングの長さ(バイト単位)を示す 16 ビット符号なし整数をソケットに書き込み、その後にストリング自体を書き込みます。

ストリングを書き込む前に、メソッドによってストリングのすべての文字を表すのに必要なバイト数が計算されます。

flush()
writeUnsignedInt ソケットに 32 ビット符号なし整数を書き込みます。ソケットで I/O エラーが発生したか、ソケットが開いていません。 IOErrorflash.errors:IOErrorvalueuintソケットに書き込む値です。 ソケットに 32 ビット符号なし整数を書き込みます。 flush()bytesAvailable 入力バッファーで読み取ることができるデータのバイト数です。uint 入力バッファーで読み取ることができるデータのバイト数です。

コードでは、bytesAvailable にアクセスして入力バッファーの空き容量を確認してから、read メソッドの 1 つを使用してデータを読み取る必要があります。

connected この Socket オブジェクトが現在、接続されているかどうかを示します。Boolean この Socket オブジェクトが現在、接続されているかどうかを示します。このプロパティの呼び出しは、現在ソケットが接続されている場合に値 true を、それ以外の場合は false を返します。 endian データのバイト順を示します。StringEndian.BIG_ENDIAN データのバイト順序を示します。指定できる値は flash.utils.Endian クラスの定数で、Endian.BIG_ENDIAN または Endian.LITTLE_ENDIAN です。 flash.utils.EndianlocalAddress ローカルマシン上でこのソケットがバインドされている IP アドレス。String ローカルマシン上でこのソケットがバインドされている IP アドレス。 bind()localPort ローカルマシン上でこのソケットがバインドされているポート。int ローカルマシン上でこのソケットがバインドされているポート。 bind()objectEncoding オブジェクトの書き込みまたは読み取り時に使用される AMF のバージョンを制御します。uint オブジェクトの書き込みまたは読み取り時に使用される AMF のバージョンを制御します。 ObjectEncoding クラスreadObject()writeObject()remoteAddress このソケットが接続されているリモートマシンの IP アドレス。 String このソケットが接続されているリモートマシンの IP アドレス。

このプロパティを使用して、ServerSocket オブジェクトによって ServerSocketConnectEvent 内に送出されたクライアントソケットの IP アドレスを特定します。必要な場合は、DNSResolver クラスを使用して、IP アドレスをドメイン名に変換します。

connect()ServerSocketServerSocketConnectEventDNSResolver
remotePort このソケットが接続されているリモートマシンのポート。 int このソケットが接続されているリモートマシンのポート。

このプロパティを使用して、ServerSocket オブジェクトによって ServerSocketConnectEvent 内に送出されたクライアントソケットのポート番号を特定します。

connect()ServerSocketServerSocketConnectEvent
timeout 接続までの待ち時間(ミリ秒数)を示します。uint 接続までの待ち時間(ミリ秒数)を示します。

指定した時間内に接続できなかったときは、接続が失敗することになります。デフォルト値は 20,000 (20 秒) です。

ObjectEncoding ObjectEncoding クラスを使用すると、オブジェクトを直列化するクラス(FileStream、NetStream、NetConnection、SharedObject、ByteArray など)で直列化の設定を定義する際に、以前のバージョンの ActionScript を使用できます。Object ObjectEncoding クラスを使用すると、オブジェクトを直列化するクラス(FileStream、NetStream、NetConnection、SharedObject、ByteArray など)で直列化の設定を定義する際に、以前のバージョンの ActionScript を使用できます。

オブジェクトエンコーディングは、AMF(Action Message Format)によるオブジェクトの表現方法を制御します。Flash Player は AMF を使用することで、アプリケーションとリモートサーバーとの間で効率的に通信を行えるようにします。AMF では、リモートプロシージャコールはコンパクトなバイナリ表現にエンコードされます。このバイナリ表現は、HTTP/HTTPS プロトコルまたは、Flash Media Server が使用する RTMP/RTMPS プロトコルで転送可能です。オブジェクトとデータ値は、このバイナリ形式内に直列化されます。これは通常、XML などの他の表現よりもコンパクトです。

Adobe AIR および Flash Player 9 では、AMF3 および AMF0 の 2 つの異なる形式で直列化を実行できます。 AMF3 はデフォルトの直列化形式で、ActionScript 3.0 で使用されます。ActionScript 1.0 および 2.0 で使用される AMF0 と比べて様々な利点があります。 AMF3 では、ネットワーク経由でのデータの送信が AMF0 より効率化されています。 AMF3 は、int オブジェクトと uint オブジェクトの整数としての送信と、ByteArray、XML、IExternalizable などの、ActionScript 3.0 でのみ使用できるデータ型をサポートしています。AMF3 は、ActionScript 3.0 で、Flex 2 などの AMF3 エンコードを使用するサーバーを使用している場合にのみ使用できます。

ByteArray、FileStream、NetConnection、NetStream、SharedObject、Socket、URLStream の各クラスには、objectEncoding プロパティが含まれます。このプロパティには ObjectEncoding クラスから定数が割り当てられます。 objectEncoding プロパティの動作は、オブジェクトによって異なります。各クラスの objectEncoding プロパティの説明に、この動作についての詳細な説明があります。

AMF0 オブジェクトが ActionScript 1.0 および 2.0 の Action Message Format 形式を使用して直列化されることを指定します。0uint オブジェクトが ActionScript 1.0 および 2.0 の Action Message Format 形式を使用して直列化されることを指定します。 AMF3 オブジェクトが ActionScript 3.0 の Action Message Format 形式を使用して直列化されることを指定します。3uint オブジェクトが ActionScript 3.0 の Action Message Format 形式を使用して直列化されることを指定します。 DEFAULT 現在のランタイムにデフォルト(最新)の形式を指定します(Flash Player または AIR)。3uint 現在のランタイムにデフォルト(最新)の形式を指定します(Flash Player または AIR)。オブジェクトエンコーディング制御は Flash Player 9 以降および Adobe AIR でのみ使用できるので、使用される最も古い形式は ActionScript 3.0 対応の Action Message Format 形式ということになります。

例えば、オブジェクトの objectEncoding プロパティが ObjectEncoding.DEFAULT に設定されている場合は、AMF3 エンコーディングが使用されます。将来、Flash Player または Adobe AIR の後のバージョンで新しい AMF バージョンが導入され、コンテンツを再パブリッシュすると、アプリケーションはその新しい AMF バージョンを使用します。この定数は、以前のバージョンの Flash Player との相互運用性について特に注意する必要がない場合に限り使用できます。

dynamicPropertyWriter 動的オブジェクトの動的プロパティの直列化をさらに細かく制御できます。flash.net:IDynamicPropertyWriter 動的オブジェクトの動的プロパティの直列化をさらに細かく制御できます。このプロパティがデフォルト値の null に設定されている場合、動的プロパティはネイティブコードを使用して直列化されます。これにより、値が関数である動的プロパティを除くすべての動的プロパティが書き込まれます。

この値は、ダイナミックオブジェクト(ダイナミッククラス内で宣言したオブジェクト)のプロパティに対して、または new 演算子を使用して宣言したオブジェクトに対してのみ、呼び出されます。

このプロパティを使用して、動的オブジェクトのプロパティの直列化からの除外、動的オブジェクトのプロパティへの値の書き込み、または新しいプロパティの作成を実行できます。これらの操作を実行するには、IDynamicPropertyWriter インターフェイスを実装するオブジェクトにこのプロパティを設定します。詳細については、IDynamicPropertyWriter インターフェイスを参照してください。

IDynamicPropertyWriter
NetStreamAppendBytesAction NetStreamAppendBytesAction クラスは、NetStream.appendBytesAction() メソッドに渡すことができる定数の列挙です。Object NetStreamAppendBytesAction クラスは、NetStream.appendBytesAction() メソッドに渡すことができる定数の列挙です。

定数のうち 2 つは、タイムスケールの不連続性を示します。すべての FLV タグに、タイムスケール内での位置を示すタイムスタンプが含まれます。タイムスタンプを使用して、ビデオ、オーディオおよびスクリプトデータの再生を同期させます。同じ種類(ビデオ、オーディオ、スクリプトデータ)の FLV タグのタイムスタンプは、FLV の進行と共に減少しません。

flash.net.NetStream.appendBytesAction()flash.net.NetStream.appendBytes()END_SEQUENCE メディアストリームデータが完全であること示します。endSequenceString メディアストリームデータが完全であること示します。H.264 などの一部のコーデックでは、バイトパーサーは、バッファーがある程度埋まるのを待ってから再生を開始します。バイトパーサーに再生を直ちに開始するよう指示するには、END_SEQUENCE を渡します。 RESET_BEGIN タイムスケールの不連続性を示します。resetBeginString タイムスケールの不連続性を示します。FIFO(不完全な FLV タグで構成)をフラッシュし、タイムスケールをリセットして、付加された次のメッセージのタイムスタンプから開始します。appendBytes() への次の呼び出しで、バイトパーサーはファイルヘッダーを予期し、ファイルの先頭から開始します。 RESET_SEEK タイムスケールの不連続性を示します。resetSeekString タイムスケールの不連続性を示します。FIFO(不完全な FLV タグで構成)をフラッシュし、タイムスケールをリセットして、付加された次のメッセージのタイムスタンプから開始します。appendBytes() への次の呼び出しで、バイトパーサーは、同じ FLV の位置のシークをユーザーが完了したかのように、タグ境界上の FLV タグの先頭を予期します。
NetGroupReplicationStrategy NetGroupReplicationStrategy クラスは、NetGroup クラスの replicationStrategy プロパティの設定で使用される定数値の列挙です。NetGroup クラスの replicationStrategy プロパティの設定で使用される定数値の列挙です。 Object NetGroupReplicationStrategy クラスは、NetGroup クラスの replicationStrategy プロパティの設定で使用される定数値の列挙です。 flash.net.NetGroup.addWantObjects()flash.net.NetGroup.replicationStrategyLOWEST_FIRST 要求を満たすためにネイバーからオブジェクトを取得するときに、最も低いインデックス番号のオブジェクトが最初に要求されるように指定します。lowestFirstString 要求を満たすためにネイバーからオブジェクトを取得するときに、最も低いインデックス番号のオブジェクトが最初に要求されるように指定します。 flash.net.NetGroup.addWantObjects()RAREST_FIRST 要求を満たすためにネイバーからオブジェクトを取得するときに、すべてのネイバーのうち最も複製の少ないオブジェクトが最初に要求されるように指定します。rarestFirstString 要求を満たすためにネイバーからオブジェクトを取得するときに、すべてのネイバーのうち最も複製の少ないオブジェクトが最初に要求されるように指定します。 NetGroup.addWantObjects()URLLoader URLLoader クラスは、指定した URL からテキスト、バイナリデータ、または URL エンコード形式の変数をダウンロードする際に使用します。flash.events:EventDispatcher URLLoader クラスは、指定した URL からテキスト、バイナリデータ、または URL エンコード形式の変数をダウンロードする際に使用します。動的なデータ駆動アプリケーションで使用するテキストファイル、XML、その他の情報をダウンロードする場合に便利です。

URLLoader オブジェクトは、アプリケーションのコードでデータを使用できるように、事前にすべてのデータを URL からダウンロードします。 URLLoader オブジェクトは、ダウンロードの進捗に関する通知を送信します。この通知は、送出済みのイベントと、bytesLoaded プロパティおよび bytesTotal プロパティで監視できます。

FLV のように非常に大きなビデオファイルをロードする場合、メモリ不足のエラーが起こることがあります。

Flash Player、およびアプリケーションセキュリティサンドボックス以外のセキュリティサンドボックス内の AIR アプリケーションコンテンツでこのクラスを使用するときは、次のセキュリティモデルを考慮してください。

  • ローカルファイルシステムのサンドボックスの SWF ファイルは、ネットワーク上のサンドボックス内のリソースからデータを読み込んだり、リソースにデータを書き込んだりしないことがあります。
  • デフォルトで、呼び出し元の SWF ファイルおよびロードする URL は同じドメインに置かれている必要があります。例えば、www.adobe.com に置かれている SWF ファイルは www.adobe.com に置かれているソースからのみデータをロードできます。 異なるドメインからデータをロードするには、データをホストするサーバーに URL ポリシーファイルを配置します。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

次の例では、ローカルテキストファイルで検出されたデータをロードして表示します。また、イベント処理情報も出力します。

注意:この例を実行するには、urlLoaderExample.txt ファイルを SWF ファイルと同じディレクトリに配置します。このファイルには、次のテキスト行のみが含まれています。answer=42&question=unknown

コード例では、次の処理が実行されます。

  1. コンストラクター関数が loader という URLLoader インスタンスと、ロードされるファイルの場所と名前を含む request という URLRequest インスタンスを作成します。
  2. loader オブジェクトが configureListeners() メソッドに渡されます。このメソッドは、サポートされる各 URLLoader イベントのリスナーを追加します。
  3. 次に request オブジェクトが、テキストファイルをロードする loader.load() に渡されます。
  4. URLLoader によるテキストファイルのロードが終了すると、Event.COMPLETE event イベントが発生し、completeHandler() メソッドがトリガーされます。completeHandler() メソッドはファイルからロードされたテキストから URLVariables オブジェクトを作成します。URLVariables オブジェクトは、URL エンコードされた名前と値のペアを ActionScript プロパティに変換し、ロードされたデータを操作しやすくします。
package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLLoaderExample extends Sprite { public function URLLoaderExample() { var loader:URLLoader = new URLLoader(); configureListeners(loader); var request:URLRequest = new URLRequest("urlLoaderExample.txt"); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); var vars:URLVariables = new URLVariables(loader.data); trace("The answer is " + vars.answer); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
URLRequestURLVariablesURLStreamhttpResponseStatus load() メソッドを呼び出し、HTTP を使用してデータにアクセスを試み、Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUSflash.events.HTTPStatusEvent load() メソッドを呼び出し、HTTP を使用してデータにアクセスを試み、Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。 load()httpStatus URLLoader.load() が HTTP 経由でデータにアクセスしようとすると送出されます。flash.events.HTTPStatusEvent.HTTP_STATUSflash.events.HTTPStatusEvent URLLoader.load() が HTTP 経由でデータにアクセスしようとすると送出されます。Flash Player で実行されているコンテンツでは、このイベントは、現在の Flash Player 環境が要求のステータスコードを検出して返すことができる場合にのみ送出されます (一部のブラウザー環境ではこの情報を提供できません)。httpStatus イベントが送出される場合、このイベントは、complete イベントまたは error イベントの前に、これらのイベントとは別に送信されます。 URLLoader.load()securityError URLLoader.load() の呼び出しによってセキュリティサンドボックスの外部にあるサーバーからデータを読み込もうとすると送出されます。flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent URLLoader.load() の呼び出しによってセキュリティサンドボックスの外部にあるサーバーからデータを読み込もうとすると送出されます。また、URLLoader.load() の呼び出しによって SWZ ファイルをロードしようとした場合に、証明書が無効であるか、ダイジェストのストリングがコンポーネントと一致しないときに送出されます。 URLLoader.load()ioError URLLoader.load() の呼び出し時に致命的なエラーが発生してダウンロードが終了した場合に送出されます。flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent URLLoader.load() の呼び出し時に致命的なエラーが発生してダウンロードが終了した場合に送出されます。 URLLoader.load()progress ダウンロード処理を実行中にデータを受信したときに送出されます。flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent ダウンロード処理を実行中にデータを受信したときに送出されます。

URLLoader オブジェクトでは、完全にデータが受信されるまではデータにアクセスできません。このため、progress イベントの通知でしかダウンロードの進行状況を確認できません。完全にダウンロードされる前にデータにアクセスするには、URLStream オブジェクトを使用します。

URLLoader.load()
complete 受信したすべてのデータがデコードされ、URLLoader オブジェクトの data プロパティに配置された後に送出されます。flash.events.Event.COMPLETEflash.events.Event 受信したすべてのデータがデコードされ、URLLoader オブジェクトの data プロパティに配置された後に送出されます。このイベントが送出されると、受信したデータにアクセスできます。 URLLoader.load()open URLLoader.load() メソッドの呼び出しによりダウンロード処理が開始されると送出されます。flash.events.Event.OPENflash.events.Event処理が開始したときに送出されます。 URLLoader.load() メソッドの呼び出しによりダウンロード処理が開始されると送出されます。 URLLoader.load()URLLoader URLLoader オブジェクトを作成します。requestflash.net:URLRequestnullダウンロードする URL を指定する URLRequest オブジェクトです。このパラメーターを省略すると、ロード操作は開始されません。指定すると、直ちにロード操作が開始されます。詳細については、load を参照してください。 URLLoader オブジェクトを作成します。 URLLoader.load()addEventListener イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。typeStringイベントのタイプです。 listenerFunctionイベントを処理するリスナー関数です。この関数は、次の例のように、Event オブジェクトを唯一のパラメーターとして受け取り、何も返さないものである必要があります。 function(evt:Event):void

関数の名前は任意に付けられます。

useCaptureBooleanfalse リスナーが、キャプチャ段階、またはターゲットおよびバブリング段階で動作するかどうかを判断します。useCapturetrue に設定すると、リスナーはキャプチャ段階のみでイベントを処理し、ターゲット段階またはバブリング段階では処理しません。useCapturefalse に設定すると、リスナーはターゲット段階またはバブリング段階のみでイベントを処理します。3 つの段階すべてでイベントを受け取るには、addEventListener を 2 回呼び出します。useCapturetrue に設定して呼び出し、useCapturefalse に設定してもう一度呼び出します。 priorityint0イベントリスナーの優先度レベルです。優先度は、符号付き 32 ビット整数で指定します。数値が大きくなるほど優先度が高くなります。優先度が n のすべてのリスナーは、優先度が n-1 のリスナーよりも前に処理されます。複数のリスナーに対して同じ優先度が設定されている場合、それらは追加された順番に処理されます。デフォルトの優先度は 0 です。 useWeakReferenceBooleanfalseリスナーへの参照が強参照と弱参照のいずれであるかを判断します。デフォルトである強参照の場合は、リスナーのガベージコレクションが回避されます。弱参照では回避されません。

クラスレベルメンバー関数はガベージコレクションの対象外であるため、クラスレベルメンバー関数の useWeakReference は、ガベージコレクションの制限とは無関係に true に設定できます。ネストされた内部の関数であるリスナーに対して useWeakReferencetrue に設定すると、その関数はガベージコレクションされ、永続的ではなくなります。inner 関数に対する参照を作成(別の変数に保存)した場合、その関数はガベージコレクションされず、永続化された状態のままになります。

イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。イベントリスナーは、特定のタイプのイベント、段階、および優先度に関する表示リスト内のすべてのノードに登録できます。

イベントリスナーが正常に登録された後に、addEventListener() をさらに呼び出して優先度を変更することはできません。リスナーの優先度を変更するには、最初に removeListener() を呼び出す必要があります。その後、同じリスナーを新しい優先度レベルで再度登録できます。

リスナーが登録された後に、addEventListener()type または useCapture に別の値を設定)を再度呼び出すと、別のリスナー登録が作成されることに注意してください。例えば、最初にリスナーを登録するときに useCapturetrue に設定すると、そのリスナーはキャプチャ段階のみでリスニングします。同じリスナーオブジェクトを使用して再度 addEventListener() を呼び出すと(このとき、useCapturefalse を設定)、異なる 2 つのリスナーが登録されます。1 つはキャプチャ段階でリスニングするリスナーで、もう 1 つはターゲット段階とバブリング段階でリスニングするリスナーです。

ターゲット段階またはバブリング段階のみを対象とするイベントリスナーを登録することはできません。登録時にこれらの段階が組み合わされるのは、バブリングはターゲットノードの祖先にしか適用されないためです。

イベントリスナーが不要になった場合は、removeEventListener() を呼び出して、イベントリスナーを削除します。削除しない場合、メモリの問題が発生する可能性があります。ガベージコレクションでは、オブジェクトの送出が行われている限り、リスナーを削除しないので、イベントリスナーは自動的には削除されません(useWeakReference パラメーターが true に設定されていない場合)。

EventDispatcher インスタンスをコピーしても、それに関連付けられているイベントリスナーはコピーされません。新しく作成したノードにイベントリスナーが必要な場合は、ノードを作成した後に、リスナーを関連付ける必要があります。ただし、EventDispatcher インスタンスを移動した場合は、関連付けられているイベントリスナーも一緒に移動されます。

イベントがノードで処理されるときに、イベントリスナーがそのノードに登録中であれば、イベントリスナーは現在の段階ではトリガーされません。ただし、バブリング段階など、イベントフローの後の段階でトリガーすることができます。

イベントがノードで処理されているときにイベントリスナーがノードから削除された場合でも、イベントは現在のアクションによってトリガーされます。削除された後は、その後の処理で再び登録されない限り、イベントリスナーは二度と呼び出されません。

close 進行中のロード操作は直ちに終了します。 進行中のロード操作は直ちに終了します。進行中のロード操作は直ちに終了します。URL が現在ストリーミングされていない場合、無効なストリームエラーがスローされます。 load 指定された URL からデータを送信およびロードします。URLRequest.requestHeader オブジェクトには、禁止されている特定の HTTP リクエストヘッダーを含めることはできません。詳細については、URLRequestHeader クラスの説明を参照してください。 ArgumentErrorArgumentErrorこのエラーは、次の理由で発生する可能性があります。1) Flash Player または AIR では URLRequest.data パラメーターを UTF8 から MBCS に変換できません。このエラーは、load() に渡された URLRequest オブジェクトが GET 操作を行うように設定されている場合、および System.useCodePagetrue に設定されている場合に発生することがあります。2) Flash Player または AIR では POST データにメモリを割り当てることができません。このエラーは、load に渡された URLRequest オブジェクトが POST 操作を行うように設定されている場合に発生することがあります。 MemoryErrorflash.errors:MemoryError信頼されていないローカルファイルはインターネットへの接続を許可されません。この問題は、このファイルを local-with-networking または trusted として分類し直すことで回避できます。 SecurityErrorSecurityError一般的な予約ポートに接続しようとしています。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。 SecurityErrorSecurityError要求パラメーターの値、または渡された URLRequest オブジェクトの URLRequest.url プロパティの値は null です。 TypeErrorTypeErrorrequestflash.net:URLRequestダウンロードする URL を指定する URLRequest オブジェクトです。 指定された URL からデータを送信およびロードします。dataFormat プロパティに設定した値に基づき、テキスト、生のバイナリデータ、または URL エンコードされた変数としてデータを受け取ることができます。dataFormat プロパティのデフォルト値はテキストです。データを指定された URL に送信する場合は、URLRequest オブジェクトの data プロパティを設定できます。

注意:読み込み中のファイルに ASCII 文字以外の文字(英語以外の多くの言語に存在する)が含まれている場合は、ASCII のような非 Unicode 形式ではなく UTF-8 または UTF-16 エンコーディング形式でファイルを保存することをお勧めします。

ローカルファイルシステムのサンドボックスの SWF ファイルは、ネットワーク上のサンドボックス内のリソースからデータを読み込んだり、リソースにデータを書き込んだりしないことがあります。

デフォルトで、呼び出し元の SWF ファイルおよびロードする URL は同じドメインに置かれている必要があります。例えば、www.adobe.com に置かれている SWF ファイルは www.adobe.com に置かれているソースからのみデータをロードできます。 異なるドメインからデータをロードするには、データをホストするサーバーに URL ポリシーファイルを配置します。

一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。

Flash Player 10 以降では、"multipart/form-data" などのマルチパート Content-Type にアップロードが含まれていると(アップロードが含まれているかどうかは POST ボディ内の "content-disposition" ヘッダーの "filename" パラメーターで示されます)、そのアップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

  • POST 処理は、マウスのクリックやキーの押下などのユーザーが開始したアクションに応答して実行する必要があります。
  • POST 処理がクロスドメインである(POST ターゲットが、POST 要求を送信中の SWF ファイルと同じサーバー上にない)場合は、クロスドメインアクセスを許可する URL ポリシーファイルをターゲットサーバーが提供する必要があります。

また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

次の例は、XML ファイルをロードし、そのエレメントの最初の引数の内容をテキストフィールドに表示します。

XML ファイルの場所を示す URLRequest オブジェクトを作成します。この例では、XML ファイルは SWF ファイルと同じディレクトリにあります。発生する可能性のあるエラーをキャッチするために、try...catch ブロックにファイルをロードします。この例では、SecurityError エラーをキャッチします。IO_ERROR イベントが発生すると、errorHandler() メソッドを呼び出します。このメソッドは、xmlTextField テキストフィールドにエラーメッセージを書き込みます。XML ファイルのデータを受信して loader URLLoader オブジェクトのデータプロパティに格納した後、Event.COMPLETE イベントを送出し、loaderCompleteHandler() メソッドを呼び出します。

loaderCompleteHandler() メソッドで、try...catch ブロックを使用して、ロードしたデータをファイルから XML オブジェクトに変換する際に発生する解析エラーをキャッチします。次に、readNodes() メソッドで XML ドキュメントのノード内にあるすべてのエレメントを回帰的に読み取り、すべてのエレメントの先頭にある属性のリストを xmlTextField テキストフィールドに付加します。

package { import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.xml.*; import flash.events.IOErrorEvent; public class URLLoader_loadExample extends Sprite { private var xmlTextField:TextField = new TextField(); private var externalXML:XML; private var loader:URLLoader; public function URLLoader_loadExample() { var request:URLRequest = new URLRequest("xmlFile.xml"); loader = new URLLoader(); try { loader.load(request); } catch (error:SecurityError) { trace("A SecurityError has occurred."); } loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.addEventListener(Event.COMPLETE, loaderCompleteHandler); xmlTextField.x = 10; xmlTextField.y = 10; xmlTextField.background = true; xmlTextField.autoSize = TextFieldAutoSize.LEFT; addChild(xmlTextField); } private function loaderCompleteHandler(event:Event):void { try { externalXML = new XML(loader.data); readNodes(externalXML); } catch (e:TypeError) { trace("Could not parse the XML file."); } } private function readNodes(node:XML):void { for each (var element:XML in node.elements()) { xmlTextField.appendText(element.attributes()[0] + "\n"); readNodes(element); } } private function errorHandler(e:IOErrorEvent):void { xmlTextField.text = "Had problem loading the XML File."; } } }
URLRequestHeaderURLRequest.requestHeadersURLRequest.dataURLRequest.digestcompleteflash.events:Eventデータが正常にロードされた後に送出されます。 データが正常にロードされた後に送出されます。httpStatusflash.events:HTTPStatusEventアクセスが HTTP 経由で、現在の Flash Player 環境がステータスコードの取得をサポートしている場合、complete または error イベントに加えて、これらのイベントを受け取る場合があります。 アクセスが HTTP 経由で、現在の Flash Player 環境がステータスコードの取得をサポートしている場合、完了イベントやエラーイベントに加えて、これらのイベントを受け取る場合があります。ioErrorflash.events:IOErrorEventロード操作を完了できませんでした。 ロード操作を完了できませんでした。progressflash.events:ProgressEventダウンロード処理を実行中にデータを受信したときに送出されます。 ダウンロード処理を実行中にデータを受信したときに送出されます。securityErrorflash.events:SecurityErrorEvent呼び出し元のセキュリティ Sandbox の外部にあるサーバーからデータを取得しようとするロード操作です。これはサーバー上のポリシーファイルを使用すると回避できます。 呼び出し元のセキュリティ Sandbox の外部にあるサーバーからデータを取得しようとするロード操作です。securityErrorflash.events:SecurityErrorEventロード操作で SWZ ファイル(Adobe プラットフォームコンポーネント)を読み込もうとしましたが、証明書が無効であるか、ダイジェストがコンポーネントと一致しません。 ロード操作で SWZ ファイル(Adobe プラットフォームコンポーネント)を読み込もうとしましたが、証明書が無効であるか、ダイジェストがコンポーネントと一致しません。openflash.events:Eventロード操作が開始したときに送出されます。 ロード操作が開始したときに送出されます。httpResponseStatusflash.events:HTTPStatusEventload() メソッドを呼び出して HTTP を介してデータにアクセスを試み、Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。 load() メソッドを呼び出して HTTP を介してデータにアクセスを試み、Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。
bytesLoaded ロード操作中に、既にロード済みのデータのバイト数を示します。0uint ロード操作中に、既にロード済みのデータのバイト数を示します。 bytesTotal ダウンロードデータの合計バイト数を示します。0uint ダウンロードデータの合計バイト数を示します。このプロパティは、ロード操作の進行中は 0 を格納し、操作が完了した時点で設定されます。また、Content-Length ヘッダーがない場合、bytesTotal の値が不確定になります。 dataFormat ダウンロードしたデータがテキスト(URLLoaderDataFormat.TEXT)生のバイナリデータ (URLLoaderDataFormat.BINARY)、または URL エンコードされた変数(URLLoaderDataFormat.VARIABLES)のいずれであるかを制御します。textStringURLLoaderDataFormat.TEXT ダウンロードされたデータの受信方法を制御します。 ダウンロードしたデータがテキスト(URLLoaderDataFormat.TEXT)、生のバイナリデータ(URLLoaderDataFormat.BINARY)、または URL エンコードされた変数(URLLoaderDataFormat.VARIABLES)のいずれであるかを制御します。

dataFormat プロパティの値が URLLoaderDataFormat.TEXT の場合、受け取るデータは、ロードされたファイルのテキストを含むストリングです。

dataFormat プロパティの値が URLLoaderDataFormat.BINARY の場合、受け取るデータは、生のバイナリデータを含む ByteArray オブジェクトです。

dataFormat プロパティの値が URLLoaderDataFormat.VARIABLES の場合、受け取るデータは、URL エンコードされた変数を含む URLVariables オブジェクトです。

次の例は外部テキストファイルをロードする方法を示しています。 URLRequest クラスと URLLoader クラスを使用して、完了イベントを待機します。ActionScriptExamples.com で作成された例。 var PATH:String = "lorem.txt"; var urlRequest:URLRequest = new URLRequest(PATH); var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.TEXT; // default urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete); urlLoader.load(urlRequest); function urlLoader_complete(evt:Event):void { textArea.text = urlLoader.data; }
URLLoaderDataFormat
data ロード操作によって受信したデータです。 ロード操作によって受信したデータです。このプロパティは、ロード操作が完了したときにのみ設定されます。データの形式は、dataFormat プロパティの設定によって決まります。

dataFormat プロパティが URLLoaderDataFormat.TEXT の場合、受け取るデータは、ロードされたファイルのテキストを含むストリングです。

dataFormat プロパティが URLLoaderDataFormat.BINARY の場合、受け取るデータは、生のバイナリデータを含む ByteArray オブジェクトです。

dataFormat プロパティが URLLoaderDataFormat.VARIABLES の場合、受け取るデータは、URL エンコードされた変数を含む URLVariables オブジェクトです。

次の例は、URLLoader クラスを使用し、dataFormat プロパティを URLLoaderDataFormat.VARIABLES 定数(「変数」)に設定して、URL エンコードされた変数を含む外部テキストファイルを ActionScript 3.0 ドキュメントにロードする方法を示しています。ActionScriptExamples.com で作成された例。 //params.txt is a local file that includes: firstName=Tom&lastName=Jones var lbl:TextField = new TextField(); var urlRequest:URLRequest = new URLRequest("params.txt"); var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete); urlLoader.load(urlRequest); function urlLoader_complete(evt:Event):void { lbl.text = urlLoader.data.lastName + "," + urlLoader.data.firstName; addChild(lbl); }
URLLoaderDataFormatURLLoader.dataFormat
IDynamicPropertyOutput このインターフェイスは、ダイナミックオブジェクトのダイナミックプロパティの直列化を制御します。 このインターフェイスは、ダイナミックオブジェクトのダイナミックプロパティの直列化を制御します。このインターフェイスは、IDynamicPropertyWriter インターフェイスおよび ObjectEncoding.dynamicPropertyWriter プロパティと組み合わせて使用します。 IDynamicPropertyWriterObjectEncoding.dynamicPropertyWriterwriteDynamicProperty ダイナミックプロパティを、直列化オブジェクトのバイナリ出力に追加します。nameStringプロパティの名前です。このパラメーターは、ダイナミックオブジェクトの既存のプロパティ名を指定する場合、または新しいプロパティを作成する場合に使用できます。 value指定されたプロパティに書き込む値です。 ダイナミックプロパティを、直列化オブジェクトのバイナリ出力に追加します。続いて、readObject などのメソッドを使用してオブジェクトが読み取られると、新しいプロパティが設定されます。このメソッドを使用して、動的オブジェクトのプロパティの直列化からの除外、動的オブジェクトのプロパティへの値の書き込み、または新しいプロパティの作成を実行できます。 IDynamicPropertyWriterObjectEncoding.dynamicPropertyWriterNetStreamPlayOptions NetStreamPlayOptions クラスでは、NetStream.play2() メソッドに渡すことができる様々なオプションを指定します。NetStreamPlayOptions クラスでは、NetStream.play2() メソッドに渡すことができる様々なオプションを指定します。 flash.events:EventDispatcher NetStreamPlayOptions クラスでは、NetStream.play2() メソッドに渡すことができる様々なオプションを指定します。NetStreamPlayOptions オブジェクトを play2() に渡し、クラスのプロパティで様々なオプションを指定します。このクラスの主な使用方法は、ストリーム間で動的にトランザクションを実装して、異なるビットレートおよびサイズのストリームに切り替えたり、再生リストの異なるコンテンツに入れ替えたりすることです。 NetStreamPlayOptions NetStreamPlayOptions オブジェクトを作成し、NetStream.play2() メソッドに渡すオプションを指定します。 NetStreamPlayOptions オブジェクトを作成し、NetStream.play2() メソッドに渡すオプションを指定します。 NetStream.play2()len streamName で指定されているストリームの再生の継続時間(秒単位)。NumberstreamName で指定されているストリームの再生の継続時間(秒単位)。 streamName で指定されているストリームの再生の継続時間(秒単位)。デフォルト値は -1 で、-1 を指定すると Flash Player は使用できなるまでライブストリームを再生するか、記録されているストリームの最後まで再生します。len に 0 を指定すると、記録されているストリームの最初から start 秒の単一フレームを再生します(start に 0 以上が設定されている場合)。

len に正の値を設定すると、Flash Player はライブストリームが使用可能になった後、len 秒再生するか、記録されているストリームを len 秒再生します(ストリームがlen 秒より短い場合は、ストリームが終了した時点で再生は終了します)。

len に -1 以外の負の数を指定すると、Flash Player は値に -1 が指定されたものと解釈します。

NetStream.play()NetStream.play2()start
offset 新しいストリームへの切り替え時のストリーム再生時間(秒単位)。Number 新しいストリームへの切り替え時のストリーム再生時間(秒単位)。offset パラメーターは、NetStream.play2() 呼び出しが、NetStreamPlayTransitions.SWITCH トランジションモードで行われるときに使用されます。Flash Media Server は、指定されたオフセット時間後の最も近い切り替えポイントを探して、そのポイントから新しいストリームのストリーミングを開始します。

高速切り替え

このプロパティが指定されると、Flash Media Server は現在のストリームを先取りし、キーフレームを見つけるまで待機することなく、指定されたインデックス位置からすぐに新しいストリームのストリーミングを開始します。前のストリームからバッファーされているオフセット後のすべてのデータは消去されます。このテクニックでは、古いストリームからバッファされたデータを再生する必要がないので、標準の切り替えよりも迅速に新しいストリームに切り替えることができます。

offset のデフォルト値は -1 です。これは高速切り替えモードです。このモードでは、netstream.time + 3 後の最初に使用できるキーフレームで切り替えが発生します。これは、再生ポイントの約 3 秒後です。

オフセット値は現在の再生時間(Netstream.time)よりも高い値にする必要があります。この値が小さいと、NetStream.Play.Failed ステータスイベントが送信されます。

詳しくは、『Adobe Flash Media Server デベロッパーズガイド』の「ストリーミング間の高速切り替え」を参照してください。

startNetStream.play()NetStream.play2()NetStream.timeNetStreamPlayTransitions.SWITCH
oldStreamName 前のストリームの名前またはトランジション元のストリームの名前。String 前のストリームの名前またはトランジション元のストリームの名前。トランジションは実行せずにストリームを再生するためだけに NetStream.play2() を使用するときは、このプロパティの値は null または未定義にしておきます。トランジションを実行するときは、トランジション元のストリームを指定します。 streamNameNetStream.play()NetStream.play2()start streamName の開始時間(秒単位)。NumberstreamName の開始時間(秒単位)。 streamName の開始時間(秒単位)。有効な値は -2、-1、および 0 です。

start のデフォルト値は -2 で、-2 を指定すると Flash Player は streamName で指定されているライブストリームを最初に再生しようとします。この名前のライブストリームが見つからない場合、Flash Player は streamName で指定されている記録されたストリームを再生します。ライブストリームも記録されたストリームも見つからない場合、Flash Player は、だれもパブリッシュしていなくても streamName という名前のライブストリームを開きます。だれかがそのストリームのパブリッシュを開始すると、Flash Player はそのストリームの再生を開始します。

start に -1 を指定すると、Flash Player は streamName で指定されているライブストリームだけを再生します。ライブストリームが見つからない場合で len が -1 に設定されていると、Flash Player は待ち状態のままになります。len が -1 以外に設定されていると、Flash Player は len 秒の間待った後、再生リストの次のアイテムの再生を開始します。

start に 0 または正の値を設定すると、Flash Player は streamName という名前の記録されたストリームだけを、ストリームの最初から start 秒の位置から再生を始めます。記録されたストリームが見つからない場合は、Flash Player は直ちに再生リストの次のアイテムの再生を開始します。

start に -1 および -2 以外の負の数を設定すると、Flash Player は値に -2 が指定されたものと解釈します。

NetStream.play()NetStream.play2()長さ
streamName トランジションまたは再生する新しいストリームの名前。String トランジションまたは再生する新しいストリームの名前。oldStreamName が null または未定義のときは、NetStream.play2() を呼び出すだけで streamName の再生が開始されます。oldStreamName が指定されていると、NetStream.play2() を呼び出すことで、oldStreamNamestreamName にトランジションされます(transition プロパティで指定されている移行モードを使用)。 oldStreamNameNetStream.play()NetStream.play2()transition streamName が再生または移行されるモード。StringstreamName が再生または移行されるモード。 streamName が再生または移行されるモード。正の値は、NetStreamPlayTransitions クラスの定数です。Netstream.play2() が再生のために呼び出されたのか移行のために呼び出されたのかによって、移行モードの動作は異なります。移行モードについて詳しくは、NetStreamPlayTransitions クラスを参照してください。 NetStreamPlayTransitionsNetStream.play2()
NetStreamMulticastInfo NetStreamMulticastInfo クラスは、NetStream オブジェクトの基盤となる RTMFP ピアーツーピアーおよび IP マルチキャストストリーム転送に関する多様なサービス品質(QoS)を指定します。Object NetStreamMulticastInfo クラスは、NetStream オブジェクトの基盤となる RTMFP ピアーツーピアーおよび IP マルチキャストストリーム転送に関する多様なサービス品質(QoS)を指定します。NetStreamMulticastInfo オブジェクトは、NetStream.multicastInfo プロパティによって返されます。

マルチキャストストリームの始まりから計算された合計を表す数字を返すプロパティ。これらのタイプのプロパティには、送信メディアバイト数や受信メディアフラグメントメッセージ数などがあります。数秒間にわたって平均された現在のレートのスナップショットを表すレートとなるプロパティ。これらのタイプのプロパティには、ローカルノードがデータを受信するレートなどがあります。

NetStreamMulticastInfo オブジェクトに含まれる値のリストを表示するには、NetStreamMulticastInfo.toString() メソッドを使用します。

toString()flash.net.NetStream.multicastInfotoString NetStreamMulticastInfo オブジェクトのプロパティを列挙するストリングを返します。NetStreamMulticastInfo オブジェクトのプロパティの値を含むストリング。 String NetStreamMulticastInfo オブジェクトのプロパティを列挙するストリングを返します。 bytesPushedFromPeers 事前にピアーから転送され、ローカルノードで受信されたメディアバイト数を指定します。Number 事前にピアーから転送され、ローカルノードで受信されたメディアバイト数を指定します。 bytesRequestedFromPeersfragmentsPushedFromPeersfragmentsRequestedFromPeersbytesPushedToPeers ローカルノードが事前にピアーに転送したメディアバイト数を指定します。Number ローカルノードが事前にピアーに転送したメディアバイト数を指定します。 bytesRequestedByPeersfragmentsPushedToPeersfragmentsRequestedByPeersbytesReceivedFromIPMulticast ローカルノードが IP マルチキャストから受信したメディアバイト数を指定します。Number ローカルノードが IP マルチキャストから受信したメディアバイト数を指定します。 bytesReceivedFromServerfragmentsReceivedFromIPMulticastfragmentsReceivedFromServerreceiveDataBytesPerSecondFromIPMulticastbytesReceivedFromServer ローカルノードがサーバーから受信したメディアバイト数を指定します。Number ローカルノードがサーバーから受信したメディアバイト数を指定します。 bytesReceivedFromIPMulticastfragmentsReceivedFromIPMulticastfragmentsReceivedFromServerreceiveDataBytesPerSecondFromServerbytesRequestedByPeers ローカルノードが特定のフラグメントのピアーからの要求に応えて、それらのピアーに送信したメディアバイト数を指定します。Number ローカルノードが特定のフラグメントのピアーからの要求に応えて、それらのピアーに送信したメディアバイト数を指定します。 bytesPushedToPeersfragmentsPushedToPeersfragmentsRequestedByPeersbytesRequestedFromPeers ローカルノードが要求して、ピアーから受信したメディアバイト数を指定します。Number ローカルノードが要求して、ピアーから受信したメディアバイト数を指定します。 bytesPushedFromPeersfragmentsPushedFromPeersfragmentsRequestedFromPeersfragmentsPushedFromPeers 事前にピアーから転送され、ローカルノードで受信されたメディアフラグメントメッセージ数を指定します。Number 事前にピアーから転送され、ローカルノードで受信されたメディアフラグメントメッセージ数を指定します。 bytesPushedFromPeersbytesRequestedFromPeersfragmentsRequestedFromPeersfragmentsPushedToPeers ローカルノードが事前にピアーに転送したメディアフラグメントメッセージ数を指定します。Number ローカルノードが事前にピアーに転送したメディアフラグメントメッセージ数を指定します。 bytesPushedToPeersbytesRequestedByPeersfragmentsRequestedByPeersfragmentsReceivedFromIPMulticast ローカルノードが IP マルチキャストから受信したメディアフラグメントメッセージ数を指定します。Number ローカルノードが IP マルチキャストから受信したメディアフラグメントメッセージ数を指定します。 bytesReceivedFromIPMulticastbytesReceivedFromServerfragmentsReceivedFromServerreceiveDataBytesPerSecondFromIPMulticastfragmentsReceivedFromServer ローカルノードがサーバーから受信したメディアフラグメントメッセージ数を指定します。Number ローカルノードがサーバーから受信したメディアフラグメントメッセージ数を指定します。 bytesReceivedFromIPMulticastbytesReceivedFromServerfragmentsReceivedFromIPMulticastreceiveDataBytesPerSecondFromServerfragmentsRequestedByPeers ローカルノードが特定のフラグメントのピアーからの要求に応えて、それらのピアーに送信したメディアフラグメントメッセージ数を指定します。Number ローカルノードが特定のフラグメントのピアーからの要求に応えて、それらのピアーに送信したメディアフラグメントメッセージ数を指定します。 bytesPushedToPeersbytesRequestedByPeersfragmentsPushedToPeersfragmentsRequestedFromPeers ローカルノードが要求して、ピアーから受信したメディアフラグメントメッセージ数を指定します。Number ローカルノードが要求して、ピアーから受信したメディアフラグメントメッセージ数を指定します。 bytesPushedFromPeersbytesRequestedFromPeersfragmentsPushedFromPeersreceiveControlBytesPerSecond ローカルノードがピアーから制御オーバーヘッドメッセージを受信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがピアーから制御オーバーヘッドメッセージを受信するレート(1 秒あたりのバイト数)を指定します。 receiveDataBytesPerSecondreceiveDataBytesPerSecondFromServerreceiveDataBytesPerSecondFromIPMulticastsendControlBytesPerSecondreceiveDataBytesPerSecondFromIPMulticast ローカルノードが IP マルチキャストからデータを受信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードが IP マルチキャストからデータを受信するレート(1 秒あたりのバイト数)を指定します。 receiveControlBytesPerSecondreceiveDataBytesPerSecondreceiveDataBytesPerSecondFromServersendDataBytesPerSecondreceiveDataBytesPerSecondFromServer ローカルノードがサーバーからメディアデータを受信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがサーバーからメディアデータを受信するレート(1 秒あたりのバイト数)を指定します。 receiveControlBytesPerSecondreceiveDataBytesPerSecondreceiveDataBytesPerSecondFromIPMulticastsendDataBytesPerSecondreceiveDataBytesPerSecond ローカルノードがピアーおよびサーバーから、および IP マルチキャスト経由でメディアデータを受信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがピアーおよびサーバーから、および IP マルチキャスト経由でメディアデータを受信するレート(1 秒あたりのバイト数)を指定します。 receiveControlBytesPerSecondreceiveDataBytesPerSecondFromIPMulticastreceiveDataBytesPerSecondFromServersendDataBytesPerSecondsendControlBytesPerSecondToServer ローカルノードがサーバーに制御オーバーヘッドメッセージを送信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがサーバーに制御オーバーヘッドメッセージを送信するレート(1 秒あたりのバイト数)を指定します。 receiveDataBytesPerSecondFromServersendControlBytesPerSecondsendDataBytesPerSecondsendControlBytesPerSecond ローカルノードがピアーおよびサーバーに制御オーバーヘッドメッセージを送信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがピアーおよびサーバーに制御オーバーヘッドメッセージを送信するレート(1 秒あたりのバイト数)を指定します。 receiveControlBytesPerSecondsendControlBytesPerSecondToServersendDataBytesPerSecondsendDataBytesPerSecond ローカルノードがピアーにメディアデータを送信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがピアーにメディアデータを送信するレート(1 秒あたりのバイト数)を指定します。 receiveDataBytesPerSecondsendControlBytesPerSecondsendControlBytesPerSecondToServer
NetworkInfo NetworkInfo クラスはコンピューター上のネットワークインターフェイスについての情報を提供します。flash.events:EventDispatcher NetworkInfo クラスはコンピューター上のネットワークインターフェイスについての情報を提供します。

AIR プロファイルのサポート:この機能はすべてのデスクトップオペレーティングシステムおよびテレビ用 AIR デバイスでサポートされますが、モバイルデバイスの種類によってはサポートされません。NetworkInfo.isSupported プロパティを使用して、サポートされているかどうかを実行時にテストすることができます。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。

NetworkInfo オブジェクトはシングルトンオブジェクトです。NetworkInfo オブジェクトを 1 つ取得するには、静的 NetworkInfo.networkInfo プロパティを使用します。クラスコンストラクターの new NetworkInfo() は呼び出さないでください。

ほとんどのコンピューターには、有線および無線ネットワークインターフェイスなどの 1 つ以上のインターフェイスがあります。VPN、ループバック、仮想インターフェイスなど、その他のインターフェイスがある場合もあります。

NetworkInfo オブジェクトは、利用可能なインターフェイスが変わると、変更イベントを送出します。 最新のネットワーク情報を判別する findInterfaces() メソッドを呼び出します。

注意:NativeApplication オブジェクトも、ネットワーク変更イベントを送出します。

NetworkInterface クラスInterfaceAddress クラスnetworkChange ネットワークインターフェイスが変更されたときに送出されました。flash.events.Event.NETWORK_CHANGEflash.events.Event ネットワークインターフェイスが変更されたときに送出されました。 findInterfaces このマシンに関連したネットワークインターフェイスのリストを返します。NetworkInterface オブジェクトの配列です。 このマシンに関連したネットワークインターフェイスのリストを返します。 isSupported ネットワークインターフェイス情報へのアクセスがクライアントシステム上でサポートされているかどうかを示します。Boolean ネットワークインターフェイス情報へのアクセスがクライアントシステム上でサポートされているかどうかを示します。 networkInfo NetworkInfo オブジェクトのシングルトンインスタンスです。flash.net:NetworkInfoAIR アプリケーションセキュリティサンドボックス外で実行されているコンテンツがこのプロパティにアクセスする場合。 SecurityErrorSecurityError NetworkInfo オブジェクトのシングルトンインスタンスです。
URLVariables URLVariables クラスを使用すると、アプリケーションとサーバーの間で変数を転送できます。Object URLVariables クラスを使用すると、アプリケーションとサーバーの間で変数を転送できます。URLVariables オブジェクトは、URLLoader クラスのメソッド、URLRequest クラスの data プロパティ、および flash.net パッケージ関数で使用します。 次の例では、新しいブラウザーウィンドウで http://www.[yourDomain].com/application.jsp でホストされるリモートアプリケーションを開き、URLVariables オブジェクトで捕捉したユーザーセッションに関するデータをアプリケーションに渡します。

この例のハイライトは、次のとおりです。

  1. コンストラクター関数が request という名前の URLRequest インスタンスを作成します。このとき、リモートアプリケーションの URL をパラメーターとして取ります。
  2. URLVariables オブジェクトが作成され、その 2 つのプロパティに値が割り当てられます。
  3. URLVariables オブジェクトが URLRequest オブジェクトの data プロパティに割り当てられます。
  4. navigateToURL を呼び出して、リモートアプリケーションの URL 用の新しいブラウザーウィンドウを開きます。

注意:この例を実行するには、この例のリモートアプリケーションの URL を実際の URL に置き換える必要があります。さらに、URLVariables オブジェクトの Flash Player で捕捉した情報を処理するためのサーバーコードが必要です。

package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; public class URLVariablesExample extends Sprite { public function URLVariablesExample() { var url:String = "http://www.[yourDomain].com/application.jsp"; var request:URLRequest = new URLRequest(url); var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "guest"; request.data = variables; navigateToURL(request); } } }
URLLoaderURLVariables 新しい URLVariables オブジェクトを作成します。sourceStringnull名前と値のペアを含む、URL エンコードされたストリングです。 新しい URLVariables オブジェクトを作成します。URLVariables オブジェクトを URLRequest オブジェクトの data プロパティに渡します。

ストリングを指定して URLVariables コンストラクターを呼び出すと、decode() メソッドが自動的に呼び出されて、そのストリングが URLVariables オブジェクトのプロパティに変換されます。

decode 変数ストリングを、指定された URLVariables オブジェクトのプロパティに変換します。source パラメーターは、名前と値のペアを含む、URL エンコードされたクエリストリングでなければなりません。 ErrorErrorsourceString名前と値のペアを含む、URL エンコードされたクエリストリングです。 変数ストリングを、指定された URLVariables オブジェクトのプロパティに変換します。

このメソッドは、URLVariables イベントによって内部的に使用されます。ほとんどの場合、ユーザーが直接このメソッドを呼び出す必要はありません。

次の例は、URL エンコードされたストリングを解析する方法を示します。ActionScriptExamples.com で作成された例。 // The first method passes the string to be decoded to the URLVariables class constructor: var urlVariables:URLVariables = new URLVariables("firstName=Tom&lastName=Jones"); lbl.text = urlVariables.lastName + "," + urlVariables.firstName; // The second method uses the decode() method to parse the URL encoded string: var urlVariables:URLVariables = new URLVariables(); urlVariables.decode("firstName=Tom&lastName=Jones"); lbl.text = urlVariables.lastName + "," + urlVariables.firstName;
toString 列挙可能な変数をすべて含むストリングを、MIME コンテンツエンコード application/x-www-form-urlencoded で返します。名前と値のペアを含む、URL エンコードされたストリングです。 String 列挙可能な変数をすべて含むストリングを、MIME コンテンツエンコード application/x-www-form-urlencoded で返します。
IDynamicPropertyWriter このインターフェイスを IDynamicPropertyOutput インターフェイスと共に使用して、ダイナミックオブジェクトのダイナミックプロパティの直列化を制御します。 このインターフェイスを IDynamicPropertyOutput インターフェイスと共に使用して、ダイナミックオブジェクトのダイナミックプロパティの直列化を制御します。このインターフェイスを使用するには、IDynamicPropertyWriter インターフェイスを実装するオブジェクトを ObjectEncoding.dynamicPropertyWriter プロパティに割り当てます。 IDynamicPropertyOutputObjectEncoding.dynamicPropertyWriterwriteDynamicProperties IDynamicPropertyOutput オブジェクトの名前と値を、ダイナミックプロパティが指定されたオブジェクトに書き込みます。objObject書き込むオブジェクトです。 outputflash.net:IDynamicPropertyOutputオブジェクトに動的に書き込む名前と値が含まれる、IDynamicPropertyOutput オブジェクトです。 IDynamicPropertyOutput オブジェクトの名前と値を、ダイナミックプロパティが指定されたオブジェクトに書き込みます。ObjectEncoding.dynamicPropertyWriter が設定されている場合、ダイナミックプロパティが指定されているオブジェクトごとに、このメソッドが呼び出されます。 IDynamicPropertyOutputObjectEncoding.dynamicPropertyWriterDatagramSocket DatagramSocket クラスはコードで UDP (Universal Datagram Protocol)パケットを送受信できるようにします。flash.events:EventDispatcher DatagramSocket クラスはコードで UDP (Universal Datagram Protocol)パケットを送受信できるようにします。

AIR プロファイルのサポート:この機能はすべてのデスクトップオペレーティングシステムでサポートされますが、モバイルデバイスまたはテレビ用 AIR デバイスではサポートされません。DatagramSocket.isSupported プロパティを使用して、サポートされているかどうかを実行時にテストすることができます。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。

データグラムパケットはソースとターゲット間で個別に送信されます。 パケットは、送信順序とは異なる順序で受信されることもあります。送信中に消失したパケットは再送信されることも検出されることもありません。

データグラムソケットを使用して送信されたデータは、自動的に送信可能なサイズのパケットに分割されることはありません。MTU(Maximum Transmission Unit)のサイズを超える UDP パケットを送信すると、そのパケットはネットワークによって廃棄されます(警告は表示されません)。制限 MTU は、送信パス内のインターフェイス、スイッチ、またはルーターの最小 MTU です。 NetworkInterface クラスを使用して、ローカルインターフェイスの MTU を決めることができますが、ネットワーク内の他のノードが異なる MTU 値を持つ可能性があります。

Socket クラスは、保証されたパケット配信を提供し、大きなパケットを自動的に分割してもう一度組み立てる TCP を使用します。TCP はまた、ネットワーク帯域幅の管理に優れています。これらの機能により、TCP ソケットを使用して送信されたデータでレーテンシーが高くなりますが、ほとんどの用途において、TCP を使用するメリットは、そのコストをはるかに上回ります。たいていのネットワーク通信は DatagramSocket クラスではなく、Socket クラスを使用します。

DatagramSocket クラスは、小さな転送レーテンシーが重要でパケットの消失を許容できるアプリケーションを操作する場合に便利です。例えば、VoIP (voice-over-IP)アプリケーションのネットワーク操作やリアルタイムのマルチプレイヤーゲームが UDP の恩恵を受ける場合がよくあります。 DatagramSocket クラスは、サーバー側アプリケーションでも便利です。UDP はステートレスプロトコルなので、サーバーは TCP よりも多くのクライアントからの多くの要求を処理できます。

DatagramSocket クラスは Adobe AIR アプリケーションでのみ使用でき、アプリケーションセキュリティサンドボックスでのみ使用できます。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

package { import flash.display.Sprite; import flash.events.DatagramSocketDataEvent; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.net.DatagramSocket; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; import flash.utils.ByteArray; import flash.utils.Timer; public class DatagramSocketExample extends Sprite { private var datagramSocket:DatagramSocket = new DatagramSocket();; private var localIP:TextField; private var localPort:TextField; private var logField:TextField; private var targetIP:TextField; private var targetPort:TextField; private var message:TextField; public function DatagramSocketExample() { setupUI(); } private function bind( event:Event ):void { if( datagramSocket.bound ) { datagramSocket.close(); datagramSocket = new DatagramSocket(); } datagramSocket.bind( parseInt( localPort.text ), localIP.text ); datagramSocket.addEventListener( DatagramSocketDataEvent.DATA, dataReceived ); datagramSocket.receive(); log( "Bound to: " + datagramSocket.localAddress + ":" + datagramSocket.localPort ); } private function dataReceived( event:DatagramSocketDataEvent ):void { //Read the data from the datagram log("Received from " + event.srcAddress + ":" + event.srcPort + "> " + event.data.readUTFBytes( event.data.bytesAvailable ) ); } private function send( event:Event ):void { //Create a message in a ByteArray var data:ByteArray = new ByteArray(); data.writeUTFBytes( message.text ); //Send a datagram to the target try { datagramSocket.send( data, 0, 0, targetIP.text, parseInt( targetPort.text )); log( "Sent message to " + targetIP.text + ":" + targetPort.text ); } catch ( error:Error ) { log( error.message ); } } private function log( text:String ):void { logField.appendText( text + "\n" ); logField.scrollV = logField.maxScrollV; trace( text ); } private function setupUI():void { targetIP = createTextField( 10, 10, "Target IP:", "192.168.0.1" ); targetPort = createTextField( 10, 35, "Target port:", "8989" ); message = createTextField( 10, 60, "Message:", "Lucy can't drink milk." ); localIP = createTextField( 10, 85, "Local IP", "0.0.0.0"); localPort = createTextField( 10, 110, "Local port:", "0" ); createTextButton( 250, 135, "Bind", bind ); createTextButton( 300, 135, "Send", send ); logField = createTextField( 10, 160, "Log:", "", false, 200 ) this.stage.nativeWindow.activate(); } private function createTextField( x:int, y:int, label:String, defaultValue:String = '', editable:Boolean = true, height:int = 20 ):TextField { var labelField:TextField = new TextField(); labelField.text = label; labelField.type = TextFieldType.DYNAMIC; labelField.width = 180; labelField.x = x; labelField.y = y; var input:TextField = new TextField(); input.text = defaultValue; input.type = TextFieldType.INPUT; input.border = editable; input.selectable = editable; input.width = 280; input.height = height; input.x = x + labelField.width; input.y = y; this.addChild( labelField ); this.addChild( input ); return input; } private function createTextButton( x:int, y:int, label:String, clickHandler:Function ):TextField { var button:TextField = new TextField(); button.htmlText = "<u><b>" + label + "</b></u>"; button.type = TextFieldType.DYNAMIC; button.selectable = false; button.width = 180; button.x = x; button.y = y; button.addEventListener( MouseEvent.CLICK, clickHandler ); this.addChild( button ); return button; } } }
RFC 768Socket クラスXMLSocket クラスServerSocket クラスioError このソケットが I/O エラーを受信するときに送出されます。flash.events.IOErrorEvent.IOERRORflash.events.IOErrorEventこのソケットが I/O エラーを受信するときに送出されます。 このソケットが I/O エラーを受信するときに送出されます。 data このソケットがデータのパケットを受信するときに送出されます。flash.events.DatagramSocketDataEvent.DATAflash.events.DatagramSocketDataEvent このソケットがデータのパケットを受信するときに送出されます。 close オペレーティングシステムがこのソケットを閉じたときに送出されます。flash.events.Event.CLOSEflash.events.Event オペレーティングシステムがこのソケットを閉じたときに送出されます。

close イベントは、DatagramSocket close() メソッドが呼び出されるときに送出されません。

DatagramSocket DatagramSocket オブジェクトを作成します。AIR アプリケーションセキュリティサンドボックス外のコンテンツが DatagramSocket オブジェクトを作成しようとする場合。 SecurityErrorSecurityError DatagramSocket オブジェクトを作成します。 bind 指定されたローカルのアドレスおよびポートにこのソケットをバインドします。このエラーは、localPort が 0 未満か、または 65535 より大きい場合に発生します。 RangeErrorRangeErrorこのエラーは、localAddress が構文的に整形式の IP アドレスになっていない場合に発生します。 ArgumentErrorArgumentErrorこのエラーは、ソケットをバインドできない状況で発生します。例えば、次のような場合です。
  1. localPort が既に別のソケットで使用されている場合。
  2. アプリケーションを実行するユーザーアカウントに、指定されたポートへバインドする十分なシステム権限がない場合(権限の問題は、localPort < 1024 の場合に発生する場合があります)。
  3. この DatagramSocket オブジェクトが既にバインドされている場合。
  4. この DatagramSocket オブジェクトが既に閉じている場合。
IOErrorflash.errors:IOError
このエラーは、localAddress が有効なアドレスでない場合に発生します。 ErrorErrorlocalPortint0ローカルコンピューター上でバインドするポートの数。localPort が 0(デフォルト)に設定されている場合、次に利用可能なシステムポートがバインドされます。1024 より下位のポート番号に接続する権限には、システムのセキュリティポリシーが適用されます。例えば、Mac および Linux システムでは、アプリケーションは 1024 より下位のポートに接続するにはルート権限で実行する必要があります。 localAddressString0.0.0.0バインド先のローカルマシンの IP アドレス。このアドレスは、IPv4 アドレスでも IPv6 アドレスでもかまいません。localAddress0.0.0.0(デフォルト値)に設定されている場合、ソケットは利用可能なすべての IPv4 アドレスを監視します。利用可能なすべての IPv6 アドレスを監視するには、"::" を localAddress 引数として指定する必要があります。IPv6 アドレスを使用するには、コンピューターとネットワークの両方が IPv6 をサポートするように設定されている必要があります。 さらに、IPv4 アドレスにバインドされたソケットは IPv6 アドレスのソケットに接続できません。同様に、IPv6 アドレスにバインドされたソケットは IPv4 アドレスのソケットに接続できません。アドレスの種類が一致している必要があります。
指定されたローカルのアドレスおよびポートにこのソケットをバインドします。

bind() メソッドは、同期的に実行されます。バインド操作は、コードの次の行が実行される前に完了します。

次の例では、様々な方法で DatagramSocket オブジェクトをバインドする方法を示します。 udpSocket.bind(); //bind to any available port, listen on all IPv4 addresses udpSocket.bind( 0, "0.0.0.0" ); //same as above udpSocket.bind( 0, "127.0.0.1" ); //any available port on the localhost address udpSocket.bind( 8989, "192.168.0.1" ); //port 8989 on a particular IPv4 address udpSocket.bind( 0, "::" ); //any available port on all IPv6 address udpSocket.bind( 8989, "::1" ); //port 8989 on the IPv6 localhost address udpSocket.bind( 8989, "2001:1890:110b:1e19:f06b:72db:7026:3d7a" ); //port 8989 on a particular IPv6 address
close ソケットを閉じます。内部エラー、ネットワークエラーまたはオペレーティングシステムエラーが原因でソケットを閉じることができなかった場合、またはソケットが開いていない場合。 IOErrorflash.errors:IOError ソケットを閉じます。

ソケットはリモートマシンから切断され、ローカルマシンからバインド解除されます。閉じられたソケットを再利用することはできません。

connect 指定されたリモートアドレスおよびポートにソケットを接続します。このエラーは、localPort が 1 未満か、または 65535 より大きい場合に発生します。 RangeErrorRangeErrorこのエラーは、localAddress が構文的に有効なアドレスになっていない場合に発生します。または、デフォルトのルートアドレス('0.0.0.0' または '::')が使用されている場合に発生します。。 ArgumentErrorArgumentErrorこのエラーは、ソケットを接続できない場合に発生します。例えば、connect() の呼び出しの前に bind() が呼び出されていなかった場合や、リモートアドレスファミリーへのバインドができない場合などです。 IOErrorflash.errors:IOErrorremoteAddressString接続を確立するリモートマシンの IP アドレス。 このアドレスは、IPv4 アドレスでも IPv6 アドレスでもかまいません。bind() が呼び出されなかった場合は、デフォルトの bind() を呼び出すときに remoteAddress のアドレスファミリー(IPv4 または IPv6)が使用されます。 remotePortint接続の確立に使用するリモートマシン上のポート番号です。 指定されたリモートアドレスおよびポートにソケットを接続します。

データグラムソケットが「接続されている」場合、データグラムパケットは指定されたターゲットからのみ送受信できます。 その他のソースからのパケットは無視されます。データグラムソケットへの接続は必須ではありません。接続を確立すると、他のソースから不要なパケットを除外する必要がなくなります。ただし、UDP ソケット接続は(TCP 接続用なので)永続的なネットワーク接続ではありません。 ソケットのリモートエンドが存在していない可能性があります。

bind() メソッドが呼び出されなかった場合、ソケットは自動的にデフォルトのローカルのアドレスとポートにバインドされます。

receive この DatagramSocket オブジェクトが、バインドされている IP アドレスおよびポートで着信パケットを受信できるようにします。 この DatagramSocket オブジェクトが、バインドされている IP アドレスおよびポートで着信パケットを受信できるようにします。

関数は直ちに戻ります。データパケットを受信すると、DatagramSocket オブジェクトによって data イベントが送出されます。

dataflash.events:DatagramSocketDataEventUDP パケットを受信した場合。 UDP パケットを受信した場合。
send UDP を使用して、ByteArray にバイトを含むパケットを送信します。このエラーは、Port が 1 未満か、または 65535 より大きい場合に発生します。 RangeErrorRangeErrorソケットが接続されておらず、address が構文的に有効な IP アドレスになっていない場合に発生します。 ArgumentErrorArgumentErrorこのエラーは次の場合に発生します。
  1. bind() が呼び出されず、宛先アドレスファミリへのデフォルトのバインドができない場合。
  2. 一部のオペレーティングシステムでは、ターゲットホストから ICMP による "destination unreachable" メッセージを既に受け取っていた場合に connect() メソッドが呼び出されると、IOError がスローされます。したがって、このエラーはデータ送信の試行が 1 回目に失敗したときではなく、2 回目に失敗したときにスローされます。Windows などのその他のオペレーティングシステムでは、これらの ICMP メッセージが廃棄されるため、エラーはスローされません。
IOErrorflash.errors:IOError
bytes パラメーターが null の場合に発生します。 ErrorErroroffsetbytes で指定された ByteArray の長さよりも長い場合、または offsetlength を加えた値によって記述されるように指定されたデータ量が、利用可能なデータを超過した場合に発生します。 RangeErrorRangeErrorソケットが既に接続されている場合に、address または port パラメーターが指定されたときに発生します。 IllegalOperationErrorflash.errors:IllegalOperationErrorbytesflash.utils:ByteArrayパケットデータを含む ByteArray。 offsetuint0パケットが始まる bytes ByteArray オブジェクトへのゼロベースのオフセット。 lengthuint0パケット内のバイト数。デフォルト値の 0 に設定すると、offset パラメーターで指定した値以降の ByteArray 全体が送信されます。 addressStringnullリモートマシンの IPv4 または IPv6 アドレス。connect() メソッドを使用してアドレスが指定されていない場合、アドレスを指定する必要があります。 portint0リモートマシンのポート番号。connect() メソッドを使用してポートが指定されていない場合、0 ~ 65536 の値を指定する必要があります。
UDP を使用して、ByteArray にバイトを含むパケットを送信します。

ソケットが接続されている場合、パケットは connect() メソッド内に指定されたポートとリモートアドレス宛に送信されるため、送信先 IP アドレスとポートを指定することはできません。ソケットが接続されていない場合、パケットは指定したアドレスとポートに送信されるため、addressport に有効な値を指定する必要があります。bind() メソッドが呼び出されなかった場合、ソケットは自動的にデフォルトのローカルのアドレスとポートにバインドされます。

注意:ブロードキャストアドレスへのデータの送信はサポートされません。

bound このソケットオブジェクトが現在ローカルのアドレスとポートにバインドされているかどうかを示します。Boolean このソケットオブジェクトが現在ローカルのアドレスとポートにバインドされているかどうかを示します。 bind()connected このソケットオブジェクトが現在リモートのアドレスとポートにバインドされているかどうかを示します。Boolean このソケットオブジェクトが現在リモートのアドレスとポートにバインドされているかどうかを示します。

注意:true は、リモートコンピューターが接続されたアドレスとポートで待機しているという意味ではありません。単にこの DataGramSocket オブジェクトがそのアドレスとポートからのみデータを送受信するという意味です。

connect()
isSupported DatagramSocket 機能がランタイム環境でサポートされているかどうかを示します。Boolean DatagramSocket 機能がランタイム環境でサポートされているかどうかを示します。 localAddress ローカルマシン上でこのソケットがバインドされている IP アドレス。String ローカルマシン上でこのソケットがバインドされている IP アドレス。 bind()localPort ローカルマシン上でこのソケットがバインドされているポート。int ローカルマシン上でこのソケットがバインドされているポート。 bind()remoteAddress このソケットが接続されているリモートマシンの IP アドレス。 String このソケットが接続されているリモートマシンの IP アドレス。 connect()remotePort このソケットが接続されているリモートマシンのポート。 int このソケットが接続されているリモートマシンのポート。 connect()
NetGroupSendResult NetGroupSendResult クラスは、NetGroup インスタンスに関連付けられた Directed Routing メソッドの戻り値に使用される定数値の列挙です。Object NetGroupSendResult クラスは、NetGroup インスタンスに関連付けられた Directed Routing メソッドの戻り値に使用される定数値の列挙です。 flash.net.NetGroup.sendToNearest()flash.net.NetGroup.sendToNeighbor()flash.net.NetGroup.sendToAllNeighbors()ERROR Directed Routing メソッドを使用するときに発生したエラー(許可がない、など)を示します。errorString Directed Routing メソッドを使用するときに発生したエラー(許可がない、など)を示します。 NO_ROUTE 要求された宛先にメッセージを配信するためのネイバーが見つからないことを示します。no routeString 要求された宛先にメッセージを配信するためのネイバーが見つからないことを示します。 SENT メッセージにルートが見つかり、メッセージが宛先に配信されたことを示します。sentString メッセージにルートが見つかり、メッセージが宛先に配信されたことを示します。 URLRequestDefaults URLRequestDefaults クラスには、URLRequest クラスのプロパティのデフォルト値を定義するために設定できる静的プロパティが含まれています。Object URLRequestDefaults クラスには、URLRequest クラスのプロパティのデフォルト値を定義するために設定できる静的プロパティが含まれています。また、静的メソッドの URLRequestDefaults.setLoginCredentialsForHost() も含まれています。このメソッドを使用すると、要求のデフォルトの認証資格情報を定義できます。URLRequest クラスは、HTTP 要求で使用される情報を定義します。

URLRequest オブジェクトで設定されるプロパティは、URLRequestDefaults クラスに対し設定される静的プロパティをオーバーライドします。

URLRequestDefault の設定は、呼び出し側のアプリケーションドメイン内にあるコンテンツにのみ適用されますが、1 つ例外があります。URLRequestDefaults.setLoginCredentialsForHost() を呼び出して行われる設定は、現在実行中のアプリケーションのすべてのアプリケーションドメインに適用されます。

アプリケーションセキュリティサンドボックスで実行される Adobe® AIR® コンテンツだけが URLRequestDefaults クラスを使用できます。他のコンテンツがこのクラスのメンバーまたはプロパティにアクセスすると、SecurityError がスローされます。

URLRequestsetLoginCredentialsForHost 選択したホストのデフォルトユーザーおよびパスワード情報を設定します。呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrorhostnameStringユーザー名およびパスワードを適用する先のホストの名前。これには、"www.example.com" などのドメインを指定すること、または "www.example.com:80" など、ドメインとポート番号を指定することができます。"example.com""www.example.com" および"sales.example.com" はそれぞれ別のホストと見なされますので注意してください。 userString指定したホストの要求認証で使用するデフォルトユーザー名。 passwordString指定したホストの要求認証で使用するデフォルトパスワード。 選択したホストのデフォルトユーザーおよびパスワード情報を設定します。これらの設定は、このメソッドを呼び出したオブジェクトのアプリケーションメイン内の URLRequest オブジェクトだけではなく、アプリケーションのすべてのアプリケーションドメイン内の URLRequest オブジェクトに適用されます(一方、URLRequest クラスの静的プロパティは、呼び出し元のアプリケーションドメインにのみ適用されます)。これにより、アプリケーションの別の部分がログインするとき、アプリケーション全体のコンテンツが(コンテンツのアプリケーションドメインに関係なく)ログインできます。

Mac OS で実行されるアプリケーションに関する注意:Mac OS では、このメソッドを呼び出すと、アプリケーションは、アプリケーションが閉じられるまで指定したホストのこれらの資格情報を使用します。これは、同じホストに対し URLRequestDefaults.setLoginCredentialsForHost() を以後に呼び出した場合も同じです。ただし、このメソッドが指定する資格情報をサーバーが拒否した場合、以後の(同じホストに対する)URLRequestDefaults.setLoginCredentialsForHost() メソッドの呼び出しは認識されます。

注意:このメソッドは、ファイルのアップロードまたは RTMP 要求で使用される URLRequest オブジェクトには適用されません。

authenticate URLRequest オブジェクトの authenticate プロパティのデフォルト設定。Boolean呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrortrue URLRequest オブジェクトの authenticate プロパティのデフォルト設定。URLRequest オブジェクトの authenticate プロパティを設定すると、このデフォルト設定がオーバーライドされます。

注意:この設定は、ファイルのアップロードまたは RTMP 要求で使用される URLRequest オブジェクトには適用されません。

URLRequest.authenticate
cacheResponse URLRequest オブジェクトの cacheResponse プロパティのデフォルト設定。Boolean呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrortrue URLRequest オブジェクトの cacheResponse プロパティのデフォルト設定。URLRequest オブジェクトの cacheResponse プロパティを設定すると、このデフォルト設定がオーバーライドされます。true に設定すると、AIR アプリケーションのデフォルト動作では、オペレーティングシステムの HTTP キャッシュが使用されます。この設定は、ファイルのアップロードまたは RTMP 要求で使用される URLRequest オブジェクトには適用されません。 URLRequest.cacheResponsefollowRedirects URLRequest オブジェクトの followRedirects プロパティのデフォルト設定。Boolean呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrortrue URLRequest オブジェクトの followRedirects プロパティのデフォルト設定。URLRequest オブジェクトの followRedirects プロパティを設定すると、このデフォルト設定がオーバーライドされます。この設定は、ファイルのアップロードまたは RTMP 要求で使用される URLRequest オブジェクトには適用されません。 URLRequest.followRedirectsidleTimeout URLRequest オブジェクトおよび HTMLLoader オブジェクトの idleTimeout プロパティのデフォルト設定。Number呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErroridleTimeout が負の値です。 RangeErrorRangeError0 URLRequest オブジェクトおよび HTMLLoader オブジェクトの idleTimeout プロパティのデフォルト設定。

アイドルタイムアウトとは、接続が確立された後、要求が廃棄されるまでの間、クライアントがサーバーからの応答を待機する時間(ミリ秒)です。

これは、URLRequest または HTMLLoader オブジェクトで使用されるデフォルトアイドルタイムアウトを定義します。URLRequest オブジェクトまたは HTMLLoader オブジェクトで idleTimeout プロパティを設定すると、このデフォルト設定がオーバーライドされます。

このプロパティが 0 (デフォルト)に設定されると、ランタイムはオペレーティングシステムで定義されるデフォルトのタイムアウト値を使用します。デフォルトのアイドルタイムアウト値はオペレーティングシステム(Mac OS、Linux、または Windows)によって変わり、オペレーティングシステムのバージョンによっても変わります。

この設定は、ファイルのアップロードまたは RTMP 要求で使用される URLRequest オブジェクトには適用されません。

HTMLLoader.idleTimeoutURLRequest.idleTimeout
manageCookies URLRequest オブジェクトの manageCookies プロパティのデフォルト設定。Boolean呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrortrue URLRequest オブジェクトの manageCookies プロパティのデフォルト設定。URLRequest オブジェクトの manageCookies プロパティを設定すると、このデフォルト設定がオーバーライドされます。

注意:この設定は、ファイルのアップロードまたは RTMP 要求で使用される URLRequest オブジェクトには適用されません。

URLRequest.manageCookies
useCache URLRequest オブジェクトの useCache プロパティのデフォルト設定。Boolean呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrortrue URLRequest オブジェクトの useCache プロパティのデフォルト設定。URLRequest オブジェクトの useCache プロパティを設定すると、このデフォルト設定がオーバーライドされます。この設定は、ファイルのアップロードまたは RTMP 要求で使用される URLRequest オブジェクトには適用されません。 URLRequest.useCacheuserAgent URLRequest オブジェクトの userAgent プロパティのデフォルト設定。String呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityError URLRequest オブジェクトの userAgent プロパティのデフォルト設定。URLRequest オブジェクトの userAgent プロパティを設定すると、このデフォルト設定がオーバーライドされます。

これは、(HTMLLoader オブジェクトの load() メソッドを呼び出すと使用される) すべての HTMLLoader オブジェクトのデフォルトのユーザーエージェントストリングでもあります。HTMLLoader オブジェクトの userAgent プロパティを設定すると、URLRequestDefaults.userAgent 設定がオーバーライドされます。

このデフォルト値は、次の例に示すように、実行時のオペレーティングシステム(Mac OS、Linux または Windows など)、実行時の言語および実行時のバージョンによって異なります。

  • "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5"
  • "Mozilla/5.0 (Windows; U; en) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5"
  • "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5"
flash.net.URLRequest.userAgentflash.html.HTMLLoader.userAgent
NetGroup RTMFP グループ内のメンバーシップを表す NetGroup クラスのインスタンス。flash.events:EventDispatcher RTMFP グループ内のメンバーシップを表す NetGroup クラスのインスタンス。このクラスを使用して、次の操作を行います。
  • サービスの質(QoS)の監視info プロパティには、NetGroupInfo オブジェクトが含まれており、このオブジェクトのプロパティによってこのグループの QoS 統計が提供されます。
  • ポスティングpost() を呼び出して、グループのすべてのメンバーに ActionScript メッセージをブロードキャストします。
  • 転送sendToNearest()sendToNeighbor()、および sendToAllNeighbors() を呼び出して、短いデータメッセージを、ピアツーピアグループの指定したメンバーに送信します。送信元と送信先には、直接の接続は必要ありません。
  • オブジェクトレプリケーションaddHaveObjects()removeHaveObjects()addWantObjects()removeWantObjects()writeRequestedObject() および denyRequestedObject() を呼び出して、大きなデータを細かく分割し、ピアツーピアグループ のすべてのノードにレプリケートします。

クライアントサイドの NetGroup クラスでは、NetConnection によって次のイベントが送出されます。

  • NetGroup.Connect.Success
  • NetGroup.Connect.Failed
  • NetGroup.Connect.Rejected

イベントオブジェクトの info.group プロパティには、イベントソース(NetGroup)への参照が含まれます。NetGroup によって他のすべてのイベントが送出されます。サーバーサイドの NetGroup クラスでは、NetGroup によってすべてのイベントが送出されます。

ピアー対応ネットワークについて詳しくは、Adobe エバンジェリストの Tom Krcha による Basics of P2P in Flash を参照してください。ピアー対応ネットワークにおけるグループの使用について詳しくは、同じく Tom Krcha による Social Media Experiences with Flash Media and RTMFP を参照してください。

ピアー対応ネットワークの背景にある技術的な詳細については、Adobe コンピューターサイエンティストの Matthew Kaufman によるP2P on the Flash Platform with RTMFP を参照してください。

これは、ピアーツアーピアーネットワークを使用するシンプルなビデオチャットアプリケーションです。アプリケーションは RTMFP で Flash Media Server に接続します。サーバーは、クライアントアプリケーションのフィンガープリントを保存し、クライアントの接続時にピアーグループを管理します。ただし、すべてのデータはクライアント(ピアー)間でやり取りされ、サーバーへは戻されません。

アプリケーションの実行時に、テキスト入力フィールドに任意のグループ名を入力できます。GroupSpecifier クラスはこのグループ名(および設定済みの GroupSpecifier プロパティ)を使用して、グループの永続的な固有名となるストリングを作成します。他のクライアントをグループに接続するには、そのクライアントも同じグループ名を使用する必要があります。例えば、クライアント A が「firstmesh」というグループ名を使用する場合、クライアント A と通信したい他のクライアントも、グループ名「firstmesh」を使用する必要があります。クライアント B が「kite」というグループ名を使用している場合、接続は成功しますが、新しいグループが作成され、クライアント B はクライアント A および「firstmesh」グループに属する他のクライアントとは通信できません。

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%" applicationComplete="OnApplicationComplete()"> <mx:Script> <![CDATA[ private var netConnection:NetConnection = null; private var netStream:NetStream = null; private var netGroup:NetGroup = null; private var video:Video = null; private var sequenceNumber:uint = 0; private var resizeTimer:Timer = null; private const SERVER:String = "rtmfp://fms.example.com/someapp"; [Bindable] private var connected:Boolean = false; [Bindable] private var joinedGroup:Boolean = false; private function OnApplicationComplete():void { userName.text = "user " + int(Math.random() * 65536); groupName.text = "channel" + (int(Math.random() * 899) + 101); resizeTimer = new Timer(2000.0); resizeTimer.addEventListener(TimerEvent.TIMER, DoResizeVideo); resizeTimer.start(); } private function StatusMessage(msg:Object):void { statusLog.text += msg; statusLog.verticalScrollPosition = statusLog.textHeight; statusLog.validateNow(); } private function NetStatusHandler(e:NetStatusEvent):void { StatusMessage(e.info.code); switch(e.info.code) { case "NetConnection.Connect.Success": OnConnect(); break; case "NetConnection.Connect.Closed": case "NetConnection.Connect.Failed": case "NetConnection.Connect.Rejected": case "NetConnection.Connect.AppShutdown": case "NetConnection.Connect.InvalidApp": OnDisconnect(); break; case "NetStream.Connect.Success": // e.info.stream OnNetStreamConnect(); break; case "NetStream.Connect.Rejected": // e.info.stream case "NetStream.Connect.Failed": // e.info.stream DoDisconnect(); break; case "NetGroup.Connect.Success": // e.info.group OnNetGroupConnect(); break; case "NetGroup.Connect.Rejected": // e.info.group case "NetGroup.Connect.Failed": // e.info.group DoDisconnect(); break; case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID OnPosting(e.info.message); break; case "NetStream.MulticastStream.Reset": case "NetStream.Buffer.Full": DoResizeVideo(); break; case "NetGroup.SendTo.Notify": // e.info.message, e.info.from, e.info.fromLocal case "NetGroup.LocalCoverage.Notify": // case "NetGroup.Neighbor.Connect": // e.info.neighbor case "NetGroup.Neighbor.Disconnect": // e.info.neighbor case "NetGroup.MulticastStream.PublishNotify": // e.info.name case "NetGroup.MulticastStream.UnpublishNotify": // e.info.name case "NetGroup.Replication.Fetch.SendNotify": // e.info.index case "NetGroup.Replication.Fetch.Failed": // e.info.index case "NetGroup.Replication.Fetch.Result": // e.info.index, e.info.object case "NetGroup.Replication.Request": // e.info.index, e.info.requestID default: break; } } private function DoConnect():void { StatusMessage("Connecting to \"" + SERVER + "\" ...\n"); netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); netConnection.connect(SERVER); } private function OnConnect():void { var groupSpecifier:GroupSpecifier; StatusMessage("Connected\n"); connected = true; groupSpecifier = new GroupSpecifier("max2009lab/" + groupName.text); groupSpecifier.multicastEnabled = true; groupSpecifier.postingEnabled = true; groupSpecifier.serverChannelEnabled = true; netStream = new NetStream(netConnection, groupSpecifier.groupspecWithAuthorizations()); netStream.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations()); netGroup.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); StatusMessage("Join \"" + groupSpecifier.groupspecWithAuthorizations() + "\"\n"); } private function OnNetStreamConnect():void { netStream.client = this; var mic:Microphone = Microphone.getMicrophone(); if(mic) { mic.codec = SoundCodec.SPEEX; mic.setSilenceLevel(0); netStream.attachAudio(mic); StatusMessage("got microphone\n"); } var camera:Camera = Camera.getCamera(); if(camera) { camera.setMode(320, 240, 10); camera.setQuality(30000, 0); camera.setKeyFrameInterval(15); videoDisplay.attachCamera(camera); videoDisplay.maintainAspectRatio = true; netStream.attachCamera(camera); StatusMessage("got camera\n"); } netStream.publish("stream"); } private function OnNetGroupConnect():void { joinedGroup = true; } private function DoDisconnect():void { if(netConnection) netConnection.close(); videoDisplay.attachCamera(null); } private function OnDisconnect():void { StatusMessage("Disconnected\n"); netConnection = null; netStream = null; netGroup = null; connected = false; joinedGroup = false; } private function ClearChatText():void { chatText.text = ""; } private function DoPost():void { var message:Object = new Object; message.user = userName.text; message.text = chatText.text; message.sequence = sequenceNumber++; message.sender = netConnection.nearID; netGroup.post(message); StatusMessage("==> " + chatText.text + "\n"); chatText.callLater(ClearChatText); } private function OnPosting(message:Object):void { StatusMessage("<" + message.user + "> " + message.text + "\n"); } private function DoResizeVideo(ignored:* = null):void { if(video) { if( (0 == video.videoHeight) || (0 == video.videoWidth) ) { video.height = videoDisplay.height; video.width = videoDisplay.width; video.x = 0; video.y = 0; } else { var videoAspect:Number = Number(video.videoWidth) / Number(video.videoHeight); var displayAspect:Number = Number(videoDisplay.width) / Number(videoDisplay.height); var adjustFactor:Number; if(videoAspect >= displayAspect) // video is wider than display { adjustFactor = Number(video.videoWidth) / Number(videoDisplay.width); video.width = videoDisplay.width; video.height = int(Number(video.videoHeight) / adjustFactor); video.x = 0; video.y = int((videoDisplay.height - video.height) / 2); } else { adjustFactor = Number(video.videoHeight) / Number(videoDisplay.height); video.height = videoDisplay.height; video.width = int(Number(video.videoWidth) / adjustFactor); video.x = int((videoDisplay.width - video.width) / 2); video.y = 0; } } } } public function onPlayStatus(info:Object):void {} public function onMetaData(info:Object):void {} public function onCuePoint(info:Object):void {} public function onTextData(info:Object):void {} public function ValidateConnectAllowed(isConnected:Boolean, groupNameText:String):Boolean { return (!isConnected) && (groupNameText.length > 0); } ]]> </mx:Script> <mx:VBox top="10" right="10" left="10" bottom="10" verticalGap="6"> <mx:HBox width="100%"> <mx:Text text="Group:"/> <mx:TextInput id="groupName" width="100%" text="default" enabled="{!connected}"/> <mx:Button label="Connect" click="DoConnect()" enabled="{ValidateConnectAllowed(connected, groupName.text)}" /> <mx:Button label="Disconnect" click="DoDisconnect()" enabled="{connected}" /> </mx:HBox> <mx:VideoDisplay id="videoDisplay" width="320" height="240" resize="DoResizeVideo()"/> <mx:TextArea id="statusLog" width="100%" height="100%"/> <mx:HBox width="100%"> <mx:TextInput id="userName" width="160" /> <mx:TextInput id="chatText" width="100%" enabled="{joinedGroup}" enter="DoPost()"/> </mx:HBox> </mx:VBox> </mx:Application>
flash.net.GroupSpecifierflash.net.NetStream「NetGroup」で始まる flash.events.NetStatusEvent info.code 値。netStatus NetGroup オブジェクトが、そのステータスまたはエラーの状況をレポートするときに送出されます。flash.events.NetStatusEvent.NET_STATUSflash.events.NetStatusEvent NetGroup オブジェクトが、そのステータスまたはエラーの状況をレポートするときに送出されます。netStatus イベントには info プロパティが含まれます。info プロパティは、接続試行が成功したかどうかなど、イベントに関する情報を含むオブジェクトです。 flash.events.NetStatusEvent.infoNetGroup 指定された NetConnection オブジェクトに新しい NetGroup を構築し、それを groupspec で指定されたグループに結合します。NetConnection インスタンスは接続されていません。 ArgumentErrorArgumentErrorgroupspec は無効です。 ErrorErrorconnectionflash.net:NetConnectionNetConnection オブジェクトです。 groupspecString結合する RTMFP ピアーツーピアーグループを指定するストリング(このメンバーの名前、機能、制限、および権限を含む)。 new NetGroup(myConnection, myGroupSpecifier.groupspecWithAuthorizations()); 指定された NetConnection オブジェクトに新しい NetGroup を構築し、それを指定されたグループに結合します。 指定された NetConnection オブジェクトに新しい NetGroup を構築し、それを groupspec で指定されたグループに結合します。

ほとんどの場合、groupspec にはローカルシステムでネットワークアップリンクを使用する可能性があります。NetStream または NetGroup オブジェクトが groupspec を使用して構築されている場合、プライバシーダイアログが表示されます。このダイアログにより、この接続をユーザーのピアーとのデータ共有に使用できるかどうかが確認されます。ユーザーが「このドメインでの使用を許可する」をクリックすると、次回ユーザーがこのアプリケーションに接続するときにこのダイアログは表示されません。ピアー対応ネットワークを許可しなかった場合、グループ内のピアー機能(ポスティング、転送、オブジェクトレプリケーションおよびマルチキャスト)はすべて無効になります。許可された場合、info オブジェクトの code プロパティの NetGroup.Connect.Success によって、NetStatusEvent が NetConnection のイベントリスナーに送信されます。拒否された場合、code プロパティは NetGroup.Connect.Rejected になります。NetGroup.Connect.Success イベントが受信されるまで、NetGroup オブジェクトの任意のメソッドを呼び出そうとすると、例外が発生します。

注意:クライアントがネイティブ IP マルチキャストストリームにサブスクライブした場合、セキュリティダイアログは表示されません。

flash.events.NetStatusEvent.info.code="NetGroup.Connect.Success"flash.events.NetStatusEvent.info.code="NetGroup.Connect.Rejected"flash.net.NetConnectionflash.net.GroupSpecifier
addHaveObjects このノードがネイバーにアドバタイズするオブジェクト(要求を満たすオブジェクト)のセットに、startIndex から endIndex の範囲に含まれるオブジェクトを追加します。このメソッドに渡される数は 0 より小さいか、9007199254740992 より大きくなります。 RangeErrorRangeErrorstartIndexNumberHave セットに追加するオブジェクトインデックスの範囲の始まり。 endIndexNumberHave セットに追加するオブジェクトインデックスの範囲の終わり。 このノードがネイバーにアドバタイズするオブジェクト(要求を満たすオブジェクト)のセットに、オブジェクトを追加します。 このノードがネイバーにアドバタイズするオブジェクト(要求を満たすオブジェクト)のセットに、startIndex から endIndex の範囲に含まれるオブジェクトを追加します。デフォルトでは、Have セットは空です。インデックスは、0 ~ 9007199254740992 の整数である必要があります。

オブジェクトのレプリケーションについて詳しくは、『Flash Media Server Developer’s Guide』の「Replicate an object within a group」を参照してください。

このメソッドは NetStatusEvent を info オブジェクトの code プロパティの NetGroup.Replication.Request で NetGroup のイベントリスナーに送信します。

注意:このメソッドを呼び出す前に、NetGroup.Neighbor.Connect イベントをテストしてください。

removeHaveObjects()writeRequestedObject()denyRequestedObject()flash.events.NetStatusEvent.info.code="NetGroup.Replication.Request"
addMemberHint その peerID がグループのメンバーであることを指定するレコードを手動で追加します。成功の場合は TRUE、エラーの場合は FALSE。 BooleanpeerIDString潜在的なネイバーのセットに追加する peerID。 その peerID がグループのメンバーであることを指定するレコードを手動で追加しますが、すぐに接続する必要はありません。 その peerID がグループのメンバーであることを指定するレコードを手動で追加します。トポロジーに必要な場合にのみ、すぐに接続が試行されます。 addNeighbor()addNeighbor 既にグループに存在しているはずの指定された peerID へ直ちに直接接続することによって、手動でネイバーを追加します。成功の場合は TRUE、エラーの場合は FALSE。 BooleanpeerIDStringすぐに接続する peerID。 指定された peerID にすぐに直接接続することによって、ネイバーを手動で追加します。 既にグループに存在しているはずの指定された peerID へ直ちに直接接続することによって、ネイバーを手動で追加します。この直接接続は、トポロジーに必要ない場合、後で切断される場合があります。 addMemberHint()addWantObjects 取得するオブジェクトのセットに、startIndex から endIndex の範囲にあるオブジェクトを追加します。このメソッドに渡される数は 0 より小さいか、9007199254740992 より大きくなります。 RangeErrorRangeErrorstartIndexNumberWant セットに追加するオブジェクトインデックスの範囲の始まり。 endIndexNumberWant セットに追加するオブジェクトインデックスの範囲の終わり。 取得するオブジェクトのセットにオブジェクトを追加します。 取得するオブジェクトのセットに、startIndex から endIndex の範囲にあるオブジェクトを追加します。インデックスは、0 ~ 9007199254740992 の整数である必要があります。デフォルトでは、Want セットは空です。

オブジェクトのレプリケーションについて詳しくは、『Flash Media Server Developer’s Guide』の「Replicate an object within a group」を参照してください。

このメソッドは、info.code プロパティでNetGroup.Replication.Fetch.SendNotify が指定されている NetStatusEvent を、NetGroup のイベントリスナーに送信します。このイベントの後には、NetGroup.Replication.Fetch.Failed または NetGroup.Replication.Fetch.Result イベントが続きます。

注意:このメソッドを呼び出す前に、NetGroup.Neighbor.Connect イベントをテストしてください。

removeWantObjects()flash.events.NetStatusEvent.info.code="NetGroup.Replication.Fetch.SendNotify"flash.events.NetStatusEvent.info.code="NetGroup.Replication.Fetch.Failed"flash.events.NetStatusEvent.info.code="NetGroup.Replication.Fetch.Result"
close グループから切断し、この NetGroup を閉じます。 グループから切断し、この NetGroup を閉じます。この NetGroup はこのメソッドを呼び出した後、使用できません。 convertPeerIDToGroupAddress peerID を sendToNearest() メソッドで使用するために適切なグループアドレスに変換します。peerID のグループアドレス。 StringpeerIDString変換する peerID です。 peerID を sendToNearest() メソッドで使用するために適切なグループアドレスに変換します。 peerID を sendToNearest() メソッドで使用するために適切なグループアドレスに変換します。 flash.net.NetConnection.farIDflash.net.NetConnection.nearIDflash.net.NetStream.farIDsendToNearest()denyRequestedObject 以前に addHaveObjects() でアドバタイズされたオブジェクトの NetStatusEvent NetGroup.Replication.Request で受信した要求を拒否します。requestIDintNetGroup.Replication.Request イベントで提供される要求識別子。 以前にアドバタイズされたオブジェクトに対する要求を拒否します。 以前に addHaveObjects() でアドバタイズされたオブジェクトの NetStatusEvent NetGroup.Replication.Request で受信した要求を拒否します。この要求が Have セットから取り下げられない限り、または取り下げられるまで、要求元によってこのオブジェクトが再び要求される可能性があります。

オブジェクトのレプリケーションについて詳しくは、『Flash Media Server Developer’s Guide』の「Replicate an object within a group」を参照してください。

注意:このメソッドを呼び出す前に、NetGroup.Neighbor.Connect イベントをテストしてください。

addHaveObjects()writeRequestedObject()flash.events.NetStatusEvent.info.code="NetGroup.Replication.Request"
post グループ内のすべてのメンバーにメッセージを送信します。アップロードされた場合のメッセージの messageID です。エラーの場合は null になります。messageID はメッセージを直列化した raw バイトの 16 進数の SHA256 です。 StringmessageObjectグループ内の他のすべてのメンバーに送信するメッセージ。 グループ内のすべてのメンバーにメッセージを送信します。このメソッドを呼び出すには、NetGroup コンストラクターに渡される groupspec 内で、GroupSpecifier.postingEnabled プロパティが true に設定されている必要があります。詳細については、『Flash Media Server Developer’s Guide』の「Post messages to a group」を参照してください。

すべてのメッセージは一意である必要があり、以前にアップロードされたメッセージと同一のメッセージはアップロードされない場合があります。シーケンス番号を使用して、メッセージを一意にします。

メッセージの配信は順序付けられません。メッセージの配信は保証されません。

メッセージは AMF でシリアル化されます。メッセージの型は、Object、int、Number、String のいずれかです。メッセージは MovieClip にはできません。

このメソッドは NetStatusEvent を info.code プロパティの NetGroup.Posting.Notify で NetGroup のイベントリスナーに送信します。「NetGroup.Posting.Notify」イベントは、クライアント上とサーバー上の両方の NetGroup に送信されます。

注意:このメソッドを呼び出す前に、NetGroup.Neighbor.Connect イベントをテストしてください。

これは、ピアーツアーピアーネットワークを使用するシンプルなテキストチャットアプリケーションです。アプリケーションは RTMFP で Flash Media Server に接続します。サーバーは、クライアントアプリケーションのフィンガープリントを保存し、クライアントの接続時にピアーグループを管理します。ただし、すべてのデータはクライアント(ピアー)間でやり取りされ、サーバーへは戻されません。

アプリケーションの実行時に、テキスト入力フィールドに任意のグループ名を入力できます。GroupSpecifier クラスはこのグループ名(および設定済みの GroupSpecifier プロパティ)を使用して、グループの永続的な固有名となるストリングを作成します。他のクライアントをグループに接続するには、そのクライアントも同じグループ名を使用する必要があります。例えば、クライアント A が「firstmesh」というグループ名を使用する場合、クライアント A と通信したい他のクライアントも、グループ名「firstmesh」を使用する必要があります。クライアント B が「kite」というグループ名を使用している場合、接続は成功しますが、新しいグループが作成され、クライアント B はクライアント A および「firstmesh」グループに属する他のクライアントとは通信できません。

この例を実行するには、Button、Label、TextInput、TextArea の各コンポーネントを Flash Professional のライブラリに追加します。

package { import flash.display.Sprite; import flash.events.TextEvent; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import fl.events.ComponentEvent; import fl.controls.Label; import fl.controls.Button; import fl.controls.TextInput; import fl.controls.TextArea; import flash.text.TextFieldAutoSize; import flash.net.*; public class NetGroupPostExample extends Sprite{ private var connectButton:Button; private var disconnectButton:Button; private var groupNameText:TextInput; private var userNameText:TextInput; private var chatText:TextInput; private var statusLog:TextArea; private var groupLabel:Label; private var userLabel:Label; private var netConnection:NetConnection = null; private var netGroup:NetGroup = null; private var sequenceNumber:uint = 0; private var connected:Boolean = false; private var joinedGroup:Boolean = false; private const SERVER:String = "rtmfp://fms.example.com/someapp"; public function NetGroupPostExample() { DoUI(); } // Writes messages to the TextArea. private function StatusMessage(msg:Object):void{ statusLog.text += msg; statusLog.verticalScrollPosition = statusLog.textHeight; statusLog.validateNow(); } // Handles all NetStatusEvents for the NetConnection and the NetGroup. // This code includes cases it doesn't handle so you can see the cases // and their info objects for learning purposes. private function NetStatusHandler(e:NetStatusEvent):void{ StatusMessage(e.info.code + "\n"); switch(e.info.code){ case "NetConnection.Connect.Success": connectButton.enabled = false; disconnectButton.enabled = true; OnConnect(); break; case "NetConnection.Connect.Closed": OnDisconnect(); break; case "NetGroup.Connect.Success": // e.info.group OnNetGroupConnect(); break; case "NetGroup.Connect.Rejected": // e.info.group case "NetGroup.Connect.Failed": // e.info.group break; case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID OnPosting(e.info.message); break; case "NetStream.MulticastStream.Reset": case "NetStream.Buffer.Full": break; case "NetGroup.SendTo.Notify": // e.info.message, e.info.from, e.info.fromLocal case "NetGroup.LocalCoverage.Notify": // case "NetGroup.Neighbor.Connect": // e.info.neighbor case "NetGroup.Neighbor.Disconnect": // e.info.neighbor case "NetGroup.MulticastStream.PublishNotify": // e.info.name case "NetGroup.MulticastStream.UnpublishNotify": // e.info.name case "NetGroup.Replication.Fetch.SendNotify": // e.info.index case "NetGroup.Replication.Fetch.Failed": // e.info.index case "NetGroup.Replication.Fetch.Result": // e.info.index, e.info.object case "NetGroup.Replication.Request": // e.info.index, e.info.requestID default: break; } } // Creates a NetConnection to Flash Media Server if the app isn't already connected // and if there's a group name in the TextInput field. private function DoConnect(e:MouseEvent):void{ if(!connected && (groupNameText.length > 0)){ StatusMessage("Connecting to \"" + SERVER + "\" ...\n"); netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); // To connect to Flash Media Server, pass the server name. netConnection.connect(SERVER); } else { StatusMessage("Enter a group name"); } } // Called in the "NetConnection.Connect.Success" case in the NetStatusEvent handler. private function OnConnect():void{ StatusMessage("Connected\n"); connected = true; // Create a GroupSpecifier object to pass to the NetGroup constructor. // The GroupSpecifier determines the properties of the group var groupSpecifier:GroupSpecifier; groupSpecifier = new GroupSpecifier("aslrexample/" + groupNameText.text); groupSpecifier.postingEnabled = true; groupSpecifier.serverChannelEnabled = true; netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations()); netGroup.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); StatusMessage("Join \"" + groupSpecifier.groupspecWithAuthorizations() + "\"\n"); } private function OnNetGroupConnect():void{ joinedGroup = true; } private function DoDisconnect(e:MouseEvent):void{ if(netConnection){ netConnection.close(); } } private function OnDisconnect():void{ StatusMessage("Disconnected\n"); netConnection = null; netGroup = null; connected = false; joinedGroup = false; connectButton.enabled = true; disconnectButton.enabled = false; } private function ClearChatText():void{ chatText.text = ""; } // Called when you the chatText field has focus and you press Enter. private function DoPost(e:ComponentEvent):void{ if(joinedGroup){ var message:Object = new Object; message.user = userNameText.text; message.text = chatText.text; message.sequence = sequenceNumber++; message.sender = netConnection.nearID; netGroup.post(message); StatusMessage("==> " + chatText.text + "\n"); } else { StatusMessage("Click Connect before sending a chat message"); } ClearChatText(); } private function OnPosting(message:Object):void{ StatusMessage("<" + message.user + "> " + message.text + "\n"); } private function DoUI():void { groupLabel = new Label(); groupLabel.move(20, 10); groupLabel.autoSize = TextFieldAutoSize.LEFT groupLabel.text = "Group name:" addChild(groupLabel); groupNameText = new TextInput(); groupNameText.move(90, 10); groupNameText.text = "channel" + (int(Math.random() * 899) + 101); addChild(groupNameText); connectButton = new Button(); connectButton.addEventListener(MouseEvent.CLICK, DoConnect); connectButton.move(205, 10); connectButton.label = "Connect"; addChild(connectButton); disconnectButton = new Button(); disconnectButton.addEventListener(MouseEvent.CLICK, DoDisconnect); disconnectButton.move(310, 10); disconnectButton.label = "Disconnect"; disconnectButton.enabled = false; addChild(disconnectButton); statusLog = new TextArea(); statusLog.move(30, 38); statusLog.width = 360; statusLog.height = 215; statusLog.editable = false; addChild(statusLog); userLabel = new Label(); userLabel.move(20, 270); userLabel.autoSize = TextFieldAutoSize.LEFT userLabel.text = "User name:" addChild(userLabel); userNameText = new TextInput(); userNameText.move(80, 270); userNameText.text = "user " + int(Math.random() * 65536); addChild(userNameText); chatText = new TextInput(); chatText.addEventListener(ComponentEvent.ENTER, DoPost); chatText.move(185, 270); chatText.maxChars = 255; chatText.width = 215; addChild(chatText); } public function onPlayStatus(info:Object):void {} public function onMetaData(info:Object):void {} public function onCuePoint(info:Object):void {} public function onTextData(info:Object):void {} } }
flash.events.NetStatusEvent.info.code="NetGroup.Posting.Notify"
removeHaveObjects このノードがネイバーにアドバタイズするオブジェクト(要求を満たすオブジェクト)のセットから、startIndex から endIndex の範囲に含まれるオブジェクトを削除します。このメソッドに渡される数は 0 より小さいか、9007199254740992 より大きくなります。 RangeErrorRangeErrorstartIndexNumberHave セットから削除するオブジェクトインデックスの範囲の始まり。 endIndexNumberHave セットから削除するオブジェクトインデックスの範囲の終わり。 このノードがネイバーにアドバタイズするオブジェクト(要求を満たすオブジェクト)のセットからオブジェクトを削除します。 このノードがネイバーにアドバタイズするオブジェクト(要求を満たすオブジェクト)のセットから、startIndex から endIndex の範囲に含まれるオブジェクトを削除します。インデックスは、0 ~ 9007199254740992 の整数である必要があります。

オブジェクトのレプリケーションについて詳しくは、『Flash Media Server Developer’s Guide』の「Replicate an object within a group」を参照してください。

注意:このメソッドを呼び出す前に、NetGroup.Neighbor.Connect イベントをテストしてください。

addHaveObjects()
removeWantObjects 取得するオブジェクトのセットから、startIndex から endIndex の範囲に含まれるオブジェクトを削除します。このメソッドに渡される数は 0 より小さいか、9007199254740992 より大きくなります。 RangeErrorRangeErrorstartIndexNumberWant セットから削除するオブジェクトインデックスの範囲の始まり。 endIndexNumberWant セットから削除するオブジェクトインデックスの範囲の終わり。 取得するオブジェクトのセットからオブジェクトを削除します。 取得するオブジェクトのセットから、startIndex から endIndex の範囲に含まれるオブジェクトを削除します。インデックスは、0 ~ 9007199254740992 の整数である必要があります。

オブジェクトのレプリケーションについて詳しくは、『Flash Media Server Developer’s Guide』の「Replicate an object within a group」を参照してください。

注意:このメソッドを呼び出す前に、NetGroup.Neighbor.Connect イベントをテストしてください。

addWantObjects()
sendToAllNeighbors すべてのネイバーにメッセージを送信します。送信の成功またはエラーを示す列挙クラス NetGroupSendResult のプロパティ。 StringmessageObject送信するメッセージです。 すべてのネイバーにメッセージを送信します。1 つ以上のネイバーが選択された場合、NetGroupSendResult.SENT を返します。

メッセージのルーティングについて詳しくは、『Flash Media Server Developer’s Guide』の「Route messages directly to a peer」を参照してください。

ノードがメッセージを受信すると、NetStatusEvent が info オブジェクトの code プロパティの NetGroup.SendTo.Notify オブジェクトで NetGroup のイベントリスナーに送信されます。

注意:このメソッドを呼び出す前に、NetGroup.Neighbor.Connect イベントをテストしてください。

sendToNeighbor()flash.events.NetStatusEvent.info.code="NetGroup.SendTo.Notify"flash.net.NetGroupSendResult
sendToNearest 指定されたグループアドレスに最も近いネイバー(ローカルノード)にメッセージを送信します。送信の成功またはエラーを示す列挙クラス NetGroupSendResult のプロパティ。 StringmessageObject送信するメッセージです。 groupAddressStringメッセージの配信先のグループアドレス。 指定されたグループアドレスに最も近いネイバー(ローカルノード)にメッセージを送信します。リング全体のネイバーを考慮します。メッセージが宛先に正しく送信された場合、NetGroupSendResult.SENT を返します。

メッセージのルーティングについて詳しくは、『Flash Media Server Developer’s Guide』の「Route messages directly to a peer」を参照してください。

ノードがメッセージを受信すると、NetStatusEvent が info オブジェクトの code プロパティの NetGroup.SendTo.Notify オブジェクトで NetGroup のイベントリスナーに送信されます。

注意:このメソッドを呼び出す前に、NetGroup.Neighbor.Connect イベントをテストしてください。

convertPeerIDToGroupAddress()receiveModeflash.net.NetGroupSendResultflash.events.NetStatusEvent.info.code="NetGroup.SendTo.Notify"
sendToNeighbor sendMode パラメーターで指定されたネイバーにメッセージを送信します。送信の成功またはエラーを示す列挙クラス NetGroupSendResult のプロパティ。 StringmessageObject送信するメッセージです。 sendModeStringメッセージの送信先のネイバーを指定する列挙クラス NetGroupSendMode のプロパティ。 sendMode パラメーターで指定されたネイバーにメッセージを送信します。 sendMode パラメーターで指定されたネイバーにメッセージを送信します。要求された宛先にメッセージが正しく送信された場合、NetGroupSendResult.SENT を返します。

メッセージのルーティングについて詳しくは、『Flash Media Server Developer’s Guide』の「Route messages directly to a peer」を参照してください。

ノードがメッセージを受信すると、NetStatusEvent が info オブジェクトの code プロパティの NetGroup.SendTo.Notify オブジェクトで NetGroup のイベントリスナーに送信されます。

注意:このメソッドを呼び出す前に、NetGroup.Neighbor.Connect イベントをテストしてください。

sendToAllNeighbors()flash.events.NetStatusEvent.info.code="NetGroup.SendTo.Notify"flash.net.NetGroupSendModeflash.net.NetGroupSendResult
writeRequestedObject 以前に addHaveObjects() メソッドで通知したオブジェクトの NetStatusEvent NetGroup.Replication.Request で受信した要求を満たします。requestIDintNetGroup.Replication.Request イベントで提供される要求識別子。 objectObjectNetGroup.Replication.Request イベントで指定されたインデックスに対応するオブジェクト。 以前に通知されたオブジェクトの要求を満たします。 以前に addHaveObjects() メソッドで通知したオブジェクトの NetStatusEvent NetGroup.Replication.Request で受信した要求を満たします。object には、Object、int、Number、String のいずれかを使用できます。object には MovieClip は指定できません。

オブジェクトのレプリケーションについて詳しくは、『Flash Media Server Developer’s Guide』の「Replicate an object within a group」を参照してください。

注意:このメソッドを呼び出す前に、NetGroup.Neighbor.Connect イベントをテストしてください。

addHaveObjects()denyRequestedObject()flash.events.NetStatusEvent.info.code="NetGroup.Replication.Request"
estimatedMemberCount ローカルネイバーフッドの密度に基づき、グループアドレスが均等に分配されることを前提にして、グループの推定メンバー数を指定します。Numberグループの推定メンバー数を指定します。 ローカルネイバーフッドの密度に基づき、グループアドレスが均等に分配されることを前提にして、グループの推定メンバー数を指定します。 neighborCountinfo NetGroupInfo オブジェクトを返します。このオブジェクトのプロパティに、NetGroup の RTMFP ピアーツーピアーデータ転送に関するサービスの質(QoS)の統計が示されます。flash.net:NetGroupInfoNetGroupInfo オブジェクトを返します。このオブジェクトのプロパティにサービスの質(QoS)の統計が示されます。 NetGroupInfo オブジェクトを返します。このオブジェクトのプロパティに、NetGroup の RTMFP ピアーツーピアーデータ転送に関するサービスの質(QoS)の統計が示されます。 flash.net.NetGroupInfolocalCoverageFrom このノードが「最も近く」にあって管理しているグループアドレスの範囲の始まりを指定します。String このノードが「最も近く」にあって管理しているグループアドレスの範囲の始まりを指定します。この範囲は、増分方向でグループアドレス ring mod 2256 によって指定されます。 localCoverageToreceiveModesendToNearest()flash.events.NetStatusEvent.info.code="NetGroup.LocalCoverage.Notify"localCoverageTo このノードが「最も近く」にあって管理しているグループアドレスの範囲の終わりを指定します。String このノードが「最も近く」にあって管理しているグループアドレスの範囲の終わりを指定します。この範囲は、増分方向でグループアドレス ring mod 2256 によって指定されます。 localCoverageFromreceiveModesendToNearest()flash.events.NetStatusEvent.info.code="NetGroup.LocalCoverage.Notify"neighborCount このノードが直接接続されているグループメンバーの数を指定します。Numberこのノードが直接接続されているグループメンバーの数を指定します。 このノードが直接接続されているグループメンバーの数を指定します。 addNeighbor()estimatedMemberCountflash.events.NetStatusEvent.info.code="NetGroup.Neighbor.Connect"flash.events.NetStatusEvent.info.code="NetGroup.Neighbor.Disconnect"receiveMode NetGroupReceiveMode enum クラスの値の 1 つとして、ノードの配信受信モードを指定します。String NetGroupReceiveMode enum クラスの値の 1 つとして、ノードの配信受信モードを指定します。 localCoverageFromlocalCoverageTosendToNearest()flash.net.NetGroupReceiveModereplicationStrategy オブジェクトレプリケーションのフェッチ方法を指定します。String オブジェクトレプリケーションのフェッチ方法を指定します。値は、NetGroupReplicationStrategy クラスに列挙された値の 1 つです。 flash.net.NetGroupReplicationStrategy
getClassByAlias registerClassAlias() メソッドの呼び出しを介して以前にエイリアスを登録したクラスを検索します。エイリアスが登録されていません。 ReferenceErrorReferenceError指定されたエイリアスに関連付けられたクラスです。見つからない場合は、例外がスローされます。 ClassaliasNameString検索するエイリアスです。 既に registerClassAlias() メソッドの呼び出しによってエイリアスが登録されているクラスを検索します。

このメソッドは flash.utils.getDefinitionByName() メソッドとやり取りを行いません。

registerClassAlias()
navigateToURL Flash Player のコンテナを含むアプリケーション(通常はブラウザー)でウィンドウを開くか、置き換えます。request オブジェクトの digest プロパティが null ではありません。URLRequest オブジェクトの digest プロパティを設定できるのは、URLLoader.load() メソッドを呼び出して SWZ ファイル(Adobe プラットフォームコンポーネント)を読み込む場合のみです。 IOErrorflash.errors:IOErrorFlash Player(および Adobe AIR のアプリケーションサンドボックスコンテンツ以外)では、このエラーは次の条件でスローされます。
  • 信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。この問題は、この SWF ファイルを local-with-networking または trusted として分類し直すことで回避できます。
  • スクリプティング疑似 URL を評価するために試行された移動操作です。ただし、含まれるドキュメント(一般にブラウザー内の HTML ドキュメント)はアクセス権限が与えられていないサンドボックスからのものです。この問題は、含まれるドキュメントに allowScriptAccess="always" を指定することで回避できます。
  • HTML ファイルと SWF ファイルのドメインが一致しないとき、特別なウィンドウ "_self""_top"、または "_parent" の移動は、allowScriptAccess"none" または "sameDomain" に設定されている HTML ページに SWF ファイルがある場合はできません。
  • デフォルト以外の名前を持つウィンドウを、ローカルファイルシステムのサンドボックスにある SWF ファイル内から移動することはできません。
  • 一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。
SecurityErrorSecurityError
マウスイベントやキー入力イベントなどのユーザー操作に応じてメソッドが呼び出されない場合。この要件は Flash Player のコンテンツおよび Adobe AIR のアプリケーションサンドボックスコンテンツ以外にのみ適用されます。 ErrorErrorrequestflash.net:URLRequest移動先の URL を指定する URLRequest オブジェクトです。

Adobe AIR で実行中のコンテンツの場合、navigateToURL() 関数を使用すると、ランタイムでは、POST メソッドを使用する URLRequest(method プロパティが URLRequestMethod.POST に設定されているもの)は、GET メソッドとして処理されます。

windowStringnullrequest パラメーターで指定されたドキュメントを表示するブラウザーウィンドウまたは HTML フレームです。特定のウィンドウの名前を入力するか、次の値のいずれかを使用します。
  • "_self" は、現在のウィンドウ内の現在のフレームを指定します。
  • "_blank" は、新規ウィンドウを指定します。
  • "_parent" は、現在のフレームの親を指定します。
  • "_top" は、現在のウィンドウ内の最上位のフレームを指定します。

このパラメーターに値を指定しない場合は、新しい空のウィンドウが作成されます。スタンドアローン Flash Player では、新しい("_blank")ウィンドウまたは名前付きのウィンドウのいずれかを指定できます。その他の値は適用されません。

注意:ローカルファイルシステムのサンドボックスで実行される SWF ファイル内のコードが navigateToURL() 関数を呼び出して window パラメーターにカスタムウィンドウ名を指定すると、そのウィンドウ名はランダム名に受け継がれます。"_flashXXXXXXXX" の形式の名前になります。X はそれぞれがランダム 16 進数字を表します。同じセッション内で(含まれるブラウザーウィンドウを閉じるまでに)再度この関数を呼び出して window パラメーターに同じ名前を指定した場合は、同じランダムストリングが使用されます。

Flash Player のコンテナを含むアプリケーション(通常はブラウザー)でウィンドウを開くか、置き換えます。Adobe AIR では、関数によってデフォルトシステム Web ブラウザーで URL が開かれます。

重要なセキュリティメモ

開発者は URL 値を FlashVars などの外部ソースから取得した navigateToURL() 関数に渡すことがよくあります。攻撃側は、クロスサイトスクリプティングなどの攻撃を実行するためにこれらの外部ソースを操作しようとする場合があります。したがって、開発者は URL 値をこの関数に渡す前にすべての URL を検証する必要があります。

URL の適切なデータ検証方法は、アプリケーション全体での URL の使用状況によって異なります。最も一般的なデータ検証方法では、URL が適切なスキームかどうかも検証します。例えば、javascript の意図しない許可です。URL はクロスサイトスクリプティングになる場合があります。URL が独自のドメイン内のものであることを検証することにより、フィッシング攻撃を行うユーザーによってオープンリダイレクタとして SWF ファイルが使用されないようにします。さらにセキュリティを強化するには、URL のパスを検証し、URL が RFC のガイドラインに準拠していることを確認することもできます。

例えば、次に示す簡単なコードの例では、データの検証として、http:// または https:// で始まっていない URL を拒否し、URL が自分のドメイン名に含まれることを確認しています。すべての Web アプリケーションにこの例が適用できるとは限らないため、URL に対して追加のチェックが必要かどうかを検討することをお勧めします。

// AS3 Regular expression pattern match for URLs that start with http:// and https:// plus your domain name. function checkProtocol (flashVarURL:String):Boolean { // Get the domain name for the SWF if it is not known at compile time. // If the domain is known at compile time, then the following two lines can be replaced with a hard coded string. var my_lc:LocalConnection = new LocalConnection(); var domainName:String = my_lc.domain; // Build the RegEx to test the URL. // This RegEx assumes that there is at least one "/" after the // domain. http://www.mysite.com will not match. var pattern:RegExp = new RegExp("^http[s]?\:\\/\\/([^\\/]+)\\/"); var result:Object = pattern.exec(flashVarURL); if (result == null || result[1] != domainName || flashVarURL.length >= 4096) { return (false); } return (true); }

ブラウザー内で実行されるローカルコンテンツの場合、navigateToURL() メソッドを呼び出すときに "javascript:" 擬似プロトコルを(最初のパラメーターとして渡される URLRequest オブジェクトを介して)指定できるのは、SWF ファイルとそれが含まれる Web ページ(存在する場合)が、信頼できるローカルのセキュリティサンドボックス内にある場合のみです。一部のブラウザーでは、javascript プロトコルを navigateToURL() メソッドと共に使用することをサポートしていません。代わりに、call() メソッド(ExternalInterface API)を使用し、JavaScript メソッドを取り込んでいる HTML ページ内で呼び出すことを検討してください。

Flash Player、および Adobe AIR のアプリケーションサンドボックス以外では、一般的な予約ポートに接続することはできません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。

ブラウザーで実行される Flash Player 10 以降では、このメソッドをプログラムで使用してポップアップウィンドウを開く方法は有効でない場合があります。ブラウザー(およびブラウザーの設定)によってはポップアップウィンドウがブロックされる場合があり、すべてのポップアップウィンドウが表示される保証はありません。ただし、ユーザー操作の直接の結果として実行されるコード(マウスのクリックやキー入力イベントのイベントハンドラーなど)に限っては、このクラスを使用してポップアップウィンドウを開く方法が有効です。

Flash Player 10 以降では、"multipart/form-data" などのマルチパート Content-Type にアップロードが含まれていると(アップロードが含まれているかどうかは POST ボディ内の "content-disposition" ヘッダーの "filename" パラメーターで示されます)、そのアップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

  • POST 処理は、マウスのクリックやキーの押下などのユーザーが開始したアクションに応答して実行する必要があります。
  • POST 処理がクロスドメインである(POST ターゲットが、POST 要求を送信中の SWF ファイルと同じサーバー上にない)場合は、クロスドメインアクセスを許可する URL ポリシーファイルをターゲットサーバーが提供する必要があります。

また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

モバイルプラットフォームの AIR では、sms: および tel: URI スキームがサポートされます。Android では、vipaccess:、connectpro: および market: URI スキームがサポートされます。URL 構文は、プラットフォームの規則に従います。例えば、Android では URI スキームを小文字にする必要があります。これらのスキームのいずれかを使用して URL に移動すると、ランタイムによって、スキームを処理するためにデフォルトのアプリケーションで URL が開かれます。そのため、tel:+5555555555 にアクセスすると、入力した指定の番号で電話ダイヤラーが開きます。電話ダイヤラーなどの別のアプリケーションまたはユーティリティは、URL を処理できる必要があります。

次のコードは、Android 上で VIP Access アプリケーションと Connect Pro アプリケーションを呼び出す方法を示しています。

//Invoke the VIP Access Application. navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode")); //Invoke the Connect Pro Application. navigateToURL(new URLRequest("connectpro://"));
次の例では、新しいブラウザーウィンドウで URL http://www.adobe.com を開き、URLVariables オブジェクトで捕捉したユーザーセッションに関するデータを Web サーバーに渡します。 package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; public class NavigateToURLExample extends Sprite { public function NavigateToURLExample() { var url:String = "http://www.adobe.com"; var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "Your Name"; var request:URLRequest = new URLRequest(url); request.data = variables; try { navigateToURL(request); } catch (e:Error) { // handle error here } } } } 次の例は、Flash Player から navigateToURL() メソッドを使用して、新しいブラウザーウィンドウを開く方法を示しています。ActionScriptExamples.com で作成された例。 // Requires // - Button symbol on Stage (or a display object, such as a MovieClip) with instance name "buttonSymbol" // buttonSymbol.addEventListener(MouseEvent.CLICK, buttonSymbol_click); function buttonSymbol_click(evt:MouseEvent):void { var req:URLRequest = new URLRequest("http://www.adobe.com/"); navigateToURL(req, "_blank"); } 次の例は、指定した番号を使用してデバイス電話ダイヤラーを起動するための構文を示しています。 var request:URLRequest = new URLRequest( "tel:+5555555555" ); navigateToURL( request ); 次の例は、指定した受信者を使用してデバイステキストメッセージアプリケーションを起動するための構文を示しています。 var request:URLRequest = new URLRequest( "sms:+5555555555" ); navigateToURL( request ); 次の例は、Android Market アプリケーションを起動するための構文を示しています。Flash Player アプリケーションを検索するための search パラメーターが設定されます。 var request:URLRequest = new URLRequest( "market://search?q=pname:com.adobe.flashplayer" ); navigateToURL( request );
flash.external.ExternalInterface.call()
registerClassAlias AMF(Action Message Format)でオブジェクトがエンコードされるとき、オブジェクトのクラス(タイプ)を維持します。いずれかのパラメーターが null の場合。 TypeErrorTypeErroraliasNameString使用するエイリアスです。 classObjectClass指定されたエイリアスに関連付けられたクラスです。 AMF(Action Message Format)でオブジェクトがエンコードされるとき、オブジェクトのクラス(タイプ)を維持します。オブジェクトを AMF にエンコードする場合、この関数は、そのクラスのエイリアスを保存し、オブジェクトのデコード時にクラスを復元できるようにします。エンコードコンテキストで、オブジェクトのクラスのエイリアスが登録されていない場合、オブジェクトは匿名オブジェクトとしてエンコードされます。同様に、デコードコンテキストで、同じエイリアスが登録されていない場合、デコードするデータに対して、匿名オブジェクトが作成されます。

LocalConnection、ByteArray、SharedObject、NetConnection、および NetStream はすべて、AMF でオブジェクトをエンコードするクラスの例です。

エンコードおよびデコードコンテキストでは、エイリアスに同じクラスを使用する必要はありません。エンコード先およびデコード先のクラスに、ソースクラスによって直列化されたすべてのメンバーが含まれている限り、クラスを意図的に変更できます。

この例では、registerClassAlias() 関数を使用して、クラス ExampleClass のエイリアス(com.example.eg)を登録します。クラスのエイリアスが登録されると、オブジェクトを ExampleClass のインスタンスとして非直列化できるようになり、コードは true を出力します。registerClassAlias() 呼び出しが削除されると、コードは false を出力します。 package { import flash.display.Sprite; import flash.net.registerClassAlias; import flash.utils.ByteArray; public class RegisterClassAliasExample extends Sprite { public function RegisterClassAliasExample() { registerClassAlias("com.example.eg", ExampleClass); var eg1:ExampleClass = new ExampleClass(); var ba:ByteArray = new ByteArray(); ba.writeObject(eg1); ba.position = 0; var eg2:* = ba.readObject(); trace(eg2 is ExampleClass); // true } } } class ExampleClass {}
ObjectEncoding クラス
sendToURL URL リクエストをサーバーに送信しますが、応答は無視します。信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。この問題は、この SWF ファイルを local-with-networking または trusted として分類し直すことで回避できます。 SecurityErrorSecurityError一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。 SecurityErrorSecurityErrorrequestflash.net:URLRequestデータの送信先の URL を指定する URLRequest オブジェクトです。 URL リクエストをサーバーに送信しますが、応答は無視します。

サーバーの応答を調べるには、代わりに URLLoader.load() メソッドを使用します。

一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。

SWF ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含んでいる HTML ページに allowNetworking パラメーター(object タグおよび embed タグのパラメーター)を設定します。

Flash Player 10 以降では、"multipart/form-data" などのマルチパート Content-Type にアップロードが含まれていると(アップロードが含まれているかどうかは POST ボディ内の "content-disposition" ヘッダーの "filename" パラメーターで示されます)、そのアップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

  • POST 処理は、マウスのクリックやキーの押下などのユーザーが開始したアクションに応答して実行する必要があります。
  • POST 処理がクロスドメインである(POST ターゲットが、POST 要求を送信中の SWF ファイルと同じサーバー上にない)場合は、クロスドメインアクセスを許可する URL ポリシーファイルをターゲットサーバーが提供する必要があります。

また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

次の例では、URLVariables オブジェクトで捕捉したユーザーセッションに関するデータを、http://www.yourDomain.com/application.jsp にあるアプリケーションに渡します。 package { import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.sendToURL; public class SendToURLExample extends Sprite { public function SendToURLExample() { var url:String = "http://www.yourDomain.com/application.jsp"; var variables:URLVariables = new URLVariables(); variables.sessionId = new Date().getTime(); variables.userLabel = "Your Name"; var request:URLRequest = new URLRequest(url); request.data = variables; trace("sendToURL: " + request.url + "?" + request.data); try { sendToURL(request); } catch (e:Error) { // handle error here } } } }
NetGroupReceiveMode NetGroupReceiveMode クラスは、NetGroup クラスの receiveMode プロパティに使用される定数値の列挙です。NetGroup クラスの receiveMode プロパティに使用される定数値の列挙。 Object NetGroupReceiveMode クラスは、NetGroup クラスの receiveMode プロパティに使用される定数値の列挙です。 flash.net.NetGroup.receiveModeflash.net.NetGroup.sendToNearest()EXACT ネイバーが使用するアドレスがこのノードのアドレスと正確に一致する場合にのみネイバーからのローカルメッセージをこのノードが受け入れることを指定します。exactString ネイバーが使用するアドレスがこのノードのアドレスと正確に一致する場合にのみネイバーからのローカルメッセージをこのノードが受け入れることを指定します。つまり、このノードは NetGroup.sendToNearest() に渡される groupAddress パラメーターがこのノードのグループアドレスと正確に一致する場合にのみ NetGroup.sendToNearest() 呼び出しに最も近いとみなされます。この値はデフォルトの設定です。

分散転送動作を有効にする場合、この値を NetGroupReceiveMode.NEAREST に設定します。 この値を設定すると、ノードは接続が安定するのを待ってから Directed Routing メッシュに参加します。

flash.net.NetGroup.sendToNearest()
NEAREST このノードのアドレスと正確に一致しないグループアドレスにメッセージを送信するネイバーからのローカルメッセージをこのノードが受け入れるように指定します。nearestString このノードのアドレスと正確に一致しないグループアドレスにメッセージを送信するネイバーからのローカルメッセージをこのノードが受け入れるように指定します。メッセージは、受信モードが NetGroupReceiveMode.NEAREST であるすべてのネイバーの間でこのノードが最も近くにあるときに受信されます。 アドレス管の距離は ring mod 2256 で測定されます。 flash.net.NetGroup.sendToNearest()
Responder Responder クラスは、NetConnection.call() で個々の操作の成否に関するサーバーからの戻り値を処理するために使用されるオブジェクトを提供します。Object Responder クラスは、NetConnection.call() で個々の操作の成否に関するサーバーからの戻り値を処理するために使用されるオブジェクトを提供します。NetConnection.call() を使用すると、現在の操作に固有なネットワーク操作の失敗や現在の接続状態に関する障害が報告されるようになります。エラー処理を容易にする目的から、操作エラーは、NetConnection オブジェクトではなく Responder オブジェクトをターゲットとします。 NetConnection.call()Responder 新しい Responder オブジェクトを作成します。resultFunctionサーバーの呼び出しが成功して結果が返された場合に呼び出される関数です。 statusFunctionnullサーバーがエラーを返したときに呼び出される関数です。 新しい Responder オブジェクトを作成します。Responder オブジェクトを NetConnection.call() に渡して、サーバーからの戻り値を処理します。一方または両方のパラメーターに null を渡すことができます。 URLRequestHeader URLRequestHeader オブジェクトは 1 つの HTTP のリクエストヘッダーをカプセル化し、名前と値のペアを構成します。Object URLRequestHeader オブジェクトは 1 つの HTTP のリクエストヘッダーをカプセル化し、名前と値のペアを構成します。URLRequestHeader オブジェクトは URLRequest クラスの requestHeaders プロパティで使用されます。

Adobe® AIR ® では、アプリケーションセキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツなど)は、どのようなリクエストヘッダーでもエラーなしで使用できます。ただし、異なるセキュリティサンドボックス内の、Adobe AIR で実行されているコンテンツまたは Flash® Player で実行されているコンテンツでは、次のリクエストヘッダーを使用するとランタイムエラーがスローされます。これらの制限対象の項では大文字と小文字は区別されません(例えば、GetgetGET はすべて使用できません)。

Flash Player およびアプリケーションセキュリティサンドボックス外の Adobe AIR コンテンツでは、次のリクエストヘッダーを使用できません。これらの制限対象の項では大文字と小文字は区別されません(例えば、GetgetGET はすべて使用できません)。また、アンダースコア文字が使用されている場合は、ハイフンのある項が該当します(例えば、Content-LengthContent_Length は共に禁止されています)。

Accept-CharsetAccept-EncodingAccept-RangesAgeAllowAllowedAuthorizationCharge-ToConnectConnectionContent-LengthContent-LocationContent-RangeCookieDateDeleteETagExpectGetHeadHostIf-Modified-SinceKeep-AliveLast-ModifiedLocationMax-ForwardsOptionsOriginPostProxy-AuthenticateProxy-AuthorizationProxy-ConnectionPublicPutRangeRefererRequest-RangeRetry-AfterServerTETraceTrailerTransfer-EncodingUpgradeURIUser-AgentVaryViaWarningWWW-Authenticatex-flash-version

URLRequestHeader オブジェクトの長さは制限されています。URLRequestHeader オブジェクトの累積長(name プロパティの長さに value プロパティの長さを足したもの)または URLRequest.requestHeaders プロパティで使用する URLRequestHeader オブジェクトの配列が許容長を超えると、例外がスローされます。

Adobe AIR で実行されているコンテンツでは、ACCEPT ヘッダーに以下を設定します。ただし、URLRequest クラスの ACCEPT ヘッダー(requestHeaders プロパティ)に設定を指定している場合は除きます。

text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, image/png, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, ~~/~~;q=0.5

URLRequest パラメーターを受け取るメッソドすべてが requestHeaders プロパティをサポートしているわけではありません。呼び出すメソッドのマニュアルを参照してください。例えば、FileReference.upload() メソッドおよび FileReference.download() メソッドは、URLRequest.requestHeaders プロパティをサポートしていません。

ブラウザーの制限により、カスタム HTTP リクエストヘッダーは POST リクエストだけをサポートし、GET リクエストはサポートしません。

次の例では、単一の HTTP リクエストヘッダー header を、requestHeaders プロパティの配列に追加します。ヘッダーは、要求されたものがキャッシュされていても、アプリケーションから元のサーバーに要求を転送する必要があることを示します。 package { import flash.display.Sprite; import flash.events.*; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestHeader; import flash.net.URLRequestMethod; import flash.net.URLVariables; public class URLRequestHeaderExample extends Sprite { public function URLRequestHeaderExample() { var loader:URLLoader = new URLLoader(); configureListeners(loader); var header:URLRequestHeader = new URLRequestHeader("pragma", "no-cache"); var request:URLRequest = new URLRequest("http://www.[yourdomain].com/greeting.cfm"); request.data = new URLVariables("name=John+Doe"); request.method = URLRequestMethod.POST; request.requestHeaders.push(header); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
URLRequestURLLoaderURLRequestHeader 1 つの HTTP リクエストヘッダーをカプセル化する新しい URLRequestHeader オブジェクトを作成します。nameStringHTTP リクエストヘッダー名(Content-TypeSOAPAction など)です。 valueStringname プロパティに関連付けられた値(text/plain など)です。 1 つの HTTP リクエストヘッダーをカプセル化する新しい URLRequestHeader オブジェクトを作成します。URLRequestHeader オブジェクトは URLRequest クラスの requestHeaders プロパティで使用されます。 name HTTP リクエストヘッダー名(Content-Type や SOAPAction など)です。String HTTP リクエストヘッダー名(Content-TypeSOAPAction など)です。 value name プロパティに関連付けられた値(text/plain など)です。String name プロパティに関連付けられた値(text/plain など)です。
URLRequestMethod URLRequestMethod クラスは、URLRequest オブジェクトが POST または GET のどちらのメソッドを使用するかを指定する値を提供します。Object URLRequestMethod クラスは、URLRequest オブジェクトがデータをサーバーに送信するときに POST または GET のどちらのメソッドを使用するかを指定する値を提供します。 次の例では、ローカルテキストファイルで検出されたデータをロードして表示します。また、イベント処理情報も出力します。

注意:この例を実行するには、example.txt ファイルを SWF ファイルと同じディレクトリに配置します。このファイルは、いくつかの単語またはテキスト行を含む単純なテキストファイルとする必要があります。

コード例では、次の処理が実行されます。

  1. コンストラクター関数は loader という URLLoader インスタンスを作成します。
  2. loader オブジェクトが configureListeners() メソッドに渡されます。このメソッドは、サポートされる各 URLLoader イベントのリスナーを追加します。
  3. request という URLRequest インスタンスが作成されます。これは、ロードされるファイルの名前を指定します。
  4. 要求の method プロパティは、URLRequestMethod.POST に設定されます。
  5. 次に request オブジェクトが、テキストファイルをロードする loader.load() に渡されます。
  6. URLLoader によるテキストファイルのロードが終了すると、Event.COMPLETE イベントが発生し、completeHandler() メソッドがトリガーされます。completeHandler() メソッドは、テキストファイルのコンテンツである data プロパティを単にトレースします。
package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLRequestMethodExample extends Sprite { public function URLRequestMethodExample() { var loader:URLLoader = new URLLoader(); configureListeners(loader); var request:URLRequest = new URLRequest("example.txt"); request.method = URLRequestMethod.POST; loader.load(request); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
URLRequestURLVariablesDELETE URLRequest オブジェクトが DELETE であることを指定します。DELETEStringURLRequest オブジェクトが DELETE であることを指定します。 URLRequest オブジェクトが DELETE であることを指定します。 GET URLRequest オブジェクトが GET であることを指定します。GETStringURLRequest オブジェクトが GET であることを指定します。 URLRequest オブジェクトが GET であることを指定します。 HEAD URLRequest オブジェクトが HEAD であることを指定します。HEADStringURLRequest オブジェクトが HEAD であることを指定します。 URLRequest オブジェクトが HEAD であることを指定します。 OPTIONS URLRequest オブジェクトが OPTIONS であることを指定します。OPTIONSStringURLRequest オブジェクトが OPTIONS であることを指定します。 URLRequest オブジェクトが OPTIONS であることを指定します。 POST URLRequest オブジェクトが POST であることを指定します。POSTStringURLRequest オブジェクトが POST であることを指定します。 URLRequest オブジェクトが POST であることを指定します。

注意:Adobe AIR で実行中のコンテンツの場合、navigateToURL() 関数を使用すると、ランタイムでは、POST メソッドを使用する URLRequest(method プロパティが URLRequestMethod.POST に設定されているもの)は、GET メソッドとして処理されます。

PUT URLRequest オブジェクトが PUT であることを指定します。PUTStringURLRequest オブジェクトが PUT であることを指定します。 URLRequest オブジェクトが PUT であることを指定します。
FileReference FileReference クラスには、ユーザーのコンピューターとサーバーとの間でファイルをアップロードおよびダウンロードするための手段があります。flash.events:EventDispatcher FileReference クラスには、ユーザーのコンピューターとサーバーとの間でファイルをアップロードおよびダウンロードするための手段があります。オペレーティングシステムのダイアログボックスを使用して、アップロードするファイルや、ダウンロード先の場所をユーザーが選択できるようにします。各 FileReference オブジェクトはユーザーのディスク上にある 1 つのファイルを参照し、ファイルのサイズ、タイプ、名前、作成日、変更日、クリエータータイプ(Macintosh のみ)に関する情報を保持するプロパティを備えています。

注意: Adobe AIR では、FileReference クラスを拡張する File クラスはより多くの機能を提供し、FileReference クラスよりもセキュリティの制限が小さくなっています。

FileReference インスタンスは、次の方法で作成できます。

  • FileReference コンストラクターで new 演算子を使用する方法:var myFileReference = new FileReference();
  • FileReferenceList.browse() メソッドを呼び出す方法です。これによって FileReference オブジェクトの配列が作成されます。

アップロード処理の実行中、FileReference オブジェクトのすべてのプロパティの値が、FileReference.browse() または FileReferenceList.browse() メソッドの呼び出しによって設定されます。ダウンロード処理の実行中、name プロパティの値は select イベントが送出されたときに設定されます。これ以外のすべてのプロパティの値は、complete イベントが送出されたときに設定されます。

browse() メソッドはオペレーティングシステムのダイアログボックスを開いて、ユーザーがアップロード対象のファイルを選択できるようにします。FileReference.browse() メソッドを使用すると、ユーザーは単一のファイルを選択できます。FileReferenceList.browse() メソッドを使用すると、複数のファイルを選択できます。browse() メソッドの呼び出しが正常に終了したら、FileReference.upload() メソッドを呼び出してファイルを 1 つずつアップロードします。FileReference.download() メソッドは、ファイルの保存先をユーザーに指定させ、リモート URL からのダウンロードを開始します。

browse() または download() メソッドによって生成されるダイアログボックスでのファイルのデフォルトの場所を、FileReference クラスおよび FileReferenceList クラスを使って設定することはできません。ダイアログボックスに表示されるデフォルトの場所は、最後に参照されたフォルダー(その場所を決定できる場合)またはデスクトップです。これらのクラスを使って、転送ファイルを読み込んだり、転送ファイルに書き込んだりすることはできません。これらのクラスを使用しても、アップロードまたはダウンロードを開始した SWF ファイルが、アップロードファイルやダウンロードファイル、またはユーザーのディスクのファイルの場所にアクセスすることはできません。

また FileReference と FileReferenceList クラスは認証方法も提供しません。認証が必要なサーバーでは、Flash® Player ブラウザープラグインを使ってファイルをダウンロードできますが、すべての Player でのアップロード、およびスタンドアローンまたは外部 Player でのダウンロードは失敗します。FileReference イベントをリッスンして、処理が正常に終了したかどうかを確認して、エラー処理を行います。

Flash Player で実行されるコンテンツの場合、またはアプリケーションセキュリティサンドボックス外の、Adobe AIR で実行されるコンテンツの場合、アップロード操作およびダウンロード操作では、それ自身のドメイン内および URL ポリシーファイルが指定するドメイン内のファイルにのみアクセスできます。アップロードまたはダウンロードを開始しているコンテンツが、ファイルサーバーと同じドメインに属していない場合、ファイルサーバーにポリシーファイルを配置します。

Flash Player に追加された新しい機能により、Flash Player 10 にパブリッシュする場合は、FileReference.browse()FileReference.upload()FileReference.download()FileReference.load() および FileReference.save() の中で、同時に実行できる操作は 1 つのみです。複数の操作を実行すると、Flash Player でランタイムエラー(コード 2174)が発生します。進行中の操作を停止するには、FileReference.cancel() を使用します。この制限は Flash Player 10 にのみ適用されます。以前のバージョンの Flash Player については、同時に複数の操作を実行しても、この制限には影響されません。

FileReference.browse()FileReferenceList.browse()、または FileReference.download() メソッド呼び出しの実行中、Linux および Mac OS X 10.1 以前でのスタンドアローンと外部バージョンの Flash Player および AIR では、SWF ファイルの再生が一時停止します。

パラメーターが指定されていない場合は、次のサンプルの HTTP POST 要求が Flash Player からサーバーサイドスクリプトに送信されます。

  POST /handler.cfm HTTP/1.1 
  Accept: text/~~
  Content-Type: multipart/form-data; 
  boundary=----------Ij5ae0ae0KM7GI3KM7 
  User-Agent: Shockwave Flash 
  Host: www.example.com 
  Content-Length: 421 
  Connection: Keep-Alive 
  Cache-Control: no-cache
  
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filename"
  
  MyFile.jpg
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filedata"; filename="MyFile.jpg"
  Content-Type: application/octet-stream
  
  FileDataHere
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Upload"
  
  Submit Query
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7--
  

Flash Player が次の HTTP POST 要求を送信するのは、ユーザーが "api_sig""api_key"、および "auth_token" パラメーターを指定した場合です。

  POST /handler.cfm HTTP/1.1 
  Accept: text/~~
  Content-Type: multipart/form-data; 
  boundary=----------Ij5ae0ae0KM7GI3KM7 
  User-Agent: Shockwave Flash 
  Host: www.example.com 
  Content-Length: 421 
  Connection: Keep-Alive 
  Cache-Control: no-cache
  
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filename"
  
  MyFile.jpg
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="api_sig"
  
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="api_key"
  
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="auth_token"
  
  XXXXXXXXXXXXXXXXXXXXXX
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filedata"; filename="MyFile.jpg"
  Content-Type: application/octet-stream
  
  FileDataHere
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Upload"
  
  Submit Query
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7--
  
次の例では、実行時にロードされるファイルのデータフォーマットとステータス情報を表示します。

注意:この例を実行するには、uploadURL.url プロパティを変更して、例の架空の URL ではなく実際の URL を参照するようにします。この URL は、指定した URL のルート Web ディレクトリ内の yourUploadHandlerScript.cfm という名前のファイルを参照している必要があります。設定に基づいて、「ローカルでの再生に関するセキュリティ」を「ネットワークにのみアクセスする」に設定して SWF ファイルをコンパイルする必要がある場合もあります。または Flash Player のセキュリティ設定を更新して、このファイルのネットワークアクセスを許可する必要がある場合もあります。

package { import flash.display.Sprite; import flash.events.*; import flash.net.FileFilter; import flash.net.FileReference; import flash.net.URLRequest; public class FileReferenceExample extends Sprite { private var uploadURL:URLRequest; private var file:FileReference; public function FileReferenceExample() { uploadURL = new URLRequest(); uploadURL.url = "http://www.[yourDomain].com/yourUploadHandlerScript.cfm"; file = new FileReference(); configureListeners(file); file.browse(getTypes()); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(Event.SELECT, selectHandler); dispatcher.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler); } private function getTypes():Array { var allTypes:Array = new Array(getImageTypeFilter(), getTextTypeFilter()); return allTypes; } private function getImageTypeFilter():FileFilter { return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png"); } private function getTextTypeFilter():FileFilter { return new FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf"); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function uploadCompleteDataHandler(event:DataEvent):void { trace("uploadCompleteData: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + uploadURL.url); file.upload(uploadURL); } } }
flash.net.FileReferenceListflash.filesystem.FileuploadCompleteData アップロードの正常終了後、サーバーからデータを受信したときに送出されます。flash.events.DataEvent.UPLOAD_COMPLETE_DATAflash.events.DataEvent アップロードの正常終了後、サーバーからデータを受信したときに送出されます。サーバーからデータが返されないと、このイベントは送出されません。 httpResponseStatus upload() または uploadUnencoded() メソッドを呼び出して HTTP を介してデータにアクセスを試み、Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUSflash.events.HTTPStatusEvent upload() または uploadUnencoded() メソッドを呼び出して HTTP を介してデータにアクセスを試み、Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。 upload()uploadUnencoded()httpStatus アップロードに失敗し、HTTP ステータスコードを使用して失敗を記述することができない場合に送出されます。flash.events.HTTPStatusEvent.HTTP_STATUSflash.events.HTTPStatusEvent アップロードに失敗し、HTTP ステータスコードを使用して失敗を記述することができない場合に送出されます。httpStatus イベントが送出された後、ioError イベントが送出されます。

httpStatus イベントは、アップロードが失敗した場合にのみ送出されます。Flash Player で実行されるコンテンツの場合、このイベントはダウンロードの失敗には適用されません。HTTP エラーのためにダウンロードが失敗した場合は、I/O エラーとして通知されます。

FileReference.upload()
select ユーザーがアップロードするファイルまたはダウンロードするファイルをファイル参照ダイアログボックスから選択したときに、送出されます。flash.events.Event.SELECTflash.events.Event ユーザーがアップロードするファイルまたはダウンロードするファイルをファイル参照ダイアログボックスから選択したときに、送出されます。(このダイアログボックスは、FileReference.browse() メソッド、FileReferenceList.browse() メソッド、または FileReference.download() メソッドを呼び出したときに開かれます。)ユーザーがファイルを選択し、「OK」などをクリックして操作を確認すると、FileReference オブジェクトのプロパティに値が設定されます。

Flash Player または Adobe AIR ランタイムのアプリケーションセキュリティサンドボックス外で実行されるコンテンツの場合、select イベントは、どのメソッドがそのイベントを呼び出したかにより、わずかに異なった動作をします。select イベントが browse() 呼び出しの後に送出された場合、Flash Player または AIR アプリケーションは、FileReference オブジェクトのすべてのプロパティを読み取ることができます。これは、ユーザーが選択したファイルが、ローカルファイルシステムに存在するためです。 select イベントが download() 呼び出しの後に発生した場合、Flash Player または AIR アプリケーションは、name プロパティのみを読み取ることができます。これは、select イベントが送出された時点では、ファイルがまだローカルファイルシステムにダウンロードされていないためです。ファイルがダウンロードされ、complete イベントが送出された時点で、Flash Player または AIR アプリケーションは FileReference オブジェクトの他のすべてのプロパティを読み取ることができます。

次の例では、select イベントオブジェクトの使用方法を示します。この例を実行するには、uploadURL.url プロパティを変更して、架空の http://www ではなく実際のドメインとファイルを参照するようにします。[yourDomain].com/SomeFile.pdf. 「ローカルでの再生に関するセキュリティ」を「ネットワークにのみアクセスする」に設定して SWF ファイルをコンパイルする必要がある場合もあります。または Flash Player のセキュリティ設定を更新して、このファイルのネットワークアクセスを許可する必要がある場合があります。この例をデスクトップから実行するには、サーバー側にも crossdomain.xml ファイルを置いておく必要があります。ioErrorHandler() 関数がトリガーされた場合には、問題の uploadURL を更新して、アップロードを受信するよう設定された有効な URL に 変更する必要があるかもしれません。 package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; public class FileReference_event_select extends Sprite { private var uploadURL:URLRequest; private var file:FileReference; public function FileReference_event_select() { uploadURL = new URLRequest(); uploadURL.url = "http://www.[yourDomain].com/yourUploadHandlerScript.cfm"; file = new FileReference(); file.addEventListener(Event.SELECT, selectHandler); file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); file.addEventListener(ProgressEvent.PROGRESS, progressHandler); file.addEventListener(Event.COMPLETE, completeHandler); file.browse(); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + uploadURL.url); file.upload(uploadURL); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } } }
securityError FileReference.upload() または FileReference.download() メソッドの呼び出しによって、サーバーにファイルをアップロードするか、呼び出し元のセキュリティサンドボックスの外部にあるサーバーからファイルを取得しようとしたときに送出されます。flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent FileReference.upload() または FileReference.download() メソッドの呼び出しによって、サーバーにファイルをアップロードするか、呼び出し元のセキュリティサンドボックスの外部にあるサーバーからファイルを取得しようとすると、送出されます。発生した特有のエラーを示す text プロパティの値は、通常 "securitySandboxError" です。呼び出し側の SWF ファイルが自分のドメインの外にある SWF ファイルにアクセスしようとして、アクセス権限がないと発生します。URL ポリシーファイルを使用することで、このエラーに対処できます。

Adobe AIR では、これらのセキュリティ制限は、アプリケーションセキュリティサンドボックス内のコンテンツには適用されません。

Adobe AIR では、これらのセキュリティ制限は、アプリケーションセキュリティサンドボックス内のコンテンツには適用されません。

FileReference.download()FileReference.upload()
progress ファイルのアップロード処理中またはダウンロード処理中に定期的に送出されます。flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent ファイルのアップロード処理中またはダウンロード処理中に定期的に送出されます。progress イベントは、Flash Player がバイトをサーバーに転送しているときに送出され、最終的に転送が成功しなくても、転送の実行中は定期的に送出されます。ファイルの転送が実際に成功して完了したかどうか、およびそのタイミングを確認するには、complete イベントを受け取ります。

場合によっては、progress イベントは受信されません。例えば、転送対象ファイルが非常に小さい場合や、アップロードやダウンロードが非常に短時間に終わる場合、progress イベントは送出されない場合があります。

ファイルのアップロードの進捗状況は、OS X 10.3 より前の Macintosh プラットフォームでは確認できません。progress イベントは、アップロード処理中に呼び出されますが、progress イベントの bytesLoaded プロパティの値は、進捗状況を確認できないことを示す -1 です。

次の例では、progress イベントオブジェクトの使用方法を示します。この例を実行するには、downloadURL.url プロパティを変更して、架空の http://www ではなく実際のドメインとファイルを参照するようにします。[yourDomain].com/SomeFile.pdf. 「ローカルでの再生に関するセキュリティ」を「ネットワークにのみアクセスする」に設定して SWF ファイルをコンパイルする必要がある場合もあります。または Flash Player のセキュリティ設定を更新して、このファイルのネットワークアクセスを許可する必要がある場合があります。 package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; public class FileReference_event_progress extends Sprite { private var downloadURL:URLRequest; private var fileName:String = "SomeFile.pdf"; private var file:FileReference; public function FileReference_event_progress() { downloadURL = new URLRequest(); downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf"; file = new FileReference(); file.addEventListener(ProgressEvent.PROGRESS, progressHandler); file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); file.addEventListener(Event.COMPLETE, completeHandler); file.download(downloadURL, fileName); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } } }
FileReference.completeflash.events.ProgressEventFileReference.download()FileReference.upload()
open アップロード処理またはダウンロード処理が開始するときに送出されます。flash.events.Event.OPENflash.events.Event アップロード処理またはダウンロード処理が開始するときに送出されます。 次の例で、download イベントオブジェクトの使用方法を示します。この例を実行するには、downloadURL.url プロパティを変更して、架空の http://www ではなく実際のドメインとファイルを参照するようにします。[yourDomain].com/SomeFile.pdf. 「ローカルでの再生に関するセキュリティ」を「ネットワークにのみアクセスする」に設定して SWF ファイルをコンパイルする必要がある場合もあります。または Flash Player のセキュリティ設定を更新して、このファイルのネットワークアクセスを許可する必要がある場合があります。 package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; import flash.net.FileFilter; public class FileReference_download extends Sprite { private var downloadURL:URLRequest; private var fileName:String = "SomeFile.pdf"; private var file:FileReference; public function FileReference_download() { downloadURL = new URLRequest(); downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf"; file = new FileReference(); configureListeners(file); file.download(downloadURL, fileName); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(Event.SELECT, selectHandler); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + downloadURL.url); } } } FileReference.download()FileReference.upload()ioError アップロードまたはダウンロードが失敗したときに送出されます。flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent アップロードまたはダウンロードが失敗したときに送出されます。次のいずれかの理由により、ファイル転送に失敗することがあります。
  • Player でファイルの読み込み中、書き込み中、または転送中に入出力エラーが発生した場合。
  • ユーザー名とパスワードなど、認証が必要なサーバーに SWF ファイルがファイルをアップロードしようとした場合。Flash Player または Adobe AIR には、アップロード時にユーザーがパスワードを入力する手段が用意されていません。認証が必要なサーバーに対して SWF ファイルがファイルをアップロードしようとすると、アップロードは失敗します。
  • スタンドアローンまたは外部 Player 内で、認証が必要なサーバーから SWF ファイルがファイルをダウンロードしようとした場合。ダウンロードする際、スタンドアローンプレーヤーと外部プレーヤーには、ユーザーがパスワードを入力する手段がありません。認証が必要なサーバーから、これらの Player 内の SWF ファイルがファイルをダウンロードしようとすると、ダウンロードは失敗します。ファイルのダウンロードは、ActiveX コントロール Player、ブラウザープラグイン Player、および Adobe AIR ランタイムでのみ成功する可能性があります。
  • url パラメーター(upload() メソッド)に渡された値に、無効なプロトコルが含まれている場合。有効なプロトコルは HTTP と HTTPS です。

重要:ブラウザー内で実行される、つまり、ブラウザープラグインまたは ActiveX コントロールを使用するアプリケーションと、Adobe AIR で実行されるコンテンツでのみ、認証用のユーザー名とパスワードを入力できるダイアログボックスを表示できます。ただし、それはダウンロードの場合のみです。 Flash Player のプラグインまたは ActiveX コントロールバージョンを使用するアップロードの場合、または、スタンドアローンまたは外部 Player を使用するアップロードまたはダウンロードの場合、ファイル転送は失敗します。

FileReference.download()FileReference.upload()
complete ダウンロードが完了、またはアップロードで HTTP ステータスコード 200 が生成された場合に送出されます。flash.events.Event.COMPLETEflash.events.Event ダウンロードが完了、またはアップロードで HTTP ステータスコード 200 が生成された場合に送出されます。ファイルのダウンロードの場合、Flash Player または Adobe AIR でディスクへのファイル全体のダウンロードが完了すると、このイベントが送出されます。 ファイルのアップロードの場合、転送を受信したサーバーから HTTP ステータスコード 200 を Flash Player または Adobe AIR が受け取った後、このイベントが送出されます。 次の例では、complete イベントオブジェクトの使用方法を示します。この例を実行するには、downloadURL.url プロパティを変更して、架空の http://www ではなく実際のドメインとファイルを参照するようにします。[yourDomain].com/SomeFile.pdf. 「ローカルでの再生に関するセキュリティ」を「ネットワークにのみアクセスする」に設定して SWF ファイルをコンパイルする必要がある場合もあります。または Flash Player のセキュリティ設定を更新して、このファイルのネットワークアクセスを許可する必要がある場合があります。 package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; public class FileReference_event_complete extends Sprite { private var downloadURL:URLRequest; private var fileName:String = "SomeFile.pdf"; private var file:FileReference; public function FileReference_event_complete() { downloadURL = new URLRequest(); downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf"; file = new FileReference(); configureListeners(file); file.download(downloadURL, fileName); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(Event.SELECT, selectHandler); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + downloadURL.url); } } } FileReference.download()FileReference.upload()cancel ユーザーがアップロードまたはダウンロードするファイルをファイル参照ダイアログボックスからキャンセルしたときに送出されます。flash.events.Event.CANCELflash.events.Event ユーザーがアップロードまたはダウンロードするファイルをファイル参照ダイアログボックスからキャンセルしたときに送出されます。ユーザーが他の手段(ブラウザーを閉じたり、現在のアプリケーションを停止したりすること)によってアップロードまたはダウンロードをキャンセルした場合、Flash Player はこのイベントを送出しません。 次の例では、cancel イベントオブジェクトの使用方法を示します。この例を実行するには、downloadURL.url プロパティを変更して、架空の http://www ではなく実際のドメインとファイルを参照するようにします。[yourDomain].com/SomeFile.pdf. 「ローカルでの再生に関するセキュリティ」を「ネットワークにのみアクセスする」に設定して SWF ファイルをコンパイルする必要がある場合もあります。または Flash Player のセキュリティ設定を更新して、このファイルのネットワークアクセスを許可する必要がある場合があります。 package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; public class FileReference_event_cancel extends Sprite { private var downloadURL:URLRequest; private var fileName:String = "SomeFile.pdf"; private var file:FileReference; public function FileReference_event_cancel() { downloadURL = new URLRequest(); downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf"; file = new FileReference(); file.addEventListener(Event.CANCEL, cancelHandler); file.download(downloadURL, fileName); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } } } FileReference 新しい FileReference オブジェクトを作成します。 新しい FileReference オブジェクトを作成します。設定されると、FileReference オブジェクトはユーザーのローカルディスク上のファイルを表します。 FileReference.browse()browse アップロードするファイルを選択できるファイル参照ダイアログボックスを表示します。次の状況でスローされます。1)他の FileReference ブラウズセッション、または FileReferenceList ブラウズセッションが進行中の場合。ファイルブラウズのセッションは、一度に 1 つのみ実行できます。2)ユーザーの mms.cfg ファイルの設定により、この操作が禁止されている場合。 IllegalOperationErrorflash.errors:IllegalOperationErrortypeFilter 配列に、不正な形式の FileFilter オブジェクトが含まれていると、例外がスローされます。FileFilter オブジェクトの正しい形式の詳細については、FileFilter クラスを参照してください。 ArgumentErrorArgumentErrorマウスイベントやキー入力イベントなどのユーザー操作に応じてメソッドが呼び出されない場合。 ErrorErrorパラメーターが有効で、ファイル参照ダイアログボックスが表示された場合に、true を返します。 BooleantypeFilterArraynullダイアログボックスに表示するファイルをフィルターにかける場合に使用する FileFilter インスタンスの配列です。このパラメーターを省略すると、すべてのファイルが表示されます。詳細については、FileFilter クラスを参照してください。 アップロードするファイルを選択できるファイル参照ダイアログボックスを表示します。このダイアログボックスは、オペレーティングシステムのネイティブのダイアログボックスです。ユーザーは、例えば Windows の UNC パスを使用して、ローカルコンピューターまたは他のコンピューターからファイルを選択できます。

注意:Adobe AIR で利用可能な File クラスにはさらに固有のシステムファイル選択ダイアログボックスにアクセスするためのメソッドが含まれています。 これらのメソッドは File.browseForDirectory()File.browseForOpen()File.browseForOpenMultiple()、および File.browseForSave() です。

このメソッドを呼び出して、ユーザーが正常にファイルを選択すると、この FileReference オブジェクトのプロパティにそのファイルのプロパティが設定されます。これ以降 FileReference.browse() メソッドが呼び出されるたびに、FileReference オブジェクトのプロパティは、ダイアログボックスでユーザーが選択したファイルに再設定されます。一度に 1 つの browse() セッションまたは download() セッションだけを実行できます。これは、一度に 1 つのダイアログボックスしか呼び出せないからです。

どのファイルをダイアログボックスに表示するかを決定するために、typeFilter パラメーターを使用できます。

Flash Player 10 および Flash Player 9 Update 5 では、このメソッドの呼び出しは、マウスのクリックやキー入力などのユーザーイベントに応じてイベントハンドラーで呼び出した場合にのみ成功します。それ以外の場合は、このメソッドを呼び出すと、Flash Player から例外がスローされます。

Flash Player に追加された新しい機能により、Flash Player 10 にパブリッシュする場合は、FileReference.browse()FileReference.upload()FileReference.download()FileReference.load() および FileReference.save() の中で、同時に実行できる操作は 1 つのみです。複数の操作を実行すると、Flash Player でランタイムエラー(コード 2174)が発生します。進行中の操作を停止するには、FileReference.cancel() を使用します。この制限は Flash Player 10 にのみ適用されます。以前のバージョンの Flash Player については、同時に複数の操作を実行しても、この制限には影響されません。

Adobe AIR では、ファイル参照ダイアログボックスは他のウィンドウによって「所有されている」(owner プロパティが null 以外に設定されている)ウィンドウの前面に常に表示されるとは限りません。ウィンドウの表示順序の問題を回避するには、このメソッドを呼び出す前に所有されているウィンドウを非表示にします。

select eventcancel eventFileReference.download()FileReferenceList.browse()File.browseForDirectory()File.browseForOpen()File.browseForOpenMultiple()File.browseForSave()selectflash.events:Eventユーザーが「参照」ファイル選択からアイテムを正しく選択すると、送出されます。 ユーザーが「参照」ファイル選択からアイテムを正しく選択すると、送出されます。cancelflash.events:Eventユーザーがファイルアップロードの参照ウィンドウをキャンセルすると、送出されます。 ユーザーがファイルアップロードの参照ウィンドウをキャンセルすると、送出されます。
cancel この FileReference オブジェクトで進行中のアップロード処理またはダウンロード処理を取り消します。進行中のアップロードまたはダウンロードをキャンセルします。 この FileReference オブジェクトで進行中のアップロード処理またはダウンロード処理を取り消します。このメソッドを呼び出しても cancel イベントは送出されません。このイベントは、ユーザーがファイルアップロードまたはダウンロードのダイアログボックスを閉じて処理をキャンセルした場合にのみ送出されます。 download リモートサーバーからファイルをダウンロードするためのダイアログボックスを開きます。次の状況でスローされます。1)他のブラウズセッションが進行中の場合。ファイルブラウズのセッションは、一度に 1 つのみ実行できます。2) request に渡された値に、無効なパスまたはプロトコルが含まれている場合。3) ダウンロードするファイルの名前に禁止文字が含まれている場合。4) ユーザーの mms.cfg ファイルの設定により、この操作が禁止されている場合。 IllegalOperationErrorflash.errors:IllegalOperationError信頼されていないローカルコンテンツはインターネットへの接続を許可されません。この問題を回避するには、この SWF ファイルを、ネットワークアクセスを許可されたローカル SWF ファイル、または信頼できる SWF ファイルとして再分類します。この例外がスローされると、ローカルファイルのセキュリティ制限が原因でアクセスできないファイル名および URL を示すメッセージが送信されます。 SecurityErrorSecurityError一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。 SecurityErrorSecurityErrorurl.data が ByteArray 型の場合、例外がスローされます。FileReference.upload() メソッドおよび FileReference.download() メソッドと一緒に使用する場合、url.data は URLVariables 型または String 型のみになります。 ArgumentErrorArgumentErrorこのエラーは、次の理由で発生する可能性があります。1) Flash Player では URLRequest.data パラメーターを UTF8 から MBCS に変換できません。このエラーは、FileReference.download() メソッドに渡された URLRequest オブジェクトが GET 操作を行うように設定されている場合、および System.useCodePagetrue に設定されている場合に発生することがあります。2) Flash Player では POST データにメモリを割り当てることができません。このエラーは、FileReference.download() メソッドに渡された URLRequest オブジェクトが POST 操作を行うように設定されている場合に発生することがあります。 MemoryErrorflash.errors:MemoryErrorマウスイベントやキー入力イベントなどのユーザー操作に応じてメソッドが呼び出されない場合。 ErrorErrorrequestflash.net:URLRequestURLRequest オブジェクトです。URLRequest オブジェクトの url プロパティには、ローカルコンピューターにダウンロードするファイルの URL を設定する必要があります。このパラメーターが null の場合、例外がスローされます。URLRequest オブジェクトの requestHeaders プロパティは無視されるため、カスタム HTTP リクエストヘッダーはアップロードまたはダウンロードでサポートされません。POST パラメーターまたは GET パラメーターをサーバーに送信するには、URLRequest.data の値に任意のパラメーターを設定し、URLRequest.methodURLRequestMethod.POST または URLRequestMethod.GET を設定します。

一部のブラウザーでは、URL ストリングの長さに制限があるものがあります。長さが 256 文字を超える場合、一部のブラウザーまたはサーバーでは失敗する場合があります。

defaultFileNameStringnullダウンロードするファイルとしてダイアログボックスに表示するデフォルトファイル名です。このストリングに、文字 / \ : ~~ ? " < > | % を含めないでください。

このパラメーターを省略すると、リモート URL のファイル名が構文解析されて、デフォルトとして使用されます。

リモートサーバーからファイルをダウンロードするためのダイアログボックスを開きます。Flash Player ではアップロードまたはダウンロードできるファイルのサイズに制限はありませんが、このプレーヤーが正式にサポートしているアップロードまたはダウンロードのサイズは最大 100 MB です。

download() メソッドは、まず、オペレーティングシステムのダイアログボックスを表示して、ユーザーにファイル名を入力してもらった後、ファイルの保存先となるローカルコンピューター上の場所を選択してもらいます。ユーザーが保存場所を選択し、「保存」などをクリックして、ファイルをローカルに保存することを確認すると、リモートサーバーからのダウンロードが開始します。リスナーは、ダウンロードが進行中なのか、成功したのか、失敗したのかを示すイベントを受け取ります。download() を呼び出した後にダイアログボックスやダウンロード処理の状態を確認するには、コードで cancelopenprogresscomplete などのイベントをリッスンする必要があります。

FileReference.upload() 関数と FileReference.download() 関数はノンブロッキング処理を行います。これらの関数は呼び出された後、ファイル転送が完了する前に返されます。さらに、FileReference オブジェクトがスコープ外に移動した場合、そのオブジェクトに対して完了していないアップロードまたはダウンロードは、スコープから離れた時点でキャンセルされます。アップロードまたはダウンロードの続行を期待できる限りは、FileReference オブジェクトがスコープ内にあることを確認してください。

ファイルが正常にダウンロードされると、FileReference オブジェクトのプロパティにローカルファイルのプロパティが設定されます。ダウンロードが成功した場合、complete イベントが送出されます。

一度に 1 つの browse() セッションまたは download() セッションだけを実行できます。これは、一度に 1 つのダイアログボックスしか呼び出せないからです。

このメソッドは、どのファイルタイプのダウンロードにも対応しており、HTTP と HTTPS のいずれも使用できます。

一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。

注意:サーバーでユーザー認証が必要な場合、ブラウザー内で実行される、つまり、ブラウザープラグインまたは ActiveX コントロールを使用する SWF ファイルでのみ、認証用のユーザー名とパスワードをユーザーが入力できるダイアログボックスを表示できます。ただし、それはダウンロードの場合のみです。プラグインまたは ActiveX コントロールを使用するアップロードの場合、または、スタンドアローンまたは外部 Player を使用するアップロードとダウンロードの場合、ファイル転送は失敗します。

このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。

  • 呼び出し元 SWF ファイルが信頼されないコードとしてローカルのサンドボックスに置かれている場合、ロード操作は実行できません。
  • デフォルトの動作では、サンドボックス間のアクセスは拒否されます。URL ポリシーファイルを追加することによって、Web サイトでリソースにアクセスできるようになります。
  • SWF ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含んでいる HTML ページに allowNetworking パラメーター(object タグおよび embed タグのパラメーター)を設定します。
  • Flash Player 10 および Flash Player 9 Update 5 では、このメソッドの呼び出しは、マウスのクリックやキー入力などのユーザーイベントに応じてイベントハンドラーで呼び出した場合にのみ成功します。それ以外の場合は、このメソッドを呼び出すと、Flash Player から例外がスローされます。

ただし、Adobe AIR では、application セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

このメソッドを使用してファイルをダウンロードすると、ダウンロードされたファイルにフラグを付けるオペレーティングシステムにダウンロードされたというフラグが付きます。

  • Windows XP Service Pack 2 以降および Windows Vista
  • Mac OS 10.5 以降

Linux などの一部のオペレーティングシステムは、ダウンロードされたファイルにフラグを付けません。

Flash Player に追加された新しい機能により、Flash Player 10 にパブリッシュする場合は、FileReference.browse()FileReference.upload()FileReference.download()FileReference.load() および FileReference.save() の中で、同時に実行できる操作は 1 つのみです。複数の操作を実行すると、Flash Player でランタイムエラー(コード 2174)が発生します。進行中の操作を停止するには、FileReference.cancel() を使用します。この制限は Flash Player 10 にのみ適用されます。以前のバージョンの Flash Player については、同時に複数の操作を実行しても、この制限には影響されません。

Adobe AIR では、ダウンロードダイアログボックスは他のウィンドウによって「所有」されている(owner プロパティが null 以外に設定されている)ウィンドウの前面に常に表示されるとは限りません。ウィンドウの表示順序の問題を回避するには、このメソッドを呼び出す前に所有されているウィンドウを非表示にします。

次の例で、download イベントオブジェクトの使用方法を示します。この例を実行するには、downloadURL.url プロパティを変更して、架空の http://www ではなく実際のドメインとファイルを参照するようにします。[yourDomain].com/SomeFile.pdf. 「ローカルでの再生に関するセキュリティ」を「ネットワークにのみアクセスする」に設定して SWF ファイルをコンパイルする必要がある場合もあります。または Flash Player のセキュリティ設定を更新して、このファイルのネットワークアクセスを許可する必要がある場合があります。 package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; import flash.net.FileFilter; public class FileReference_download extends Sprite { private var downloadURL:URLRequest; private var fileName:String = "SomeFile.pdf"; private var file:FileReference; public function FileReference_download() { downloadURL = new URLRequest(); downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf"; file = new FileReference(); configureListeners(file); file.download(downloadURL, fileName); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(Event.SELECT, selectHandler); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + downloadURL.url); } } }
File.downloadedFileReference.browse()FileReferenceList.browse()FileReference.upload()FileReference.save()openflash.events:Eventダウンロード処理が開始したときに送出されます。 ダウンロード処理が開始したときに送出されます。progressflash.events:ProgressEventファイルのダウンロード処理中に定期的に送出されます。 ファイルのダウンロード処理中に定期的に送出されます。completeflash.events:Eventファイルのダウンロード処理が正常に完了したときに送出されます。 ファイルのダウンロード処理が正常に完了したときに送出されます。cancelflash.events:Eventユーザーがダイアログボックスを閉じると、送出されます。 ユーザーがダイアログボックスを閉じると、送出されます。selectflash.events:Eventダウンロードするファイルをユーザーがダイアログボックスから選択すると、送出されます。 ダウンロードするファイルをユーザーがダイアログボックスから選択すると、送出されます。securityErrorflash.events:SecurityErrorEventセキュリティエラーが原因でダウンロードが失敗したときに送出されます。 セキュリティエラーが原因でダウンロードが失敗したときに送出されます。ioErrorflash.events:IOErrorEvent次のいずれかの理由で送出されます。
  • ファイルの読み込み中または転送中に入出力エラーが発生した場合。
  • Flash Player のスタンドアローンバージョンまたは外部バージョンで実行される SWF コンテンツが、認証が必要なサーバーからファイルをダウンロードしようとした場合。ダウンロードする際、スタンドアローンまたは外部 Player には、ユーザーがパスワードを入力する手段がありません。認証が必要なサーバーに対して、これらの Player 内の SWF がファイルをダウンロードしようとすると、ダウンロードは失敗します。ファイルのダウンロードは、ActiveX コントロール Player やブラウザープラグイン Player でのみ成功する可能性があります。
次のいずれかの理由で送出されます。ファイルの読み込み中または転送中に入出力エラーが発生した場合。もしくは、Flash Player のスタンドアローンバージョンまたは外部バージョンで実行される SWF コンテンツが、認証が必要なサーバーからファイルをダウンロードしようとした場合。
load ユーザーが選択したローカルファイルの読み込みを開始します。次の状況でスローされます。1)他の FileReference ブラウズセッション、または FileReferenceList ブラウズセッションが進行中の場合。ファイルブラウズのセッションは、一度に 1 つのみ実行できます。2)ユーザーの mms.cfg ファイルの設定により、この操作が禁止されている場合。 IllegalOperationErrorflash.errors:IllegalOperationErrorこのエラーは、アプリケーションがファイルにメモリを割り当てることができない場合に発生することがあります。ファイルが大きすぎるか、または使用可能なメモリが少なすぎる可能性があります。 MemoryErrorflash.errors:MemoryErrorローカルファイルの読み込みを開始します。 ユーザーが選択したローカルファイルのロードを開始します。Flash Player ではアップロード、ダウンロード、ロードまたは保存できるファイルのサイズに制限はありませんが、正式にサポートしているサイズは最大 100 MB です。コンテンツを Flash Player で実行する場合は、FileReference.browse() メソッドまたは FileReferenceList.browse() メソッドを呼び出してから、load() メソッドを呼び出す必要があります。一方、コンテンツをアプリケーションサンドボックスの AIR で実行する場合は、File オブジェクトの load() メソッドを呼び出す前に、browse() メソッドを呼び出す必要はありません。AIR の File クラスが、FileReference クラスを拡張します。

リスナーは、読み込み処理が進行中なのか、成功したのか、失敗したのかを示すイベントを受け取ります。FileReferenceList オブジェクトを使用すると、ユーザーが読み込むファイルを複数選択できるようになりますが、ファイルは 1 つずつ読み込む必要があります。個別にファイルを読み込むには、FileReference オブジェクトの FileReferenceList.fileList 配列を繰り返し処理します。

Adobe AIR にはまた、ファイルを読み込むためのさらに多くのオプションを提供する FileStream クラスが含まれています。

FileReference.upload() 関数、FileReference.download() 関数、FileReference.load() 関数および FileReference.save() 関数はノンブロッキング処理を行います。 これらの関数は呼び出された後、ファイル転送が完了する前に返されます。さらに、FileReference オブジェクトがスコープ外に移動した場合、そのオブジェクトに対して完了していないトランザクションは、スコープから離れた時点でキャンセルされます。アップロード、ダウンロード、読み込みまたは保存の続行を期待できる限りは、FileReference オブジェクトがスコープ内にあることを確認してください。

ファイルのロードが正常に終了すると、コンテンツは FileReference オブジェクトの data プロパティにバイト配列として格納されます。

次のセキュリティに関する考慮事項が適用されます。

  • 呼び出し元 SWF ファイルが信頼されないコードとしてローカルのサンドボックスに置かれている場合、ロード操作は実行できません。
  • デフォルトの動作では、サンドボックス間のアクセスは拒否されます。クロスドメインポリシーファイルを追加することによって、Web サイトでリソースにアクセスできるようになります。
  • ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含む HTML ページに allowNetworking パラメーター(object タグおよび embed タグ)を設定します。

ただし、これらの考慮事項はアプリケーションサンドボックス内の AIR コンテンツには適用されません。

Flash Player 10 または AIR 1.5 にパブリッシュする場合は、FileReference.browse()FileReference.upload()FileReference.download()FileReference.load()FileReference.save() の中で同時に実行できる操作は 1 つのみです。複数の操作を実行すると、アプリケーションでランタイムエラー(コード 2174)が発生します。進行中の操作を停止するには、FileReference.cancel() を使用します。この制限は Flash Player 10 および AIR 1.5 にのみ適用されます。Flash Player または AIR の以前のバージョンは同時に複数の操作を実行しても、この制限には影響されません。

Adobe AIR では、ファイル参照ダイアログボックスは他のウィンドウによって「所有されている」(owner プロパティが null 以外に設定されている)ウィンドウの前面に常に表示されるとは限りません。ウィンドウの表示順序の問題を回避するには、このメソッドを呼び出す前に所有されているウィンドウを非表示にします。

次の例は、ローカルファイルシステム内の画像をルート表示オブジェクト(この場合はステージ)にアップロードします。例は、Andre Venancio 氏の提供によるものです。 var buttonShape:Shape = new Shape(); buttonShape.graphics.beginFill(0x336699); buttonShape.graphics.drawCircle(50, 50, 25); var button = new SimpleButton(buttonShape, buttonShape, buttonShape, buttonShape); addChild(button); var fileRef:FileReference= new FileReference(); button.addEventListener(MouseEvent.CLICK, onButtonClick); function onButtonClick(e:MouseEvent):void { fileRef.browse([new FileFilter("Images", "*.jpg;*.gif;*.png")]); fileRef.addEventListener(Event.SELECT, onFileSelected); } function onFileSelected(e:Event):void { fileRef.addEventListener(Event.COMPLETE, onFileLoaded); fileRef.load(); } function onFileLoaded(e:Event):void { var loader:Loader = new Loader(); loader.loadBytes(e.target.data); addChild(loader); }
FileReference.browse()FileReferenceList.browse()FileReference.dataFileReferenceList.fileListFileReference.save()FileStreamopenflash.events:Event読み込み処理が開始したときに送出されます。 読み込み処理が開始したときに送出されます。progressflash.events:ProgressEventファイルの読み込み処理中に定期的に送出されます。 ファイルの読み込み処理中に定期的に送出されます。completeflash.events:Eventファイルの読み込み処理が正常に完了したときに送出されます。 ファイルの読み込み処理が正常に完了したときに送出されます。ioErrorflash.events:IOErrorEventアプリケーションによるファイルの読み込み中または書き込み中に入出力エラーにより読み込みが失敗した場合に呼び出されます。 アプリケーションによるファイルの読み込み中または書き込み中に入出力エラーにより読み込みが失敗した場合に呼び出されます。
save ローカルファイルシステムにファイルを保存するためのダイアログボックスを開きます。次の状況でスローされます。1)他のブラウズセッションが進行中の場合。ファイルブラウズのセッションは、一度に 1 つのみ実行できます。2)ダウンロードするファイルの名前に禁止文字が含まれている場合。3)ユーザーの mms.cfg ファイルの設定により、この操作が禁止されている場合。 IllegalOperationErrorflash.errors:IllegalOperationErrordata が ByteArray 型ではなく、toString() メソッドを持たない場合、例外がスローされます。data が XML 型ではなく、toXMLString() メソッドを持たない場合、例外がスローされます。 ArgumentErrorArgumentErrorマウスイベントやキー入力イベントなどのユーザー操作に応じてメソッドが呼び出されない場合。 ErrorErrorこのエラーは、Flash Player がファイルにメモリを割り当てることができない場合に発生することがあります。ファイルが大きすぎるか、または使用可能なメモリが少なすぎる可能性があります。 MemoryErrorflash.errors:MemoryErrordata保存されるデータです。データは複数の形式のうちのいずれかになり、以下のように適切に処理されます。
  • 値が null である場合、アプリケーションにより ArgumentError 例外がスローされます。
  • 値が String の場合は、UTF-8 テキストファイルとして保存されます。
  • 値が XML の場合は、XML 形式でテキストファイルに書き込まれます。形式はすべて保持されます。
  • 値が ByteArray オブジェクトの場合は、データファイルにそのまま書き込まれます。
  • 値が上記のいずれでもない場合、save() メソッドはオブジェクトの toString() メソッドを呼び出し、データをストリングに変換して、データをテキストファイルとして保存します。これに失敗すると、アプリケーションにより ArgumentError 例外がスローされます。
defaultFileNameStringnull保存するファイルとしてダイアログボックスに表示するデフォルトファイル名です。このストリングに、文字 / \ : ~~ ? " < > | % を含めないでください。

File オブジェクトがこのメソッドを呼び出すと、ファイル名は File オブジェクトが参照するファイルの名前になります(AIR File クラスは FileReference クラスを拡張します)。

ローカルファイルシステムにファイルを保存するためのダイアログボックスを開きます。Flash Player ではアップロード、ダウンロード、ロードまたは保存できるファイルのサイズに制限はありませんが、このプレーヤーが正式にサポートしているサイズは最大 100 MB です。

save() メソッドは、まず、オペレーティングシステムのダイアログボックスを表示して、ユーザーにファイル名を入力してもらった後、ファイルの保存先となるローカルコンピューター上の場所を選択してもらいます。ユーザーが保存場所を選択し、「保存」などをクリックして、ファイルをローカルに保存することを確認すると、保存処理が開始されます。リスナーは、保存処理が進行中なのか、成功したのか、失敗したのかを示すイベントを受け取ります。save() を呼び出した後のダイアログボックスや保存処理の状態を確認するには、コードで cancelopenprogress および complete などのイベントを待機する必要があります。

Adobe AIR にはまた、ファイルをローカルで保存するためのさらに多くのオプションを提供する FileStream クラスが含まれています。

FileReference.upload() 関数、FileReference.download() 関数、FileReference.load() 関数および FileReference.save() 関数はノンブロッキング処理を行います。 これらの関数は呼び出された後、ファイル転送が完了する前に返されます。さらに、FileReference オブジェクトがスコープ外に移動した場合、そのオブジェクトに対して完了していないトランザクションは、スコープから離れた時点でキャンセルされます。アップロード、ダウンロード、読み込みまたは保存の続行を期待できる限りは、FileReference オブジェクトがスコープ内にあることを確認してください。

ファイルが正常に保存されると、FileReference オブジェクトのプロパティにローカルファイルのプロパティが設定されます。保存が成功した場合、complete イベントが送出されます。

一度に 1 つの browse() セッションまたは save() セッションだけを実行できます。これは、一度に 1 つのダイアログボックスしか呼び出せないからです。

Flash Player では、このメソッドの呼び出しは、マウスのクリックやキー入力などのユーザーイベントに応じてイベントハンドラーで呼び出した場合にのみ成功します。それ以外の場合は、このメソッドを呼び出すと、Flash Player から例外がスローされます。この制限は、アプリケーションサンドボックス内の AIR コンテンツには適用されません。

Adobe AIR では、保存ダイアログボックスは他のウィンドウによって「所有」されている(owner プロパティが null 以外に設定されている)ウィンドウの前面に常に表示されるとは限りません。ウィンドウの表示順序の問題を回避するには、このメソッドを呼び出す前に所有されているウィンドウを非表示にします。

次の例は、ファイルのテキストフィールドに入力されるコンテンツを保存します。この例では、編集可能なテキストフィールド(MyTextField)および編集できない別のテキストフィールド(MyButtonField)を作成して、マウスクリックに応答する「ボタン」として提供します。ユーザーは最初のテキストフィールドを編集して、テキストフィールドのコンテンツをローカルファイルに保存できます。 マウスクリックのイベントハンドラー clickhandlerFileReference.save() メソッド(MyFileReference という名前の FileReference オブジェクトの場合)を使用して、ユーザーの現在のオペレーティングシステム上でダイアログを開くので、ユーザーはコンテンツをユーザーが付ける名前でローカルファイルに保存できます。 var MyTextField:TextField = new TextField(); var MyButtonField:TextField = new TextField(); var MyFile:FileReference = new FileReference(); MyTextField.border = true; MyTextField.type = TextFieldType.INPUT; MyButtonField.background = true; MyButtonField.backgroundColor = 0x339933; MyButtonField.x = 150; MyButtonField.height = 20; MyButtonField.text = "Click here to save"; addChild(MyTextField); addChild(MyButtonField); MyButtonField.addEventListener(MouseEvent.CLICK, clickhandler); function clickhandler(e:MouseEvent): void { MyFile.save(MyTextField.text); }
FileReferenceList.browse()FileReference.load()FileReference.dataFileReference.upload()FileReference.download()FileStreamopenflash.events:Eventダウンロード処理が開始したときに送出されます。 ダウンロード処理が開始したときに送出されます。progressflash.events:ProgressEventファイルのダウンロード処理中に定期的に送出されます。 ファイルのダウンロード処理中に定期的に送出されます。completeflash.events:Eventファイルのダウンロード処理が正常に完了したときに送出されます。 ファイルのダウンロード処理が正常に完了したときに送出されます。cancelflash.events:Eventユーザーがダイアログボックスを閉じると、送出されます。 ユーザーがダイアログボックスを閉じると、送出されます。selectflash.events:Eventダウンロードするファイルをユーザーがダイアログボックスから選択すると、送出されます。 ダウンロードするファイルをユーザーがダイアログボックスから選択すると、送出されます。ioErrorflash.events:IOErrorEventファイルの読み込み中または転送中に入出力エラーが発生した場合に送出されます。 ファイルの読み込み中または転送中に入出力エラーが発生した場合に送出されます。
uploadUnencoded ファイルをエンコードせずに URL へのアップロードを開始します。信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。この問題を回避するには、この SWF ファイルを、ネットワークアクセスを許可されたローカル SWF ファイル、または信頼できる SWF ファイルとして再分類します。この例外がスローされると、アクセスできないローカルファイルの名前および URL を示すメッセージが送信されます。 SecurityErrorSecurityError次の状況でスローされます。1)他の FileReference ブラウズセッション、または FileReferenceList ブラウズセッションが進行中の場合。ファイルブラウズのセッションは、一度に 1 つのみ実行できます。2) URL パラメーターが有効なパスまたはプロトコルでない場合。ファイルのアップロードには HTTP を使用する必要があります。 IllegalOperationErrorflash.errors:IllegalOperationErrorrequestflash.net:URLRequestURLRequest オブジェクトです。URLRequest オブジェクトの url プロパティには、HTTP の POST 呼び出しを使用してアップロードを処理するように設定したサーバースクリプトの URL を設定する必要があります。一部のブラウザーでは、URL ストリングの長さに制限があるものがあります。長さが 256 文字を超える場合、一部のブラウザーまたはサーバーでは失敗する場合があります。このパラメーターが null の場合、例外がスローされます。

この URL では、HTTP または HTTPS(セキュアアップロード)を使用できます。HTTPS を使用するには、url パラメーターで HTTPS url を使用します。url パラメーターにポート番号を指定しない場合、HTTP の場合はポート 80、HTTPS の場合はポート 443 がデフォルトでは使用されます。

POST パラメーターまたは GET パラメーターをサーバーに送信するには、URLRequest オブジェクトの data プロパティに任意のパラメーターを設定し、method プロパティを URLRequestMethod.POST または URLRequestMethod.GET に設定します。

ファイルをエンコードせずにリモートサーバーへのアップロードを開始します。
ファイルをエンコードせずに URL へのアップロードを開始します。upload() メソッドはファイルを form-data エンベロープでエンコードしますが、uploadUnencoded() メソッドは HTTP 要求の本体でファイルコンテンツをそのまま渡します。送信しようとするデータが、受信するサーバーで理解可能な形式で既にエンコードされている場合、uploadUnencoded() メソッドを使用します。通常、uploadeUnencoded() メソッドを、HTTP/WebDAV PUT メソッドと共に使用します。
FileReference.browse()FileReferenceList.browse()FileReference.download()FileReferenceList.fileListupload()openflash.events:Eventアップロード処理が開始したときに送出されます。 アップロード処理が開始したときに送出されます。progressflash.events:ProgressEventファイルのアップロード処理中に定期的に送出されます。 ファイルのアップロード処理中に定期的に送出されます。completeflash.events:Eventファイルのアップロード処理が正常に完了したときに送出されます。 ファイルのアップロード処理が正常に完了したときに送出されます。uploadCompleteDataflash.events:DataEventファイルアップロードの正常終了後、サーバーからデータを受信したときに送出されます。 ファイルアップロードの正常終了後、サーバーからデータを受信したときに送出されます。securityErrorflash.events:SecurityErrorEventセキュリティ侵害が原因でアップロードが失敗した場合に送出されます。 セキュリティ侵害が原因でアップロードが失敗した場合に送出されます。httpStatusflash.events:HTTPStatusEventHTTP エラーが原因でアップロードが失敗した場合に送出されます。 HTTP エラーが原因でアップロードが失敗した場合に送出されます。httpResponseStatusflash.events:HTTPStatusEventアップロード操作が正常に完了すると、サーバーは応答 URL と応答ヘッダーを返します。 アップロード操作が正常に完了すると、サーバーは応答 URL と応答ヘッダーを返します。ioErrorflash.events:IOErrorEvent次のいずれかの場合に呼び出されます。
  • Adobe AIR によるファイルの読み込み中、書き込み中、または転送中に入出力エラーが発生したためにアップロードが失敗した場合。
  • ユーザー名とパスワードなど、認証が必要なサーバーにファイルをアップロードしようとしたことが原因でアップロードが失敗した場合。アップロード中、ユーザーがパスワードを入力する方法はありません。
  • url パラメーターに無効なプロトコルが含まれるために、アップロードが失敗した場合。FileReference.upload() は HTTP または HTTPS を使用する必要があります。
次のいずれかの場合に呼び出されます。Adobe AIR によるファイルの読み込み中、書き込み中、または転送中に入出力エラーが発生したためにアップロードが失敗した場合。ユーザー名とパスワードなど、認証が必要なサーバーにファイルをアップロードしようとしたことが原因でアップロードが失敗した場合。
upload リモートサーバーへのファイルのアップロードを開始します。信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。この問題を回避するには、この SWF ファイルを、ネットワークアクセスを許可されたローカル SWF ファイル、または信頼できる SWF ファイルとして再分類します。この例外がスローされると、アクセスできないローカルファイルの名前および URL を示すメッセージが送信されます。 SecurityErrorSecurityError一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。 SecurityErrorSecurityError次の状況でスローされます。1)他の FileReference ブラウズセッション、または FileReferenceList ブラウズセッションが進行中の場合。ファイルブラウズのセッションは、一度に 1 つのみ実行できます。2) URL パラメーターが有効なパスまたはプロトコルでない場合。ファイルのアップロードでは HTTP を使用し、ファイルのダウンロードでは FTP または HTTP を使用する必要があります。3) uploadDataFieldName パラメーターが null に設定されている場合。4) ユーザーの mms.cfg ファイルの設定により、この操作が禁止されている場合。 IllegalOperationErrorflash.errors:IllegalOperationError次の状況でスローされます。1) uploadDataFieldName パラメーターが空のストリングの場合。2) url.data が ByteArray 型の場合。FileReference.upload() メソッドおよび FileReference.download() メソッドと一緒に使用する場合、url.data は URLVariables 型または String 型のみになります。3) AIR ランタイム(アプリケーションセキュリティサンドボックス内)で、URLRequest のメソッドが GET または POST でない場合(代わりに uploadEncoded() を使用します)。 ArgumentErrorArgumentErrorこのエラーは、次の理由で発生する可能性があります。1) Flash Player では URLRequest.data パラメーターを UTF8 から MBCS に変換できません。このエラーは、FileReference.upload() に渡された URLRequest オブジェクトが GET 操作を行うように設定されている場合、および System.useCodePagetrue に設定されている場合に発生することがあります。2) Flash Player では POST データにメモリを割り当てることができません。このエラーは、FileReference.upload() に渡された URLRequest オブジェクトが POST 操作を行うように設定されている場合に発生することがあります。 MemoryErrorflash.errors:MemoryErrorrequestflash.net:URLRequestURLRequest オブジェクトです。URLRequest オブジェクトの url プロパティには、HTTP の POST 呼び出しを使用してアップロードを処理するように設定したサーバースクリプトの URL を設定する必要があります。一部のブラウザーでは、URL ストリングの長さに制限があるものがあります。長さが 256 文字を超える場合、一部のブラウザーまたはサーバーでは失敗する場合があります。このパラメーターが null の場合、例外がスローされます。URLRequest オブジェクトの requestHeaders プロパティは無視されるため、カスタム HTTP リクエストヘッダーはアップロードまたはダウンロードでサポートされません。

この URL では、HTTP または HTTPS(セキュアアップロード)を使用できます。HTTPS を使用するには、url パラメーターで HTTPS url を使用します。url パラメーターにポート番号を指定しない場合、HTTP の場合はポート 80、HTTPS の場合はポート 443 がデフォルトでは使用されます。

POST パラメーターまたは GET パラメーターをサーバーに送信するには、URLRequest オブジェクトの data プロパティに任意のパラメーターを設定し、method プロパティを URLRequestMethod.POST または URLRequestMethod.GET に設定します。

uploadDataFieldNameStringFiledataアップロード POST 操作のファイルデータに先行するフィールド名です。uploadDataFieldName 値は、null 以外、空白以外のストリングである必要があります。デフォルトでは、uploadDataFieldName の値は "Filedata" です。次のサンプル POST 要求を参照してください。
    Content-Type: multipart/form-data; boundary=AaB03x
    --AaB03x 
    Content-Disposition: form-data; name="Filedata"; filename="example.jpg" 
    Content-Type: application/octet-stream
    ... contents of example.jpg ... 
    --AaB03x-- 
    
testUploadBooleanfalseテストファイルアップロードを要求するための設定です。testUploadtrue の場合、10 KB を超えるファイルに対し、Flash Player は、Content-Length を 0 としてテストファイルアップロードの POST を試行します。 テストアップロードでは、実際のファイルアップロードが成功するかどうか、必要な場合はサーバー認証が成功するかどうかがチェックされます。 テストアップロードは、Windows プレーヤーでのみ使用できます。 リモートサーバーへのファイルのアップロードを開始します。
リモートサーバーへのファイルのアップロードを開始します。Flash Player ではアップロードまたはダウンロードできるファイルのサイズに制限はありませんが、このプレーヤーが正式にサポートしているアップロードまたはダウンロードのサイズは最大 100 MB です。このメソッドを呼び出す前に、FileReference.browse() メソッドまたは FileReferenceList.browse() メソッドを呼び出す必要があります。

FileReference クラスを拡張する Adobe AIR File クラスの場合は、upload() メソッドを使用して任意のファイルをアップロードできます。Flash Player で使用される FileReference クラスの場合は、ユーザーは最初にファイルを選択する必要があります。

リスナーは、アップロードが進行中なのか、成功したのか、失敗したのかを示すイベントを受け取ります。FileReferenceList オブジェクトを使用すると、ユーザーが複数のファイルを選択してアップロードすることが可能になりますが、ファイルは 1 つずつアップロードする必要があります。この操作を実行するには、FileReference オブジェクトの FileReferenceList.fileList 配列で繰り返し処理を実行します。

FileReference.upload() 関数と FileReference.download() 関数はノンブロッキング処理を行います。これらの関数は呼び出された後、ファイル転送が完了する前に返されます。さらに、FileReference オブジェクトがスコープ外に移動した場合、そのオブジェクトに対して完了していないアップロードまたはダウンロードは、スコープから離れた時点でキャンセルされます。アップロードまたはダウンロードの続行を期待できる限りは、FileReference オブジェクトがスコープ内にあることを確認してください。

ファイルは、url パラメーターに渡された URL にアップロードされます。URL は、アップロードを許可するよう設定されたサーバースクリプトである必要があります。Flash Player は、HTTP POST メソッドを使用してファイルをアップロードします。アップロードを処理するサーバースクリプトは、次のエレメントを持つ POST リクエストを想定しています。

  • Content-Typemultipart/form-data
  • Content-Dispositionname 属性の設定がデフォルトの "Filedata"filename 属性の設定がオリジナルファイルの名前
  • ファイルのバイナリコンテンツ

一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。

POST 要求のサンプルについては、uploadDataFieldName パラメーターの説明を参照してください。POST パラメーターまたは GET パラメーターを、upload() メソッドを使用してサーバーに送信できます。request パラメーターの説明を参照してください。

testUpload パラメーターが true で、アップロード対象のファイルが約 10 KB を超える場合、Windows 用の Flash Player は、転送が成功するかどうか検証するために、実際のファイルをアップロードする前にテストアップロードとして中身がゼロの POST 処理を送信します。その後 Flash Player は、実際のファイル内容を含む 2 番目の POST 処理を送信します。10 KB 未満のファイルの場合、Flash Player は、アップロード対象の実際のファイル内容を含むアップロード POST を 1 回だけ実行します。Macintosh 用の Flash Player は、テストアップロードの POST 処理を実行しません。

注意:サーバーでユーザー認証が必要な場合、ブラウザー内で実行される、つまり、ブラウザープラグインまたは ActiveX コントロールを使用する SWF ファイルでのみ、認証用のユーザー名とパスワードをユーザーが入力できるダイアログボックスを表示できます。ただし、それはダウンロードの場合のみです。プラグインまたは ActiveX コントロールを使用するアップロードの場合、または、スタンドアローンまたは外部 Player を使用するアップロードとダウンロードの場合、ファイル転送は失敗します。

このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。

  • 呼び出し元 SWF ファイルが信頼されないコードとしてローカルのサンドボックスに置かれている場合、ロード操作は実行できません。
  • デフォルトの動作では、サンドボックス間のアクセスは拒否されます。URL ポリシーファイルを追加することによって、Web サイトでリソースにアクセスできるようになります。
  • SWF ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含んでいる HTML ページに allowNetworking パラメーター(object タグおよび embed タグのパラメーター)を設定します。

ただし、Adobe AIR では、アプリケーションセキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

Flash Player に追加された新しい機能により、Flash Player 10 にパブリッシュする場合は、FileReference.browse()FileReference.upload()FileReference.download()FileReference.load() および FileReference.save() の中で、同時に実行できる操作は 1 つのみです。複数の操作を実行すると、Flash Player でランタイムエラー(コード 2174)が発生します。進行中の操作を停止するには、FileReference.cancel() を使用します。この制限は Flash Player 10 にのみ適用されます。以前のバージョンの Flash Player については、同時に複数の操作を実行しても、この制限には影響されません。

FileReference.browse()FileReferenceList.browse()FileReference.download()FileReferenceList.fileListFileReference.load()openflash.events:Eventアップロード処理が開始したときに送出されます。 アップロード処理が開始したときに送出されます。progressflash.events:ProgressEventファイルのアップロード処理中に定期的に送出されます。 ファイルのアップロード処理中に定期的に送出されます。completeflash.events:Eventファイルのアップロード処理が正常に完了したときに送出されます。 ファイルのアップロード処理が正常に完了したときに送出されます。uploadCompleteDataflash.events:DataEventファイルアップロードの正常終了後、サーバーからデータを受信したときに送出されます。 ファイルアップロードの正常終了後、サーバーからデータを受信したときに送出されます。securityErrorflash.events:SecurityErrorEventセキュリティ侵害が原因でアップロードが失敗した場合に送出されます。 セキュリティ侵害が原因でアップロードが失敗した場合に送出されます。httpStatusflash.events:HTTPStatusEventHTTP エラーが原因でアップロードが失敗した場合に送出されます。 HTTP エラーが原因でアップロードが失敗した場合に送出されます。httpResponseStatusflash.events:HTTPStatusEventアップロード操作が正常に完了すると、サーバーは応答 URL と応答ヘッダーを返します。 アップロード操作が正常に完了すると、サーバーは応答 URL と応答ヘッダーを返します。ioErrorflash.events:IOErrorEvent次のいずれかの場合に呼び出されます。
  • Flash Player または Adobe AIR によるファイルの読み込み中、書き込み中、または転送中に入出力エラーが発生したためにアップロードが失敗した場合。
  • ユーザー名とパスワードなど、認証が必要なサーバーにファイルをアップロードしようとしたことが原因でアップロードが失敗した場合。アップロード中、ユーザーがパスワードを入力する方法はありません。
  • url パラメーターに無効なプロトコルが含まれるために、アップロードが失敗した場合。FileReference.upload() は HTTP または HTTPS を使用する必要があります。
次のいずれかの場合に呼び出されます。Flash Player または Adobe AIR によるファイルの読み込み中、書き込み中、または転送中に入出力エラーが発生したためにアップロードが失敗した場合。ユーザー名とパスワードなど、認証が必要なサーバーにファイルをアップロードしようとしたことが原因でアップロードが失敗した場合。
creationDate ローカルディスク上に存在するファイルの作成日です。DateFileReference.browse()FileReferenceList.browse()、または FileReference.download() メソッドの呼び出しが失敗すると、例外がスローされ、関数の呼び出しシーケンスが正しくないこと、または以前の呼び出しが失敗したことを知らせるメッセージが送信されます。この場合、creationDate プロパティの値は null です。 IllegalOperationErrorflash.errors:IllegalOperationErrorファイル情報にアクセスできない場合、I/O エラーを示すメッセージとともにエラーがスローされます。 IOErrorflash.errors:IOErrorファイルの作成日を Date オブジェクトとして取得します。 ローカルディスク上に存在するファイルの作成日です。オブジェクトに値が設定されていない場合に、このプロパティの値を取得する呼び出しが行われると null が返されます。 FileReference.browse()creator Macintosh クリエータータイプのファイルです。このファイルは、Mac OS X より前のバージョンの Mac OS でのみ使用されます。StringMacintosh では、FileReference.browse()FileReferenceList.browse()、または FileReference.download() メソッドの呼び出しが失敗すると、例外がスローされ、関数の呼び出しシーケンスが正しくないこと、または以前の呼び出しが失敗したことを知らせるメッセージが送信されます。この場合、creator プロパティの値は null です。 IllegalOperationErrorflash.errors:IllegalOperationErrorMacintosh クリエータータイプです。 ファイルの Macintosh クリエータータイプです。Macintosh クリエータータイプは、Mac OS X より前のバージョンの Mac OS でのみ使用されます。Windows または Linux では、このプロパティは null です。FileReference オブジェクトに値が設定されていない場合に、このプロパティの値を取得する呼び出しが行われると null を返します。 FileReference.browse()FileReference.extensiondata load() メソッドの呼び出しが成功した後に読み込まれるファイルからのデータを表す ByteArray オブジェクト。flash.utils:ByteArrayload() メソッドの呼び出しが失敗すると、例外がスローされ、関数の呼び出しシーケンスが正しくないこと、または以前の呼び出しが失敗したことを知らせるメッセージが送信されます。この場合、data プロパティの値は null です。 IllegalOperationErrorflash.errors:IllegalOperationErrorファイルを開くことや読み取ることができない場合、またはファイルへのアクセスで同様のエラーが発生した場合、例外がスローされ、ファイルの I/O エラーを知らせるメッセージが送信されます。この場合、data プロパティの値は null です。 IOErrorflash.errors:IOErrorファイルの読み込まれた ByteArray データです。 load() メソッドの呼び出しが成功した後に読み込まれるファイルからのデータを表す ByteArray オブジェクト。 FileReference.browse()FileReference.load()extension ファイル名拡張子です。String参照が初期化されていない場合。 IllegalOperationErrorflash.errors:IllegalOperationError ファイル名拡張子です。

ファイルの拡張子は、名前内の最後のドット(".")の後の部分です(ドットは含みません)。ファイル名内にドットがない場合、拡張子は null です。

注意:ファイルのタイプを確認するには、extension プロパティを使用する必要があります。creator プロパティまたは type プロパティは使用しないでください。creator プロパティと type プロパティは非推奨のプロパティと考えてください。これらのプロパティは、Mac OS の古いバージョンに適用されます。

modificationDate ローカルディスク上に存在するファイルの最終変更日です。DateFileReference.browse()FileReferenceList.browse()、または FileReference.download() メソッドの呼び出しが失敗すると、例外がスローされ、関数の呼び出しシーケンスが正しくないこと、または以前の呼び出しが失敗したことを知らせるメッセージが送信されます。この場合、modificationDate プロパティの値は null です。 IllegalOperationErrorflash.errors:IllegalOperationErrorファイル情報にアクセスできない場合、I/O エラーを示すメッセージとともにエラーがスローされます。 IOErrorflash.errors:IOErrorファイルの修正日を Date オブジェクトとして取得します。 ローカルディスク上に存在するファイルの最終変更日です。FileReference オブジェクトに値が設定されていない場合に、このプロパティの値を取得する呼び出しが行われると null を返します。 FileReference.browse()name ローカルディスク上に存在するファイルの名前です。StringFileReference.browse()FileReferenceList.browse() または FileReference.download() メソッドの呼び出しが失敗すると、例外がスローされ、関数の呼び出しシーケンスが正しくないこと、または以前の呼び出しが失敗したことを知らせるメッセージが送信されます。 IllegalOperationErrorflash.errors:IllegalOperationErrorファイルの名前をストリングとして取得します。 ローカルディスク上に存在するファイルの名前です。(FileReference.download() または FileReference.browse() の有効な呼び出しにより) FileReference オブジェクトに値が設定されていない場合にこのプロパティの値を取得しようとすると、Flash Player はエラーをスローします。

FileReference オブジェクトのすべてのプロパティの値は、browse() メソッドを呼び出すことにより設定されます。download() メソッドを呼び出した場合、FileReference の他のプロパティと異なり、name プロパティの値は select イベントが送出されたときに設定されます。

FileReference.browse()
size ローカルディスク上に存在するファイルのサイズ(バイト単位)です。NumberFileReference.browse()FileReferenceList.browse() または FileReference.download() メソッドの呼び出しが失敗すると、例外がスローされ、関数の呼び出しシーケンスが正しくないこと、または以前の呼び出しが失敗したことを知らせるメッセージが送信されます。 IllegalOperationErrorflash.errors:IllegalOperationErrorファイルを開くことや読み取ることができない場合、またはファイルへのアクセスで同様のエラーが発生した場合、例外がスローされ、ファイルの I/O エラーを知らせるメッセージが送信されます。 IOErrorflash.errors:IOErrorバイト単位のファイルサイズです。 ローカルディスク上に存在するファイルのサイズ(バイト単位)です。size が 0 の場合、例外がスローされます。

注意:ActionScript 3.0 の初期のバージョンでは、size プロパティは、4 GB 程度までのサイズのファイルをサポートする uint オブジェクトとして定義されていました。現在では、それよりも大きいファイルをサポートする Number オブジェクトとして実装されています。

FileReference.browse()
type ファイル形式です。StringFileReference.browse()FileReferenceList.browse()、または FileReference.download() メソッドの呼び出しが失敗すると、例外がスローされ、関数の呼び出しシーケンスが正しくないこと、または以前の呼び出しが失敗したことを知らせるメッセージが送信されます。この場合、type プロパティの値は null です。 IllegalOperationErrorflash.errors:IllegalOperationErrorファイルのタイプまたは拡張子を取得します。 ファイル形式です。

Windows または Linux の場合、このプロパティはファイル拡張子になります。Macintosh では、このプロパティは 4 文字のファイルタイプです。これは、Mac OS X より前のバージョンの Mac OS でのみ使用されます。FileReference オブジェクトに値が設定されていない場合に、このプロパティの値を取得する呼び出しを行うと、null が返されます。

Windows、Linux および Mac OS X の場合、ファイル拡張子(name プロパティの、最後のドット(.)の後の部分)でファイル形式を示します。

FileReference.extension
FileReferenceList FileReferenceList クラスは、ユーザーがアップロードするファイルを選択する手段を提供します。1 つまたは複数のファイルをアップロードする手段を提供します。 flash.events:EventDispatcher FileReferenceList クラスは、ユーザーがアップロードするファイルを選択する手段を提供します。FileReferenceList オブジェクトは、ユーザーのディスク上にあるローカルファイルを FileReference オブジェクトの配列として表現します。FileReference オブジェクトと FileReference クラスの詳細および重要な考慮事項については、FileReference クラスを参照してください。これらは FileReferenceList で使用します。

FileReferenceList クラスを使用するには

  • このクラスのインスタンスを作成します。var myFileRef = new FileReferenceList();
  • FileReferenceList.browse() メソッドを呼び出して、アップロードするファイルをユーザーが選択できるダイアログボックスを開きます。myFileRef.browse();
  • browse() メソッドが正常に呼び出された後、FileReferenceList オブジェクトの fileList プロパティに FileReference オブジェクトの配列が設定されます。
  • FileReference.upload()fileList 配列のエレメントごとに呼び出します。

FileReferenceList クラスには、browse() メソッドや、複数のファイルを扱うための fileList プロパティなどが含まれます。FileReferenceList.browse() の呼び出しが実行されている間に、SWF ファイル再生は Linux および Mac OS X 10.1 以前の Flash Player のスタンドアローンバージョンと外部バージョンおよび AIR で一時停止します。

次の例は、イベントを使用して複数ファイルのアップロードを管理する方法を示しています。CustomFileReferenceList クラスは FileReferenceList を継承し、complete イベントを含んでいます。このイベントは、FileReferenceList オブジェクト内の個々のファイルがアップロードされるたびに送出されます。FileReferenceListExample クラスの LIST_COMPLETE イベントは、FileReferenceList オブジェクト内のすべてのファイルがアップロードされると送出されます。

この例を実行するには、ファイルアップロードの受け取り処理を記述したスクリプトを、http://www.[yourDomain].com/yourUploadHandlerScript.cfm に配置します。SWF ファイルの場所とファイルのアップロード先によっては、「ローカルでの再生に関するセキュリティ」を「ネットワークにのみアクセスする」に設定して SWF ファイルをコンパイルするか、Flash® Player のセキュリティ設定を更新してこのファイルのネットワークアクセスを許可する必要がある場合もあります。アップロードサーバーがリモートで、この例をデスクトップコンピューターから実行する場合、サーバーには "crossdomain.xml" ファイルが必要です。

package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.FileReferenceList; public class FileReferenceListExample extends Sprite { public static var LIST_COMPLETE:String = "listComplete"; public function FileReferenceListExample() { initiateFileUpload(); } private function initiateFileUpload():void { var fileRef:CustomFileReferenceList = new CustomFileReferenceList(); fileRef.addEventListener(FileReferenceListExample.LIST_COMPLETE, listCompleteHandler); fileRef.browse(fileRef.getTypes()); } private function listCompleteHandler(event:Event):void { trace("listCompleteHandler"); } } } import flash.events.*; import flash.net.FileReference; import flash.net.FileReferenceList; import flash.net.FileFilter; import flash.net.URLRequest; class CustomFileReferenceList extends FileReferenceList { private var uploadURL:URLRequest; private var pendingFiles:Array; public function CustomFileReferenceList() { uploadURL = new URLRequest(); uploadURL.url = "http://www.[yourDomain].com/yourUploadHandlerScript.cfm"; initializeListListeners(); } private function initializeListListeners():void { addEventListener(Event.SELECT, selectHandler); addEventListener(Event.CANCEL, cancelHandler); } public function getTypes():Array { var allTypes:Array = new Array(); allTypes.push(getImageTypeFilter()); allTypes.push(getTextTypeFilter()); return allTypes; } private function getImageTypeFilter():FileFilter { return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png"); } private function getTextTypeFilter():FileFilter { return new FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf"); } private function doOnComplete():void { var event:Event = new Event(FileReferenceListExample.LIST_COMPLETE); dispatchEvent(event); } private function addPendingFile(file:FileReference):void { trace("addPendingFile: name=" + file.name); pendingFiles.push(file); file.addEventListener(Event.OPEN, openHandler); file.addEventListener(Event.COMPLETE, completeHandler); file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); file.addEventListener(ProgressEvent.PROGRESS, progressHandler); file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); file.upload(uploadURL); } private function removePendingFile(file:FileReference):void { for (var i:uint; i < pendingFiles.length; i++) { if (pendingFiles[i].name == file.name) { pendingFiles.splice(i, 1); if (pendingFiles.length == 0) { doOnComplete(); } return; } } } private function selectHandler(event:Event):void { trace("selectHandler: " + fileList.length + " files"); pendingFiles = new Array(); var file:FileReference; for (var i:uint = 0; i < fileList.length; i++) { file = FileReference(fileList[i]); addPendingFile(file); } } private function cancelHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("cancelHandler: name=" + file.name); } private function openHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("openHandler: name=" + file.name); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function completeHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("completeHandler: name=" + file.name); removePendingFile(file); } private function httpErrorHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("httpErrorHandler: name=" + file.name); } private function ioErrorHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("ioErrorHandler: name=" + file.name); } private function securityErrorHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("securityErrorHandler: name=" + file.name + " event=" + event.toString()); } }
FileReferenceselect ユーザーがアップロードするファイルをファイル参照ダイアログボックスから 1 つ以上選択したときに送出されます。flash.events.Event.SELECTflash.events.Event ユーザーがアップロードするファイルをファイル参照ダイアログボックスから 1 つ以上選択したときに送出されます。(このダイアログボックスは、FileReferenceList.browse() メソッド、FileReference.browse() メソッド、または FileReference.download() メソッドを呼び出したときに開かれます。)ユーザーがファイルを選択し、「保存」などをクリックして操作を確定すると、ユーザーが選択したファイルを表す FileReference オブジェクトが FileReferenceList オブジェクトに設定されます。 FileReferenceList.browse()cancel ユーザーがファイル参照ダイアログボックスを閉じると、送出されます。flash.events.Event.CANCELflash.events.Event ユーザーがファイル参照ダイアログボックスを閉じると、送出されます。(このダイアログボックスは、FileReferenceList.browse() メソッド、FileReference.browse() メソッド、または FileReference.download() メソッドを呼び出したときに開かれます。) FileReferenceList.browse()FileReferenceList 新しい FileReferenceList オブジェクトを作成します。 新しい FileReferenceList オブジェクトを作成します。FileReferenceList オブジェクトで browse() メソッドが呼び出され、ユーザーがファイルを選択するまでは、FileReferenceList オブジェクトには何も含まれません。FileReference オブジェクトで browse() を呼び出すと、このオブジェクトの fileList プロパティに FileReference オブジェクトの配列が設定されます。 FileReferenceFileReferenceList.browse()browse アップロードするローカルファイルを 1 つ以上選択できるファイル参照ダイアログボックスを表示します。次の理由によりスローされます。1)他の FileReference ブラウズセッション、または FileReferenceList ブラウズセッションが進行中の場合。ファイルブラウズのセッションは、一度に 1 つのみ実行できます。2)ユーザーの mms.cfg ファイルの設定により、この操作が禁止されている場合。 IllegalOperationErrorflash.errors:IllegalOperationErrortypeFilter 配列に、正しい形式の FileFilter オブジェクトが含まれていないと、例外がスローされます。正しいフィルター形式について詳しくは、FileFilter の説明を参照してください。 ArgumentErrorArgumentErrorマウスイベントやキー入力イベントなどのユーザー操作に応じてメソッドが呼び出されない場合。 ErrorErrorパラメーターが有効で、ファイル参照ダイアログボックスが表示された場合に、true を返します。 BooleantypeFilterArraynullダイアログボックスに表示するファイルをフィルターにかける場合に使用する FileFilter インスタンスの配列です。このパラメーターを省略すると、すべてのファイルが表示されます。詳細については、FileFilter クラスを参照してください。 アップロードするローカルファイルを選択できるファイル参照ダイアログボックスを表示します。 アップロードするローカルファイルを 1 つ以上選択できるファイル参照ダイアログボックスを表示します。このダイアログボックスは、オペレーティングシステムのネイティブのダイアログボックスです。

Flash Player 10 以降では、このメソッドの呼び出しは、マウスのクリックやキー入力などのユーザーイベントに応じてイベントハンドラーで呼び出した場合にのみ成功します。それ以外の場合は、このメソッドを呼び出すと、Flash Player から例外がスローされます。

このメソッドが呼び出されて、ユーザーが正常にファイルを選択すると、この FileReferenceList オブジェクトの fileList プロパティに FileReference オブジェクトの配列が設定されます。ユーザーが選択したファイル 1 つにつき 1 つの FileReference オブジェクトになります。これ以降 FileReferenceList.browse() メソッドが呼び出されるたびに、FileReferenceList.fileList プロパティは、ダイアログボックスでユーザーが選択したファイルに再設定されます。

どのファイルをダイアログボックスに表示するかを決定するために、typeFilter パラメーターを使用できます。

FileReferenceList オブジェクトでは、一度に 1 つの FileReference.browse() セッション、FileReference.download() セッション、または FileReferenceList.browse() セッションだけを実行できます。これは、一度に 1 つのダイアログボックスしか開けないからです。

FileReference.browse()FileReference クラスFileFilter classselectflash.events:Eventアップロード対象の項目をユーザーがダイアログボックスで正常に選択したときに呼び出されます。 アップロード対象の項目をユーザーがダイアログボックスで正常に選択したときに呼び出されます。cancelflash.events:Eventユーザーが「キャンセル」をクリックするかダイアログボックスを閉じたときに呼び出されます。 ユーザーが「キャンセル」をクリックするかダイアログボックスを閉じたときに呼び出されます。
fileList FileReference オブジェクトの配列です。ArrayFileReference オブジェクトの配列です。 FileReference オブジェクトの配列です。

FileReferenceList.browse() メソッドが呼び出され、browse() メソッドが開いたダイアログボックスからユーザーがファイルを選択すると、このプロパティに FileReference オブジェクトの配列が設定されます。FileReference オブジェクトのそれぞれが、ユーザーが選択したファイルを表します。その後、この配列を使用して、FileReference.upload() メソッドで各ファイルをアップロードできます。一度に 1 つのファイルをアップロードする必要があります。

fileList プロパティは、browse() が FileReferenceList オブジェクトで呼び出されるたびに新しく設定されます。

FileReference オブジェクトのプロパティについては、FileReference クラスの説明を参照してください。

FileReferenceFileReference.upload()FileReferenceList.browse()
NetworkInterface NetworkInterface クラスは、ネットワークインターフェイスを記述します。Object NetworkInterface クラスは、ネットワークインターフェイスを記述します。

NetworkInfo オブジェクトの findInterfaces() メソッドを呼び出すことによってネットワークインターフェイスのリストを取得できます。

NetworkInfoInterfaceAddressactive このインターフェイスがアクティブかどうかをレポートします。Boolean このインターフェイスがアクティブかどうかをレポートします。 addresses このネットワークインターフェイスにバインドされるアドレスのリストです。 このネットワークインターフェイスにバインドされるアドレスのリストです。 displayName このネットワークインターフェイスの表示名です。String このネットワークインターフェイスの表示名です。 hardwareAddress このネットワークインターフェイスのハードウェアアドレスです。String このネットワークインターフェイスのハードウェアアドレスです。

ハードウェアアドレスは、通常、ネットワークアダプターまたはインターフェイスカードの MAC (Media Access Control) アドレスです。

mtu このネットワークインターフェイスの最大転送単位(MTU)です。int このネットワークインターフェイスの最大転送単位(MTU)です。

mtu 値が -1 と報告される場合、実際に MTU は不明です。

name このネットワークインターフェイスの名前です。String このネットワークインターフェイスの名前です。 parent 親インターフェイスを表す NetworkInterface オブジェクト(このインターフェイスに親がある場合)です。flash.net:NetworkInterface 親インターフェイスを表す NetworkInterface オブジェクト(このインターフェイスに親がある場合)です。

このインターフェイスがサブインターフェイスである場合、このインターフェイスが親を持つ場合があります。このインターフェイスが親を持たない場合、parent プロパティは null です。

subInterfaces このネットワークインターフェイスに接続されているサブインターフェイスのリストです。 このネットワークインターフェイスに接続されているサブインターフェイスのリストです。

サブインターフェイスは仮想インターフェイスの場合がよくあります。このインターフェイスがサブインターフェイスを持たない場合、subInterfaces プロパティは null です。

SharedObjectFlushStatus SharedObjectFlushStatus クラスは、SharedObject.flush() メソッドの呼び出しから返されるコードの値を提供します。Object SharedObjectFlushStatus クラスは、SharedObject.flush() メソッドの呼び出しから返されるコードの値を提供します。 SharedObject.flush()FLUSHED フラッシュが正常に完了したことを示します。flushedString フラッシュが正常に完了したことを示します。 SharedObject.flush()PENDING フラッシュが実行できるように、共有オブジェクトのディスク領域を増やすことを促すメッセージがユーザーに対して表示されることを示します。pendingString フラッシュが実行できるように、共有オブジェクトのディスク領域を増やすことを促すメッセージがユーザーに対して表示されることを示します。 SharedObject.flush()SecureSocket SecureSocket クラスを使用すると、コード内のソケット接続で、Secure Sockets Layer(SSL)プロトコルおよび Transport Layer Security(TLS)プロトコルを利用することができます。flash.net:Socket SecureSocket クラスを使用すると、コード内のソケット接続で、Secure Sockets Layer(SSL)プロトコルおよび Transport Layer Security(TLS)プロトコルを利用することができます。

AIR プロファイルのサポート:この機能はすべてのデスクトップオペレーティングシステムでサポートされますが、一部のテレビ用 AIR デバイスではサポートされません。また、モバイルデバイスではサポートされません。SecureSocket.isSupported プロパティを使用して、サポートされているかどうかを実行時にテストすることができます。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。

SSL/TLS プロトコルによって、証明書を使用してホストの ID を認証するためのメカニズムが提供されます。また、ソケット経由の暗号化通信も利用できるようになります。SSLv3 および TLSv1 がサポートされます。サーバー証明書の検証は、信頼ストアとクライアントプラットフォームの証明書検証サポートを使用して実行されます。

SecureSocket クラスは、信頼できる有効な証明書を備えたサーバーにのみ接続します。サーバーの証明書に問題がある場合には、そのサーバーへの接続を選択することはできません。例えば、サーバーの証明書の有効期限が切れていたり、信頼できるルート証明書にサーバーの証明書がチェーンしていない場合、その証明書が有効であっても接続はできません。

SecureSocket クラスは、信頼できるサーバーに対して暗号化通信を行う場合に役立ちます。その他の点では、SecureSocket オブジェクトは、通常の Socket オブジェクトと同様に動作します。

SecureSocket クラスのメソッドを使用するには、まず new SecureSocket() コンストラクターを使用して SecureSocket オブジェクトを作成します。サーバーに接続するときに、サーバー証明書が検証されます。証明書が有効で信頼されている場合、接続が確立され、ソケットは connect イベントを送出します。証明書を検証できなかった場合、ソケットは IOError イベントを送出します。

重要:OCSP(Online Certificate Status Protocol)は、一部のオペレーティングシステムではサポートされません。また、ユーザーは、個々のコンピューターで OCSP チェックを無効にすることができます。OCSP がサポートされていないか無効になっていて、さらに、CRL(証明書失効リスト)を使用して行われる失効確認に必要な情報が証明書に含まれていない場合、証明書失効の確認は行われません。失効以外の内容が有効であれば、証明書は受け入れられます。その結果、失効した証明書の使用をサーバーが許可するおそれがあります。

次の例では、SecureSocket オブジェクトを作成および接続する方法を示します。 package { import flash.display.Sprite; import flash.errors.IOError; import flash.events.Event; import flash.events.IOErrorEvent; import flash.net.SecureSocket; public class SecureSocketExample extends Sprite { private var secureSocket:SecureSocket = new SecureSocket(); public function SecureSocketExample() { secureSocket.addEventListener( Event.CONNECT, onConnect ) secureSocket.addEventListener( IOErrorEvent.IO_ERROR, onError ); try { secureSocket.connect( "208.77.188.166", 443 ); } catch ( error:Error ) { trace ( error.toString() ); } } private function onConnect( event:Event ):void { trace("Connected."); } private function onError( error:IOErrorEvent ):void { trace( error.text + ", " + secureSocket.serverCertificateStatus ); } } }
Socket クラスsocketData ソケットがデータを受信したときに送出されます。flash.events.ProgressEvent.SOCKET_DATAflash.events.ProgressEvent ソケットがデータを受信したときに送出されます。socketData タイプのイベントでは、ProgressEvent.bytesTotal プロパティは使用されません。 ioError 入出力エラーが発生して送信または受信操作が失敗したときに送出されます。flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent 入出力エラーが発生して送信または受信操作が失敗したときに送出されます。

サーバー証明書を検証できない場合、送出されるエラーイベントは IOError です。この場合は、serverCertificateStatus プロパティをチェックして、問題の原因を確認できます。

connect ネットワーク接続が確立されたときに送出されます。flash.events.Event.CONNECTflash.events.Event ネットワーク接続が確立されたときに送出されます。 close サーバーによりソケット接続が閉じられたときに送出されます。flash.events.Event.CLOSEflash.events.Event サーバーによりソケット接続が閉じられたときに送出されます。

close イベントは、サーバーにより接続が閉じられたときにのみ送出されます。SecureSocket.close() メソッドを呼び出しても送出されません。

SecureSocket 新しい SecureSocket オブジェクトを作成します。このエラーは、SSLv3 または TLSv1 がサポートされない場合に発生します。 IllegalOperationErrorflash.errors:IllegalOperationError 新しい SecureSocket オブジェクトを作成します。

SecureSocket インスタンスを作成する前に、SecureSocket.isSupported をチェックします。SSLv3 ソケットまたは TLSv1 ソケットがサポートされない場合、ランタイムは IllegalOperationError をスローします。

connect ソケットを、SSL または TLS を使用する指定されたホストおよびポートに接続します。ホストが指定されていないので、接続に失敗しました。 IOErrorflash.errors:IOErrorこのエラーは、0 未満または 65535 を超えるソケットポートを指定した場合に発生します。 SecurityErrorSecurityErrorhostString接続するホストのホスト名または IP アドレスです。 portint接続先のポート番号です。 ソケットを、SSL または TLS を使用する指定されたホストおよびポートに接続します。

connect() メソッドを呼び出すときに、サーバー証明書が検証されます。SSL/TLS ハンドシェイクに成功し、証明書が有効で信頼できる場合、接続が確立され、ソケットにより connect イベントが送出されます。ハンドシェイクに失敗するか、証明書を検証できなかった場合は、IOError イベントが送出されます。これらのイベントのいずれかが送出された後、serverCertificateStatus プロパティを読み取ることによって証明書の検証結果を確認できます(connect イベントが送出される場合、証明書ステータスは常に trusted です)。

ソケットが既に接続済みの場合、最初に既存の接続が閉じられます。

connectflash.events:Eventネットワーク接続が確立されたときに送出されます。 ネットワーク接続が確立されたときに送出されます。ioErrorflash.events:IOErrorEventホストが指定されていて、入出力エラーが発生して接続が失敗した場合に送出されます。これには、SSL/TLS ハンドシェイクエラーや、ホストのサーバー証明書の検証の失敗が含まれます。 ホストが指定されていて、入出力エラーが発生して接続が失敗した場合に送出されます。
isSupported 現在のシステムでセキュアソケットがサポートされているかどうかを示します。Boolean 現在のシステムでセキュアソケットがサポートされているかどうかを示します。

セキュアソケットは、すべてのプラットフォームでサポートされているわけではありません。新しい SecureSocket インスタンスを作成する前に、このプロパティをチェックします。

serverCertificateStatus サーバーの証明書のステータスです。String サーバーの証明書のステータスです。

ソケットがサーバーに接続しようと試みるまでは、ステータスは CertificateStatus.UNKNOWN です。検証後、ステータスは、CertificateStatus クラスによって列挙されたストリングのいずれかになります。接続は、証明書が有効で信頼されている場合にのみ、成功します。つまり、connect イベントの後は、ステータスは常に trusted です。

注意:いったん証明書が検証されるか拒否された後は、次に connect() メソッドを呼び出すまではステータス値は更新されません。close() を呼び出しても、ステータス値は "unknown" にリセットされません。

CertificateStatus クラス
ServerSocket ServerSocket クラスを使用して、コードを Transport Control Protocol(TCP)接続用サーバーとして動作させることができます。flash.events:EventDispatcher ServerSocket クラスを使用して、コードを Transport Control Protocol(TCP)接続用サーバーとして動作させることができます。

AIR プロファイルのサポート:この機能はすべてのデスクトップオペレーティングシステムでサポートされますが、モバイルデバイスまたはテレビ用 AIR デバイスではサポートされません。ServerSocket.isSupported プロパティを使用して、サポートされているかどうかを実行時にテストすることができます。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。

TCP サーバーはリモートクライアントからの受信接続を待機します。クライアントが接続しようとすると、ServerSocket が connect イベントを送出します。このイベントで送出される ServerSocketConnectEvent オブジェクトはサーバーとクライアント間の TCP 接続を表す Socket オブジェクトを提供します。接続したクライアントとのその後の通信で、この Socket オブジェクトを使用します。必要な場合は、Socket オブジェクトからクライアントアドレスとポートを取得できます。

注意:アプリケーションは、クライアント Socket·オブジェクトへの参照を維持します。維持を行わない場合、このオブジェクトはガベージコレクションの対象となり、警告を表示せずにランタイムによって破棄される可能性があります。

ServerSocket オブジェクトを待機状態にするには、listen() メソッドを呼び出します。待機状態では、TCP プロトコルを使用するクライアントがバインドされたアドレスおよびポートに接続しようとするたびに、サーバーソケットオブジェクトが connect イベントを送出します。ServerSocket オブジェクトは close() メソッドを呼び出すまで追加の接続を待機し続けます。

TCP 接続は永続的であり、接続の一端が閉じられるまで(あるいは重大なネットワークエラーが発生するまで)維持されます。この接続を経由して送信されるデータは、伝送可能なパケットに分割され、接続の終端でもう一度組み立てられます。すべてのパケットは妥当な範囲で到着することが保証され、消失パケットは再送信されません。 通常、TCP プロトコルによる利用可能なネットワーク帯域幅の管理は UDP プロトコルよりも優れています。ソケット通信を必要とするほとんどの AIR アプリケーションは、DatagramSocket クラスではなく ServerSocket および Socket クラスを使用しているはずです。

ServerSocket クラスは Adobe AIR アプリケーションでのみ使用でき、アプリケーションセキュリティサンドボックスでのみ使用できます。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

次の例では、ソケットサーバーを作成します。サーバーを使用するには、ソケットをローカルポートにバインドし、他のアプリケーションからそのポートに接続します。サーバーは UTF-8 ストリングのみを認識します。 package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.events.ServerSocketConnectEvent; import flash.net.ServerSocket; import flash.net.Socket; import flash.text.TextField; import flash.text.TextFieldType; import flash.utils.ByteArray; public class ServerSocketExample extends Sprite { private var serverSocket:ServerSocket = new ServerSocket(); private var clientSocket:Socket; private var localIP:TextField; private var localPort:TextField; private var logField:TextField; private var message:TextField; public function ServerSocketExample() { setupUI(); } private function onConnect( event:ServerSocketConnectEvent ):void { clientSocket = event.socket; clientSocket.addEventListener( ProgressEvent.SOCKET_DATA, onClientSocketData ); log( "Connection from " + clientSocket.remoteAddress + ":" + clientSocket.remotePort ); } private function onClientSocketData( event:ProgressEvent ):void { var buffer:ByteArray = new ByteArray(); clientSocket.readBytes( buffer, 0, clientSocket.bytesAvailable ); log( "Received: " + buffer.toString() ); } private function bind( event:Event ):void { if( serverSocket.bound ) { serverSocket.close(); serverSocket = new ServerSocket(); } serverSocket.bind( parseInt( localPort.text ), localIP.text ); serverSocket.addEventListener( ServerSocketConnectEvent.CONNECT, onConnect ); serverSocket.listen(); log( "Bound to: " + serverSocket.localAddress + ":" + serverSocket.localPort ); } private function send( event:Event ):void { try { if( clientSocket != null && clientSocket.connected ) { clientSocket.writeUTFBytes( message.text ); clientSocket.flush(); log( "Sent message to " + clientSocket.remoteAddress + ":" + clientSocket.remotePort ); } else log("No socket connection."); } catch ( error:Error ) { log( error.message ); } } private function log( text:String ):void { logField.appendText( text + "\n" ); logField.scrollV = logField.maxScrollV; trace( text ); } private function setupUI():void { localIP = createTextField( 10, 10, "Local IP", "0.0.0.0"); localPort = createTextField( 10, 35, "Local port", "0" ); createTextButton( 170, 60, "Bind", bind ); message = createTextField( 10, 85, "Message", "Lucy can't drink milk." ); createTextButton( 170, 110, "Send", send ); logField = createTextField( 10, 135, "Log", "", false, 200 ) this.stage.nativeWindow.activate(); } private function createTextField( x:int, y:int, label:String, defaultValue:String = '', editable:Boolean = true, height:int = 20 ):TextField { var labelField:TextField = new TextField(); labelField.text = label; labelField.type = TextFieldType.DYNAMIC; labelField.width = 100; labelField.x = x; labelField.y = y; var input:TextField = new TextField(); input.text = defaultValue; input.type = TextFieldType.INPUT; input.border = editable; input.selectable = editable; input.width = 280; input.height = height; input.x = x + labelField.width; input.y = y; this.addChild( labelField ); this.addChild( input ); return input; } private function createTextButton( x:int, y:int, label:String, clickHandler:Function ):TextField { var button:TextField = new TextField(); button.htmlText = "<u><b>" + label + "</b></u>"; button.type = TextFieldType.DYNAMIC; button.selectable = false; button.width = 180; button.x = x; button.y = y; button.addEventListener( MouseEvent.CLICK, clickHandler ); this.addChild( button ); return button; } } }
ServerSocketConnectEvent クラスSocket クラスXMLSocket クラスDatagramSocket クラスconnect リモートソケットがこのサーバーソケットに接続しようとするときに送出されます。flash.events.ServerSocketConnectEvent.CONNECTflash.events.ServerSocketConnectEvent リモートソケットがこのサーバーソケットに接続しようとするときに送出されます。 close オペレーティングシステムがこのソケットを閉じたときに送出されます。flash.events.Event.CLOSEflash.events.Event オペレーティングシステムがこのソケットを閉じたときに送出されます。

close イベントは、ServerSocket close() メソッドが呼び出されるときに送出されません。アプリケーション内の他のオブジェクトは close イベントに依存し、close() メソッドを呼び出す前に手動でイベントを送出できます。

ServerSocket ServerSocket オブジェクトを作成します。コンテンツの呼び出しが AIR アプリケーションセキュリティサンドボックス外で実行される場合にこのエラーが発生します。 SecurityErrorSecurityError ServerSocket オブジェクトを作成します。 bind 指定されたローカルのアドレスおよびポートにこのソケットをバインドします。このエラーは、localPort が 0 未満か、または 65535 より大きい場合に発生します。 RangeErrorRangeErrorこのエラーは、localAddress が構文的に整形式の IP アドレスになっていない場合に発生します。 ArgumentErrorArgumentErrorソケットがバインドできないとき。例えば、次のような場合です。
  • 基になるネットワークソケット(IP とポート)が、他のオブジェクトまたはプロセスによって既にバインドされている場合。
  • アプリケーションを実行するユーザーアカウントに、ポートにバインドする十分なシステム権限がない場合(権限の問題は、通常、ウェルノウンポート localPort < 1024 にバインドしようとした場合に発生します)。
  • この ServerSocket オブジェクトが既にバインドされている場合(別のソケットにバインドする前に、close() を呼び出してください)。
  • localAddress が有効なローカルアドレスでない場合。
IOErrorflash.errors:IOError
localPortint0ローカルコンピューター上でバインドするポートの数。localPort が 0(デフォルト)に設定されている場合、次に利用可能なシステムポートがバインドされます。1024 より下位のポート番号に接続する権限には、システムのセキュリティポリシーが適用されます。例えば、Mac および Linux システムでは、アプリケーションは 1024 より下位のポートに接続するにはルート権限で実行する必要があります。 localAddressString0.0.0.0バインド先のローカルマシンの IP アドレス。このアドレスは、IPv4 アドレスでも IPv6 アドレスでもかまいません。localAddress0.0.0.0(デフォルト値)に設定されている場合、ソケットは利用可能なすべての IPv4 アドレスを監視します。利用可能なすべての IPv6 アドレスを監視するには、"::" を localAddress 引数として指定する必要があります。IPv6 アドレスを使用するには、コンピューターとネットワークの両方が IPv6 をサポートするように設定されている必要があります。 さらに、IPv4 アドレスにバインドされたソケットは IPv6 アドレスのソケットに接続できません。同様に、IPv6 アドレスにバインドされたソケットは IPv4 アドレスのソケットに接続できません。アドレスの種類が一致している必要があります。
指定されたローカルのアドレスおよびポートにこのソケットをバインドします。
close ソケットを閉じて、接続の待機を停止します。このエラーはソケットを開くことができなかった場合、またはソケットが開いていなかった場合に発生します。 ErrorError ソケットを閉じて、接続の待機を停止します。

閉じたソケットを再び開くことはできません。代わりに新しい ServerSocket インスタンスを作成します。

listen バインドされた IP アドレスおよびポートで TCP 接続の待機を開始します。このエラーはソケットが開いていないか、バインドされていない場合に発生します。このエラーは、listen() の呼び出しがその他の理由で失敗したときにも発生します。 IOErrorflash.errors:IOErrorこのエラーは、backlog パラメーターが 0 より小さい場合に発生します。 RangeErrorRangeErrorbacklogint0待機接続のキューの最大の長さです。backlog が 0 の場合、このキューの長さはシステムに最大値に設定されます。 バインドされた IP アドレスおよびポートで TCP 接続の待機を開始します。

listen() メソッドは直ちに戻ります。listen() を呼び出すと、接続が試みられたときに必ず、ServerSocket オブジェクトによって connect イベントが送出されます。ServerSocketConnectEvent イベントオブジェクトの socket プロパティは、サーバークライアント接続を表す Socket オブジェクトを参照します。

backlog パラメーターは connect イベントがアプリケーションで処理されている間にキューで待機する接続の数を指定します。キューがいっぱいの場合、追加の接続は connect イベントが送出されることなく拒否されます。デフォルトの値 0 が指定されると、システムの最大のキューの長さが使用されます。この長さはプラットフォームによって異なり、コンピューター別に設定できます。 指定された値がシステムの最大の長さを超えると、代わりにシステムの最大の長さが使用されます。 実際のバックログ値を検出する手段が提供されていません。(システムの最大値は、ホストコンピューター上の TCP ネットワークサブシステムの SOMAXCONN 設定によって決まります。)

bound ソケットが現在ローカルのアドレスとポートにバインドされているかどうかを示します。Boolean ソケットが現在ローカルのアドレスとポートにバインドされているかどうかを示します。 bind()isSupported ServerSocket 機能がランタイム環境でサポートされているかどうかを示します。Boolean ServerSocket 機能がランタイム環境でサポートされているかどうかを示します。 listening サーバーソケットが受信接続を待機しているかどうかを示します。Boolean サーバーソケットが受信接続を待機しているかどうかを示します。 listen()localAddress ソケットが待機している IP アドレス。String ソケットが待機している IP アドレス。 bind()localPort ソケットが待機しているポート。int ソケットが待機しているポート。 bind()
FileFilter FileFilter クラスは、FileReference.browse() メソッド、FileReferenceList.browse() メソッド、または File オブジェクト、FileReference オブジェクト、FileReferenceList オブジェクトの browse メソッドを呼び出したときに表示されるファイル参照ダイアログボックスに、ユーザーのシステム上のどのファイルを表示するかを示すために使用します。Object FileFilter クラスは、FileReference.browse() メソッド、FileReferenceList.browse() メソッド、または File オブジェクト、FileReference オブジェクト、FileReferenceList オブジェクトの browse メソッドを呼び出したときに表示されるファイル参照ダイアログボックスに、ユーザーのシステム上のどのファイルを表示するかを示すために使用します。 FileFilter インスタンスは、オプションの typeFilter パラメーターの値としてメソッドに渡されます。 FileFilter インスタンスを使用する場合、FileFilter インスタンスに指定されていない拡張子およびファイルタイプは除外されます。つまり、ユーザーはそれらを選択できません。 FileFilter オブジェクトをメソッドに渡さないと、すべてのファイルがダイアログボックスに表示されます。

FileFilter インスタンスは次の 2 つの方法で使用できます。

  • 説明と ファイル拡張子のみ
  • 説明と ファイル拡張子および Macintosh ファイルタイプ

これら 2 つの形式を browse メソッドの 1 回の呼び出しの中に混在させることはできません。 どちらか一方を使用する必要があります。

次の例のように、browse メソッドには 1 つ以上の FileFilter インスタンスを渡すことができます。

var imagesFilter:FileFilter = new FileFilter("Images", "~~.jpg;~~.gif;~~.png"); var docFilter:FileFilter = new FileFilter("Documents", "~~.pdf;~~.doc;~~.txt"); var myFileReference:FileReference = new FileReference(); myFileReference.browse([imagesFilter, docFilter]);

AIR アプリケーションでは次のようになります。

var imagesFilter:FileFilter = new FileFilter("Images", "~~.jpg;~~.gif;~~.png"); var docFilter:FileFilter = new FileFilter("Documents", "~~.pdf;~~.doc;~~.txt"); var myFile:File = new File(); myFile.browseForOpen("Open", [imagesFilter, docFilter]);

FileFilter.extension プロパティの拡張子リストを使用して、ファイル参照ダイアログに表示されるファイルをフィルターにかけます。このリストは、ダイアログボックスに実際に表示されるわけではありません。ファイルタイプをユーザーに表示するには、拡張子リストのほか、説明用ストリングにもファイルタイプをリストする必要があります。説明用ストリングは、Windows および Linux のダイアログボックスに表示されます。(これは、Macintosh® では使用されません)。Macintosh で、Macintosh ファイルタイプのリストを指定する場合、このリストはファイルにフィルターをかけるために使用されます。これを指定しない場合は、ファイル拡張子リストが使用されます。

FileFilter 新しい FileFilter インスタンスを作成します。descriptionStringユーザーがアップロードするファイルを選択するときに表示される説明用ストリングです。 extensionStringユーザーがアップロードするファイルを選択するときに表示される ファイル形式を示すファイル拡張子のリストです。 macTypeStringnullユーザーがアップロードするファイルを選択したときに表示されるファイルタイプを示す Macintosh ファイルタイプのリストです。値を指定しないと、このパラメーターは null に設定されます。 新しい FileFilter インスタンスを作成します。 次の例は、ローカルファイルシステム内の画像をルート表示オブジェクト(この場合はステージ)にアップロードします。例は、Andre Venancio 氏の提供によるものです。 var buttonShape:Shape = new Shape(); buttonShape.graphics.beginFill(0x336699); buttonShape.graphics.drawCircle(50, 50, 25); var button = new SimpleButton(buttonShape, buttonShape, buttonShape, buttonShape); addChild(button); var fileRef:FileReference= new FileReference(); button.addEventListener(MouseEvent.CLICK, onButtonClick); function onButtonClick(e:MouseEvent):void { fileRef.browse([new FileFilter("Images", "*.jpg;*.gif;*.png")]); fileRef.addEventListener(Event.SELECT, onFileSelected); } function onFileSelected(e:Event):void { fileRef.addEventListener(Event.COMPLETE, onFileLoaded); fileRef.load(); } function onFileLoaded(e:Event):void { var loader:Loader = new Loader(); loader.loadBytes(e.target.data); addChild(loader); } description フィルターの説明用ストリングです。String フィルターの説明用ストリングです。説明は、FileReference.browse() または FileReferenceList.browse() が呼び出されたときに開くダイアログボックスに表示されます。説明用ストリングには、"Images (~~.gif, ~~.jpg, ~~.png)" などのストリングが含まれ、ユーザーにアップロードまたはダウンロード可能なファイルタイプを指示できます。FileReference オブジェクトでサポートされる実際のファイルタイプは extension プロパティに格納されます。 extension ファイル拡張子のリストです。String ファイル拡張子のリストです。このリストは、ファイル参照ダイアログボックスに表示するファイルの種類を示します。(リストは表示されません。ユーザーには description プロパティの値のみが表示されます)。extension プロパティには、"~~.jpg;~~.gif;~~.png" のように、セミコロンで区切った ファイル拡張子のリストが含まれ、各拡張子の前にはワイルドカード(~~)を付けます。 macType Macintosh ファイルタイプのリストです。String Macintosh ファイルタイプのリストです。このリストは、ファイル参照ダイアログボックスに表示するファイルの種類を示します。(このリスト自体は表示されません。ユーザーには description プロパティの値のみが表示されます)。macType プロパティには、"JPEG;jp2_;GIFF" のように、Macintosh ファイルタイプをセミコロンで区切ったリストが含まれます。
URLRequest URLRequest クラスは、すべての情報を 1 つの HTTP 要求にキャプチャします。Object URLRequest クラスは、すべての情報を 1 つの HTTP 要求にキャプチャします。URLRequest のオブジェクトは、Loader、URLStream、URLLoader の各クラスの load() メソッド、およびその他のロード処理に渡され、URL のダウンロードが開始されます。また、FileReference クラスの upload() メソッドおよび download() メソッドにも渡されます。

ローカルファイルシステムのサンドボックスの SWF ファイルは、ネットワーク上のサンドボックス内のリソースからデータを読み込んだり、リソースにデータを書き込んだりしないことがあります。

デフォルトで、呼び出し元の SWF ファイルおよびロードする URL は、同じドメインにある必要があります。例えば www.adobe.com に置かれている SWF ファイルは、www.adobe.com に置かれているソースからのみデータをロードできます。異なるドメインからデータをロードするには、データをホストするサーバーに URL ポリシーファイルを配置します。

ただし、Adobe AIR では、アプリケーションセキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。Adobe AIR で実行中のコンテンツの場合、アプリケーションセキュリティサンドボックス内のファイルは、次のいずれかの URL スキームを使って URL にアクセスできます。

  • http および https
  • file
  • app-storage
  • app

アプリケーションセキュリティサンドボックスにない、Adobe AIR で実行されるコンテンツには、(Flash Player の)ブラウザーで実行されるコンテンツと同じ制限が適用され、コンテンツのドメインと URL ポリシーファイルで付与されたアクセス許可によりロード操作が管理されます

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

次の例では、新しい Loader オブジェクトを作成し、それに XML ファイルへのパスを含む URLRequest オブジェクトを渡します。ロード処理が成功した場合、complete イベントが送出され、XML ファイル内のデータが出力されます。追加のイベントハンドラーはエラーイベントを含む他のイベントをキャプチャします。

この例を実行するには、XMLFile.xml というファイルを SWF ファイルと同じディレクトリに配置します。

package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLRequestExample extends Sprite { public function URLRequestExample() { var loader:URLLoader = new URLLoader(); configureListeners(loader); var request:URLRequest = new URLRequest("XMLFile.xml"); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
FileReferenceURLRequestHeaderURLRequestDefaultsURLLoaderURLStreamHTMLLoader クラスURLRequest URLRequest オブジェクトを作成します。urlStringnullリクエストされる URL です。url プロパティを使用して、URL を後から設定できます。 URLRequest オブジェクトを作成します。System.useCodePagetrue の場合、リクエストは Unicode ではなく、システムのコードページを使ってエンコードされます。System.useCodePagefalse の場合、リクエストはシステムのコードページではなく、Unicode を使ってエンコードされます。 次の例は、Flash Player から navigateToURL() メソッドを使用して、新しいブラウザーウィンドウを開く方法を示しています。ActionScriptExamples.com で作成された例。 // Requires // - Button symbol on Stage (or a display object, such as a MovieClip) with instance name "buttonSymbol" // buttonSymbol.addEventListener(MouseEvent.CLICK, buttonSymbol_click); function buttonSymbol_click(evt:MouseEvent):void { var req:URLRequest = new URLRequest("http://www.adobe.com/"); navigateToURL(req, "_blank"); } flash.system.System.useCodePageauthenticate この要求に関する認証要求を処理するかどうかを指定します(true または false)。Boolean呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrortrue この要求に関する認証要求を処理するかどうかを指定します。 この要求に関する認証要求を処理するかどうかを指定します(true または false)。false の場合、認証チャレンジは HTTP エラーを返します。

以下の認証メソッドがサポートされています。

  • Windows — HTTP 認証(基本 / ダイジェスト)、Windows 統合認証(NTLM および Kerberos を含む)、SSL 証明書認証
  • Mac — HTTP 認証(基本 / ダイジェスト)、NTLM 認証、SSL 証明書認証

注意:FileReference.upload()FileReference.download()、および HTMLLoader.load() の各メソッドは、URLRequest.authenticate プロパティをサポートしていません。

flash.net.URLRequestDefaults.authenticate
cacheResponse この要求に対する正常な応答データをキャッシュするかどうかを指定します。Boolean呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrortrue この要求に対する正常な応答データをキャッシュするかどうかを指定します。true に設定すると、AIR アプリケーションはオペレーティングシステムの HTTP キャッシュを使用します。

注意:HTMLLoader.load() メソッドは URLRequest.cacheResponse プロパティをサポートしていません。

flash.net.URLRequestDefaults.cacheResponse
contentType data プロパティのコンテンツの MIME コンテンツタイプです。Stringdata プロパティのコンテンツの MIME コンテンツタイプです。 data プロパティのコンテンツの MIME コンテンツタイプです。

デフォルト値は application/x-www-form-urlencoded です。

注意:FileReference.upload()FileReference.download() および HTMLLoader.load() の各メソッドは、URLRequest.contentType プロパティをサポートしていません。

POST リクエストを送信する場合、contentType プロパティと data プロパティの値が正しく対応している必要があります。contentType プロパティの値は、data プロパティの値を解釈する方法をサーバーに指示します。

  • data プロパティの値が URLVariables オブジェクトの場合、contentType の値は application/x-www-form-urlencoded である必要があります。
  • data プロパティの値が他の型の場合、contentType の値は送信される POST データ(data プロパティの値に含まれるバイナリまたはストリングのデータ)の型を示す必要があります。
  • FileReference.upload() の場合、リクエストの Content-Type は自動的に multipart/form-data に設定され、contentType プロパティの値は無視されます。

Flash Player 10 以降では、"multipart/form-data" などのマルチパート Content-Type にアップロードが含まれていると(アップロードが含まれているかどうかは POST ボディ内の "content-disposition" ヘッダーの "filename" パラメーターで示されます)、そのアップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

  • POST 処理は、マウスのクリックやキーの押下などのユーザーが開始したアクションに応答して実行する必要があります。
  • POST 処理がクロスドメインである(POST ターゲットが、POST 要求を送信中の SWF ファイルと同じサーバー上にない)場合は、クロスドメインアクセスを許可する URL ポリシーファイルをターゲットサーバーが提供する必要があります。

また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

data
data URL リクエストで送信されるデータを含むオブジェクトです。Object URL リクエストで送信されるデータを含むオブジェクトです。

このプロパティはメソッドプロパティと一緒に使用します。method の値が GET のときは、HTTP クエリ文字列シンタックスを使って、data の値は URLRequest.url の値に追加されます。method の値が POST(または GET 以外の値)のときは、data の値は、HTTP 要求の本文に送信されます。

URLRequest API は、ストリング以外に、バイナリ POST と URL エンコード変数もサポートします。データオブジェクトには、ByteArray、URLVariables、または String オブジェクトを指定できます。

データが使用される方法は、使用されるオブジェクトの型によって異なります。

  • オブジェクトが ByteArray オブジェクトの場合、ByteArray オブジェクトのバイナリデータは POST データとして使用されます。GET の場合、ByteArray 型のデータはサポートされません。FileReference.upload() および FileReference.download() の場合も、ByteArray 型のデータはサポートされません。
  • オブジェクトが URLVariables オブジェクトで、メソッドが POST の場合、変数は x-www-form-urlencoded 形式を使用してエンコードされ、結果のストリングが POST データとして使用されます。例外は FileReference.upload() の呼び出しです。この場合、変数は、multipart/form-data ポストの個別のフィールドとして送信されます。
  • オブジェクトが URLVariables オブジェクトで、メソッドが GET の場合、URLVariables オブジェクトは URLRequest オブジェクトによって送信される変数を定義します。
  • それ以外の場合、オブジェクトはストリングに変換され、そのストリングが POST または GET データとして使用されます。

このデータは、navigateToURL()FileReference.upload() などのメソッドで URLRequest オブジェクトが使用されるまで送信されません。

注意:contentType の値は、data プロパティのデータ型に対応させる必要があります。contentType プロパティの説明の注意を参照してください。

次の例では、新しいブラウザーウィンドウで http://www.[yourDomain].com/application.jsp でホストされるリモートアプリケーションを開き、URLVariables オブジェクトで捕捉したユーザーセッションに関するデータをアプリケーションに渡します。

この例のハイライトは、次のとおりです。

  1. コンストラクター関数が request という名前の URLRequest インスタンスを作成します。このとき、リモートアプリケーションの URL をパラメーターとして取ります。
  2. URLVariables オブジェクトが作成され、その 2 つのプロパティに値が割り当てられます。
  3. URLVariables オブジェクトが URLRequest オブジェクトの data プロパティに割り当てられます。
  4. navigateToURL を呼び出して、リモートアプリケーションの URL 用の新しいブラウザーウィンドウを開きます。

注意:この例を実行するには、この例のリモートアプリケーションの URL を実際の URL に置き換える必要があります。さらに、URLVariables オブジェクトの Flash Player で捕捉した情報を処理するためのサーバーコードが必要です。

package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; public class URLVariablesExample extends Sprite { public function URLVariablesExample() { var url:String = "http://www.[yourDomain].com/application.jsp"; var request:URLRequest = new URLRequest(url); var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "guest"; request.data = variables; navigateToURL(request); } } }
URLRequest.methodURLRequestMethodURLVariablesflash.utils.ByteArraycontentType
digest Flash Player キャッシュに保存される(または Flash Player キャッシュから取得される)署名付き Adobe プラットフォームコンポーネントを一意に識別するストリングです。String提供されるダイジェストは、ダウンロードされた署名付きファイルから抽出されたファイルのダイジェスト、またはキャッシュからロードされた署名付きファイルから抽出されたファイルのダイジェストとは一致しません。提供されたダイジェストの長さが誤っている場合、または提供されたダイジェストに無効な(16 進数以外の)文字が含まれている場合にも、このエラーがスローされます。 ArgumentErrorArgumentError Flash Player キャッシュに保存される(または Flash Player キャッシュから取得される)署名付き Adobe プラットフォームコンポーネントを一意に識別するストリングです。 Adobe プラットフォームコンポーネントは、ユーザーのコンピューターに永続的にキャッシュされる SWF コンテンツを含む署名付きファイル(SWZ ファイル)です。すべての SWZ ファイルはアドビ システムズ社によって署名されます。ダイジェストは単一のキャッシュされているファイルに対応します。ファイルを何らかの方法で変更すると、ダイジェストは予期しない方法で変更されます。ダイジェストを使用することにより、複数のドメインにまたがってキャッシュされているファイルを確認できます。同じダイジェストを持つ 2 つのファイルは同じファイルで、異なるダイジェストを持つ 2 つのファイルは同じファイルではありません。 ダイジェストに「なりすます」ファイル、ダイジェストを装うファイルを作成することは(実質的に)できません。

ダイジェストは、SHA-256 メッセージダイジェストアルゴリズム(16 進数形式で 64 文字長)に基づきます。

例えば、Flex SDK は Flex フレームワークの SWZ を含みます(また、その SWZ ファイルのダイジェストストリングを提供します)。この SWZ を Web サーバーにポストし、それを URLLoader オブジェクトの load() メソッドを使用して SWF ファイルにロードすることができます。エンドユーザーのコンピューターに一致する SWZ ファイルが既にキャッシュされている場合は、そのキャッシュされている SWZ ファイルが使用されます。SWZ ファイルの digest と提供したダイジェストが一致すると、SWZ ファイルは一致します。それ以外の場合は、指定した URL から SWZ ファイルがアプリケーションによってダウンロードされます。

URLRequest オブジェクトの digest パラメーターは、URLLoader.load() メソッドを呼び出して SWZ ファイルをロードする場合にのみ設定します。URLRequest オブジェクトの digest パロパティが、他のメソッドで設定済みである場合は、IOError 例外がスローされます。

次の例では、キャッシュにリモートファイルをロードしています。ロードの最後で、バイト配列に(署名付きファイルでない)実際のファイルが格納されます。 この例では、loadBytes() を呼び出すことでロード操作を完了しています。 var myURLReq:URLRequest = new URLRequest(); myURLReq.url = "http://yourdomain/users/jdoe/test01/_rsc/Automated/AssetCaching_rsc/test01/rsl.swz"; myURLReq.digest = "3B0AA28C7A990385E044D80F5637FB036317BB41E044D80F5637FB036317BB41"; var myURLLoader:URLLoader = new URLLoader(); myURLLoader.dataFormat = URLLoaderDataFormat.BINARY; myURLLoader.addEventListener("complete", onC); myURLLoad.load(myURLReq); function onC(e) { var someLoader:Loader = new Loader(); addChild(someLoader); someLoader.loadBytes((ByteArray)(myURLLoad.data)); }
followRedirects リダイレクトを続行するか(true)、続行しないか(false)を指定します。Boolean呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrortrue リダイレクトを続行するかどうかを指定します。 リダイレクトを続行するか(true)、続行しないか(false)を指定します。

注意:FileReference.upload()FileReference.download()、および HTMLLoader.load() の各メソッドは、URLRequest.followRedirects プロパティをサポートしていません。

URLRequestDefaults.followRedirects
idleTimeout この要求のアイドルタイムアウト値をミリ秒単位で指定します。Number呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrorinitialized from the URLRequestDefaults.idleTimeout property この要求のアイドルタイムアウト値をミリ秒単位で指定します。

アイドルタイムアウトとは、接続が確立された後、要求が廃棄されるまでの間、クライアントがサーバーからの応答を待機する時間です。

注意:HTMLLoader.load() メソッドは URLRequest.idleTimeout プロパティをサポートしていません。HTMLLoader クラスは、このクラス自体の idleTimeout プロパティを定義します。

URLRequestDefaults.idleTimeout
manageCookies HTTP プロトコルスタックでこの要求のクッキーを管理するかどうかを指定します。Boolean呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrortrue HTTP プロトコルスタックでこの要求のクッキーを管理するかどうかを指定します。true の場合、cookie が要求に追加され、応答 cookie が記憶されます。false の場合、cookie は要求に追加されず 応答 cookie は記憶されませんが、ユーザーは直接ヘッダーを操作することで cookie 自体を管理できます。注意:Windows では、manageCookiestrue に設定されている場合、URL 要求に手動で cookie を追加することはできません。他のオペレーティングシステムでは、manageCookiestruefalse のどちらに設定されているかに関わらず、要求に cookie を追加することができます。cookie の追加が許可されている場合、cookie のデータを格納している URLRequestHeader オブジェクトを requestHeaders 配列に手動で追加することで、要求に cookie を追加できます。

Mac OS では、cookie は Safari と共有されます。Mac OS でクッキーを消去するには:

  1. Safari を開きます。
  2. Safari/Preferences を選択し、Security パネルをクリックします。
  3. 「Show Cookies」ボタンをクリックします。
  4. 「Remove All」ボタンをクリックします。

Windows でクッキーを消去するには:

  1. インターネットのプロパティコントロールパネルを開き、「全般」タブをクリックします。
  2. 「Cookie の削除」ボタンをクリックします。
flash.net.URLRequestDefaults.manageCookies
method HTTP フォーム送信メソッドを制御します。Stringvalue パラメーターが URLRequestMethod.GET でも URLRequestMethod.POST でもない場合。 ArgumentErrorArgumentErrorURLRequestMethod.GET HTTP フォーム送信メソッドを制御します。

(ブラウザーの)Flash Player で実行される SWF コンテンツの場合、このプロパティは GET 操作または POST 操作に制限されます。有効な値は URLRequestMethod.GET または URLRequestMethod.POST です。

Adobe AIR で実行されるコンテンツの場合、そのコンテンツがアプリケーションセキュリティボックス内にあれば、どのストリング値も使用可能です。それ以外の場合、コンテンツが Flash Player で実行されるときと同様に、GET 操作または POST 操作の使用に制限されます。

Adobe AIR で実行中のコンテンツの場合、navigateToURL() 関数を使用すると、ランタイムでは、POST メソッドを使用する URLRequest(method プロパティが URLRequestMethod.POST に設定されているもの)は、GET メソッドとして処理されます。

注意:Flash Player で実行されているときに、参照されるフォームに本文がない場合、Flash Player では自動的に GET 操作が使用されます。これは、メソッドが URLRequestMethod.POST に設定されている場合でも同じです。このため、正しいメソッドが使用されるように、ダミーの body を必ず含めることをお勧めします。

次の例では、新しいブラウザーウィンドウで http://www.[yourDomain].com/application.jsp でホストされるリモートアプリケーションを開き、URLVariables オブジェクトで捕捉したユーザーセッションに関するデータをアプリケーションに渡します。URLRequest.method プロパティの値を、URLRequestMethod.POST に明示的に設定します。

この例のハイライトは、次のとおりです。

  1. コンストラクター関数が request という名前の URLRequest インスタンスを作成します。このとき、リモートアプリケーションの URL をパラメーターとして取ります。
  2. URLVariables オブジェクトが作成され、その 2 つのプロパティに値が割り当てられます。
  3. URLVariables オブジェクトが URLRequest オブジェクトの data プロパティに割り当てられます。
  4. URLRequest.method プロパティの値が URLRequestMethod.POST に設定されます。
  5. navigateToURL を呼び出して、リモートアプリケーションの URL 用の新しいブラウザーウィンドウを開きます。

注意:この例を実行するには、この例のリモートアプリケーションの URL を実際の URL に置き換える必要があります。さらに、URLVariables オブジェクトの Flash Player で捕捉した情報を処理するためのサーバーコードが必要です。

package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; public class URLRequest_method extends Sprite { public function URLRequest_method() { var url:String = "http://www.[yourDomain].com/application.jsp"; var request:URLRequest = new URLRequest(url); var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "guest"; request.data = variables; request.method = URLRequestMethod.POST; navigateToURL(request); } } }
URLRequestMethod class
requestHeaders HTTP リクエストヘッダーの配列が HTTP リクエストに追加されます。Array HTTP リクエストヘッダーの配列が HTTP リクエストに追加されます。配列は URLRequestHeader オブジェクトから構成されます。配列の各オブジェクトは、次のように名前ストリングと値ストリングを含む URLRequestHeader オブジェクトである必要があります。 var rhArray:Array = new Array(new URLRequestHeader("Content-Type", "text/html"));

Flash Player および AIR ランタイムには、リクエストヘッダーに一定の制限があります。詳しくは、URLRequestHeader クラスの説明を参照してください。

URLRequest パラメーターを受け取るメッソドすべてが requestHeaders プロパティをサポートしているわけではありません。呼び出すメソッドのマニュアルを参照してください。例えば、FileReference.upload() メソッドおよび FileReference.download() メソッドは、URLRequest.requestHeaders プロパティをサポートしていません。

ブラウザーの制限により、カスタム HTTP リクエストヘッダーは POST リクエストだけをサポートし、GET リクエストはサポートしません。

URLRequestHeader
url リクエストされる URL です。String リクエストされる URL です。

Uniform Resource Locator 仕様で危険と説明されている文字(http://www.faqs.org/rfcs/rfc1738.html を参照)や、URLRequest オブジェクトの URL スキームで予約されている文字(予約されている目的以外に使用する場合)は、必ずエンコードしてください。例えば、パーセント(%)記号の場合は "%25" を、番号記号の場合は "%23" を使用し、"http://www.example.com/orderForm.cfm?item=%23B-3&discount=50%25" などと示します。

デフォルトで、URL は呼び出し元のファイルと同じドメインにある必要があります。ただし、コンテンツが Adobe AIR アプリケーションセキュリティボックスで実行中の場合を除きます。異なるドメインからデータをロードする必要があるときは、データをホストするサーバーに URL ポリシーファイルを配置します。詳細については、URLRequest クラスの説明を参照してください。

Adobe AIR で実行されるコンテンツの場合、アプリケーションセキュリティサンドボックス内のファイル(AIR アプリケーションと共にインストールされるファイル)は、次の URL スキームのいずれかを使用して URL にアクセスできます。

  • http および https
  • file
  • app-storage
  • app

注意:IPv6(Internet Protocol version 6)は AIR および Flash Player 9.0.115.0 以降のバージョンでサポートされています。IPv6 は、128 ビットのアドレスをサポートするインターネットプロトコルのバージョンです(32 ビットのアドレスをサポートする、以前の IPv4 プロトコルの機能を向上したものです)。ネットワークインターフェイスでの IPv6 のアクティブ化が必要になる場合があります。詳細については、データをホストするオペレーティングシステムのヘルプを参照してください。ホストしているシステムで IPv6 がサポートされる場合、次に示すように、角括弧([])内に URL の IPv6 数値リテラルアドレスを指定できます。

     rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f]:1935/test
     
次の例は、ActionScript 3.0 の Loader クラスを使用して、イメージを動的にロードする方法を示しています。ActionScriptExamples.com によって提供される例。 var url:String = "http://www.helpexamples.com/flash/images/image2.jpg"; var urlRequest:URLRequest = new URLRequest(url); var loader:Loader = new Loader(); loader.load(urlRequest); addChild(loader);
useCache この URLRequest がデータを取得する前に、ローカルキャッシュを参照するかどうかを指定します。Boolean呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityErrortrue この URLRequest がデータを取得する前に、ローカルキャッシュを参照するかどうかを指定します。

注意:HTMLLoader.load() メソッドは URLRequest.useCache プロパティをサポートしていません。

flash.net.URLRequestDefaults.useCache
userAgent HTTP 要求で使用されるユーザーエージェントストリングを指定します。String呼び出し元が AIR アプリケーションセキュリティサンドボックス内に存在しません。 SecurityErrorSecurityError HTTP 要求で使用されるユーザーエージェントストリングを指定します。

デフォルト値は、Flash Player で使用されるユーザーエージェントストリングと同じです。これは、Macintosh、Linux、Windows で異なります。

注意:HTMLLoader オブジェクトの load() メソッドで URLRequest オブジェクトが使用される場合、このプロパティはユーザーエージェントストリングに影響しません。HTMLLoader オブジェクトに対しユーザーエージェントストリングを設定するには、HTMLLoader オブジェクトの userAgent プロパティを設定するか、静的な URLRequestDefaults.userAgent プロパティを設定します。

flash.net.URLRequestDefaults.userAgentflash.html.HTMLLoader.userAgent
InterfaceAddress InterfaceAddress クラスは、ネットワークインターフェイスアドレスのプロパティをレポートします。Object InterfaceAddress クラスは、ネットワークインターフェイスアドレスのプロパティをレポートします。 NetworkInfo クラスNetworkInterface クラスaddress Internet Protocol(IP)アドレスです。String Internet Protocol(IP)アドレスです。 broadcast ローカルネットワークセグメントのブロードキャストアドレス。String ローカルネットワークセグメントのブロードキャストアドレス。 ipVersion IP アドレスの種類(IPv4 または IPv6)です。String IP アドレスの種類(IPv4 または IPv6)です。 prefixLength このアドレスの接頭辞の長さです。int このアドレスの接頭辞の長さです。

IPv4 アドレスの場合、これはサブネットマスクです。8(255.0.0.0)、16(255.255.0.0)および 24(255.255.255.0)など、IPv4 値のプレフィックス長の例。128(::1/128)および 32(2001:db8::/32)など、IPv6 値のプレフィックス長の例。

注意:このアドレスのプレフィックス長が利用できない場合、prefixLength の値は -1 です。プレフィックス値は、常に特定のクライアントコンピューターのネットワーク実装によって返されるとは限りません。

GroupSpecifier GroupSpecifier クラスは、NetStream および NetGroup コンストラクターに渡される不透明な groupspec ストリングを構築するために使用されます。NetStream および NetGroup コンストラクターに渡される不透明な groupspec ストリングを構築します。 Object GroupSpecifier クラスは、NetStream および NetGroup コンストラクターに渡される不透明な groupspec ストリングを構築するために使用されます。groupspec は、groupspec を使用するメンバーの機能、制限、および権限を含めた RTMFP ピアーツーピアーグループを指定します。

デフォルトではすべての機能が無効で、ピアーツーピアー接続が許可されています。

flash.net.NetGroupflash.net.NetStreamGroupSpecifier 新しい GroupSpecifier オブジェクトを作成します。name が空または null の場合。 ArgumentErrorArgumentErrornameStringすべてのメンバーが同意するグループの名前です。 新しい GroupSpecifier オブジェクトを作成します。デフォルトではすべての機能が無効で、ピアーツーピアー接続が許可されています。 flash.net.NetGroupflash.net.NetStreamaddBootstrapPeer 関連付けられた NetStream または NetGroup が指定された peerID への初期ネイバー接続を確立できるようにします。peerIDString初期ネイバー接続を確立する peerID は、ピアーツーピアーメッシュへのブートストラップにする必要があります。 関連付けられた NetStream または NetGroup が指定された peerID への初期ネイバー接続を確立できるようにします。 encodeBootstrapPeerIDSpec()flash.net.NetGroup.addMemberHint()flash.net.NetGroup.addNeighbor()addIPMulticastAddress 関連付けられた NetStream または NetGroup が指定された IP マルチキャストグループに参加して、指定された UDP ポートを待機するようにします。addressString参加する IPv4または IPv6 マルチキャストグループのアドレスを指定するストリングの後には、必要に応じて、コロン(「:」)および UDP ポート番号が付きます。IPv6 アドレスとポートを指定する場合、IPv6 アドレスは角括弧で囲む必要があります。例:"224.0.0.254""224.0.0.254:30000""ff03::ffff""[ff03::ffff]:30000"portnullIP マルチキャストデータグラムを受信する UDP ポート。portnull の場合、UDP ポートは、address で指定する必要がありますnull でない場合、UDP ポートを address で指定しないでくださいsourceStringnullnull でない場合は、ソース固有のマルチキャスト(SSM)のソース IP アドレスを指定するストリングです。 関連付けられた NetStream または NetGroup が指定された IP マルチキャストグループに参加して、指定された UDP ポートを待機するようにします。 encodeIPMulticastAddressSpec()ipMulticastMemberUpdatesEnabledauthorizations IP マルチキャストパブリッシングおよびアップロード用のパスワードを表すストリングを返します。String IP マルチキャストパブリッシングおよびアップロード用のパスワードを表すストリングを返します。権限のない groupspec にストリングを付加して、パスワードを設定されている機能を有効にすることができます。 encodePostingAuthorization()encodePublishAuthorization()groupspecWithAuthorizations()groupspecWithoutAuthorizations()setPostingPassword()setPublishPassword()encodeBootstrapPeerIDSpec ブートストラップ peerID を表すストリングをエンコードして返します。StringpeerIDString初期ネイバー接続を確立する peerID は、ピアーツーピアーメッシュへのブートストラップにする必要があります。 ブートストラップ peerID を表すストリングをエンコードして返します。groupspec にストリングを付加すると、関連 NetStream または NetGroup が指定された peerID への初期ネイバー接続を行います。 addBootstrapPeer()flash.net.NetGroup.addMemberHint()flash.net.NetGroup.addNeighbor()encodeIPMulticastAddressSpec IP マルチキャストソケットアドレスを表すストリングをエンコードして返します。StringaddressString参加する IPv4 または IPv6 マルチキャストグループのアドレスを指定するストリングの後には、必要に応じて、コロン(「:」)および UDP ポート番号が付きます。IPv6 アドレスとポートを指定する場合、IPv6 アドレスは角括弧で囲む必要があります。例:"224.0.0.254""224.0.0.254:30000""ff03::ffff""[ff03::ffff]:30000"portnullIP マルチキャストデータグラムを受信する UDP ポート。portnull の場合、UDP ポートは、address で指定する必要がありますnull でない場合、UDP ポートを address で指定しないでくださいsourceStringnullnull でない場合は、ソース固有のマルチキャスト(SSM)のソース IP アドレスを指定するストリングです。 IP マルチキャストソケットアドレスを表すストリングをエンコードして返します。groupspec にストリングを付加すると、関連付けられている NetStream または NetGroup が指定された IP マルチキャストグループに参加し、指定された UDP ポートを待機します。 addIPMulticastAddress()ipMulticastMemberUpdatesEnabledencodePostingAuthorization アップロード用パスワードを表すストリングをエンコードして返します。StringpasswordStringエンコードするパスワードは、NetGroup.post() を有効にするアップロード用パスワードと一致する必要があります(パスワードが設定されている場合)。 アップロード用パスワードを表すストリングをエンコードして返します。アップロードがパスワード保護されている場合、アップロードできるようにするために groupspec にストリングを連結します。 groupspecWithoutAuthorizations()setPostingPassword()flash.net.NetGroup.post()encodePublishAuthorization マルチキャストパブリッシング用パスワードを表すストリングをエンコードして返します。StringpasswordStringエンコードするパスワードは、NetStream.publish() を有効にするパブリッシング用パスワードと一致する必要があります(パスワードが設定されている場合)。 マルチキャストパブリッシング用パスワードを表すストリングをエンコードして返します。マルチキャストパブリッシングがパスワード保護されている場合、パブリッシングできるようにするために groupspec にストリングを連結します。 groupspecWithoutAuthorizations()setPublishPassword()flash.net.NetStream.publish()groupspecWithAuthorizations NetStream および NetGroup コンストラクターに渡すことができる権限を含めた不透明な groupspec ストリングを返します。String NetStream および NetGroup コンストラクターに渡すことができる権限を含めた不透明な groupspec ストリングを返します。 authorizations()groupspecWithoutAuthorizations()setPostingPassword()setPublishPassword()toString()groupspecWithoutAuthorizations NetStream および NetGroup コンストラクターに渡すことができる権限を含まない不透明な groupspec ストリングを返します。StringNetStream および NetGroup コンストラクターに渡すことができる権限を含まない不透明な groupspec ストリングを返します。 NetStream および NetGroup コンストラクターに渡すことができる権限を含まない不透明な groupspec ストリングを返します。 authorizations()encodePostingAuthorization()encodePublishAuthorization()groupspecWithAuthorizations()makeUnique groupspec を一意なものにするために強力な疑似乱数タグを追加します。groupspec を一意なものにするために強力な疑似乱数タグを追加します。 groupspec を一意なものにするために強力な疑似乱数タグを追加します。次に、グループの他の潜在的なメンバーが問題なくグループに参加する場合、不透明な groupspec ストリングをこれらのメンバーに逐語的に渡す必要があります。 setPostingPassword NetGroup にアップロードするためパスワードが必要かどうかを指定します。passwordStringnullNetGroup.post() を使用するために提供する必要があるパスワードです。 null の場合、アップロードするためにパスワードは不要です。 saltStringnull推測を難しくするために、パスワードのハッシュを変更します。セキュリティを強力にするためには、このパラメーターをランダムな値に設定してください。 NetGroup にアップロードするためパスワードが必要かどうかを指定します。 encodePostingAuthorization()groupspecWithAuthorizations()groupspecWithoutAuthorizations()flash.net.NetGroup.post()setPublishPassword NetStream にマルチキャストストリームをパブリッシュするためにパスワードが必要かどうかを指定します。passwordStringnullNetStream.publish() を使用するために提供する必要があるパスワードです。 null の場合、パブリッシュするためにパスワードは不要です。 saltStringnull推測を難しくするために、パスワードのハッシュを変更します。セキュリティを強力にするためには、このパラメーターをランダムな値に設定してください。 NetStream にマルチキャストストリームをパブリッシュするためにパスワードが必要かどうかを指定します。 encodePublishAuthorization()groupspecWithAuthorizations()groupspecWithoutAuthorizations()flash.net.NetStream.publish()toString groupspecWithAuthorizations() メソッドと同じです。StringgroupspecWithAuthorizations() メソッドと同じです。 groupspecWithAuthorizations() メソッドと同じです。NetStream および NetGroup コンストラクターに渡すことができる、権限を含めた不透明な groupspec ストリングを返す Convenience メソッド。 groupspecWithAuthorizations()ipMulticastMemberUpdatesEnabled グループメンバーシップに関する情報を IP マルチキャストソケットで交換できるかどうかを指定します。Boolean グループメンバーシップに関する情報を IP マルチキャストソケットで交換できるかどうかを指定します。IP マルチキャストサーバーでグループメンバーシップの更新を送信して、P2P メッシュまたは修復パーティションをブートストラップすることができます。ピアーを使用して LAN 上でメンバーシップの更新を送信し、LAN P2P メッシュをブートストラップし、他の LAN 上のネイバーが存在するグローバルメッシュ内のLAN 上のネイバーに通知することができます。これらの更新により、P2P のパフォーマンスを高めることができます。 addIPMulticastAddress()peerToPeerDisabledmulticastEnabled NetGroup でストリーミングを有効にするかどうかを指定します。Boolean NetGroup でストリーミングを有効にするかどうかを指定します。ストリーミングに使用するメソッドは、NetStream.publish()NetStream.play()、および NetStream.play2() です。 デフォルトでは、このプロパティは FALSE (ストリーミングは無効)です。 setPublishPassword()flash.net.NetStream.play()flash.net.NetStream.play2()flash.net.NetStream.publish()objectReplicationEnabled NetGroup でオブジェクトレプリケーションを有効にするかどうかを指定します。Boolean NetGroup でオブジェクトレプリケーションを有効にするかどうかを指定します。デフォルトでは、このプロパティは FALSE(オブジェクトレプリケーションは無効)になっています。 flash.net.NetGroup.addHaveObjects()flash.net.NetGroup.addWantObjects()flash.net.NetGroup.denyRequestedObject()flash.net.NetGroup.removeHaveObjects()flash.net.NetGroup.removeWantObjects()flash.net.NetGroup.writeRequestedObject()peerToPeerDisabled NetGroup または NetStream でピアーツーピアー接続を無効にするかどうかを指定します。Boolean NetGroup または NetStream でピアーツーピアー接続を無効にするかどうかを指定します。デフォルトでは、このプロパティは FALSE (P2P 接続が有効)です。

P2P 接続が無効の場合(このプロパティを TRUE に設定)、P2P 警告ダイアログボックスが表示されません。この場合、ネイバー接続を確立することができず、グループメンバーがアップストリーム帯域幅を使用できません。このようにして P2P 接続を無効にすることは、通常、マルチキャストストリームを純粋な IP マルチキャスト経由で受信する場合にのみ有用です。

postingEnabled NetGroup でアップロードを有効にするかどうかを指定します。Boolean NetGroup でアップロードを有効にするかどうかを指定します。デフォルトでは、このプロパティは FALSE (アップロードが無効になっている)です。 flash.net.NetGroup.post()routingEnabled NetGroup で転送メソッドを有効にするかどうかを指定します。Boolean NetGroup で転送メソッドを有効にするかどうかを指定します。デフォルトでは、このプロパティは FALSE(転送メソッドは無効)になっています。 flash.net.NetGroup.sendToNearest()serverChannelEnabled NetGroup のメンバーがサーバーへのチャンネルを開くことができるかどうかを指定します。Boolean NetGroup のメンバーがサーバーへのチャンネルを開くことができるかどうかを指定します。デフォルトでは、このプロパティは FALSE です。

サーバーがグループメンバーにサポート機能を提供するには、サーバーへのチャンネルを開く必要があります。サーバーの設定に応じて、サポート機能がこのチャンネル経由で提供されたり、提供されなかったりします。

LocalConnection LocalConnection クラスを使用すると、別の LocalConnection オブジェクトのメソッドを呼び出すことができる LocalConnection オブジェクトを作成できます。flash.events:EventDispatcher LocalConnection クラスを使用すると、別の LocalConnection オブジェクトのメソッドを呼び出すことができる LocalConnection オブジェクトを作成できます。 次の通信が可能です。
  • 単一の SWF ファイル内での通信
  • 複数の SWF ファイル間の通信
  • AIR アプリケーションのコンテンツ(SWF ベースまたは HTML ベース)間の通信
  • AIR アプリケーションのコンテンツ(SWF ベースまたは HTML ベース)とブラウザーで実行されている SWF コンテンツ間の通信

AIR プロファイルのサポート:この機能はすべてのデスクトップオペレーティングシステムおよびすべてのテレビ用 AIR デバイスでサポートされますが、モバイルデバイスではサポートされません。LocalConnection.isSupported プロパティを使用して、サポートされているかどうかを実行時にテストすることができます。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。

注意:テレビ用 AIR デバイスでは、AIR アプリケーションの SWF ベースのコンテンツ間でのみ通信がサポートされます。

ローカル接続では、SWF ファイル間のこの種の通信は fscommand() または JavaScript を使用しなくても可能です。LocalConnection オブジェクトを使って通信できるのは、同じクライアントコンピューター上で実行中のファイル間だけです。ただし、これらは異なるアプリケーションで実行されていてもかまいません。例えば、ブラウザーで実行されているファイルと、Adobe AIR で実行されている SWF ファイルとの間で通信することができます。

ActionScript 3.0 で作成された LocalConnection オブジェクトは、ActionScript 1.0 または 2.0 で作成された LocalConnection オブジェクトと通信できます。また、その逆も可能です。ActionScript 1.0 または 2.0 で作成された LocalConnection オブジェクトは、ActionScript 3.0 で作成された LocalConnection オブジェクトと通信できます。Flasn Player では、このようなバージョンの異なる LocalConnection オブジェクト間の通信が自動的に処理されます。

LocalConnection オブジェクトにコールバックメソッドを追加するには、次の 3 つの方法があります。

  • LocalConnection クラスのサブクラスを作成してメソッドを追加する方法
  • LocalConnection.client プロパティを、メソッドを実装したオブジェクトに設定する方法
  • LocalConnection を拡張した動的なクラスを作成し、動的にメソッドを追加する方法

各ファイルで使用されるコマンドを確認することで、2 つのファイル間で通信を行うための LocalConnection オブジェクトの使用方法が理解しやすくなります。一方のファイルを受信側ファイルと呼びます。呼び出されるメソッドが含まれるファイルです。受信側ファイルには、LocalConnection オブジェクトと connect() メソッドの呼び出しが含まれている必要があります。もう一方のファイルを送信側ファイルと呼びます。メソッドを呼び出すファイルです。送信側ファイルには、もう 1 つの LocalConnection オブジェクトと send() メソッドの呼び出しが含まれている必要があります。

send()connect() の使い方は、両方のファイルが同じドメインにある場合、予測可能なドメイン名を持つ異なるドメインにある場合、予測不可能または動的なドメイン名を持つ異なるドメインにある場合により異なります。次の段落では、上記の 3 つの場合それぞれについて、サンプルコードを使用して説明します。

同じドメインの場合:この場合は、同じドメイン内の LocalConnection オブジェクト間だけで通信を許可します。同一ドメイン通信はデフォルトで許可されているので、これは LocalConnection オブジェクトの最も簡単な使用方法です。 同じドメインにある 2 つの ファイル間で通信を行う場合は、特別なセキュリティ対策を実装する必要はありません。connectionName パラメーターの値をそのまま connect() メソッドと send() メソッドに渡すだけです。

// receivingLC is in http://www.domain.com/receiving.swf receivingLC.connect('myConnection'); // sendingLC is in http://www.domain.com/sending.swf // myMethod() is defined in sending.swf sendingLC.send('myConnection', 'myMethod');

予測可能なドメイン名を持つ異なるドメインの場合:異なるドメインに存在する 2 つの SWF ファイル間で通信を行う場合は、allowDomain() メソッドを呼び出して、2 つのドメイン間の通信を許可する必要があります。また、send() メソッドの接続名を、受信側 LocalConnection オブジェクトのドメイン名で修飾する必要があります。

// receivingLC is in http://www.domain.com/receiving.swf receivingLC.allowDomain('www.anotherdomain.com'); receivingLC.connect('myConnection'); // sendingLC is in http://www.anotherdomain.com/sending.swf sendingLC.send('www.domain.com:myConnection', 'myMethod');

予測不可能なドメイン名を持つ異なるドメインの場合:受信側の LocalConnection オブジェクトを含むファイルをドメイン間で移植しやすくしたい場合があります。send() メソッドでドメイン名を指定せずに受信側と送信側の LocalConnection オブジェクトが同じドメインにないことを Flash Player に認識させるには、connect() 呼び出しと send() 呼び出しの両方で、接続名の前にアンダースコア(_)を付けます。 2 つのドメイン間の通信を許可するには、allowDomain() メソッドを呼び出して、LocalConnection の呼び出しを許可するドメインを渡します。または、ワイルドカード(~~)を引数に渡して、すべてのドメインからの呼び出しを許可します。

// receivingLC is in http://www.domain.com/receiving.swf receivingLC.allowDomain('~~'); receivingLC.connect('_myConnection'); // sendingLC is in http://www.anotherdomain.com/sending.swf sendingLC.send('_myConnection', 'myMethod');

Flash Player から AIR アプリケーション:AIR アプリケーションサンドボックスで作成された LocalConnection オブジェクトでは特別なストリングが使用されます。これはドメイン名ではなく接続接頭辞だからです。ストリングのフォームは app#appID.pubID で、appID はアプリケーション ID、pubID はアプリケーションの発行者 ID です(発行者 ID は、AIR アプリケーションで発行者 ID が使用されている場合にのみ含めます)。例えば、AIR アプリケーションのアプリケーション ID が「com.example」で、発行者 ID がない場合は、app#com.example:myConnection をローカル接続ストリングとして使用できます。また、AIR アプリケーションでは allowDomain() メソッドを呼び出して、呼び出し側 SWF ファイルの元のドメインで渡す必要があります。

// receivingLC is an AIR application with app ID = com.example (and no publisher ID) receivingLC.allowDomain('www.domain.com'); receivingLC.connect('myConnection'); // sendingLC is in http://www.domain.com/sending.swf sendingLC.send('app#com.example:myConnection', 'myMethod');

注意: AIR アプリケーションが AIR アプリケーションサンドボックス外で SWF をロードする場合、その SWF とローカル接続を確立する際の規則は、Flash Player で実行されている SWF との接続を確立する規則と同じです。

AIR アプリケーションから Flash Player:AIR アプリケーションが、Flash Player ランタイムで実行されている SWF と通信するときは、allowDomain() メソッドを呼び出して、AIR アプリケーションの接続接頭辞で渡すことで、この 2 つの間の通信を許可する必要があります。例えば、AIR アプリケーションのアプリケーション ID が「com.example」で、発行者 ID がない場合は、ストリング app#com.exampleallowDomain() メソッドに渡します。また、send() メソッドの接続名を、受信側 LocalConnection オブジェクトのドメイン名で修飾する必要もあります(ローカルファイルシステムからロードされた SWF ファイルのドメインとして「localhost」を使用します)。

// receivingLC is in http://www.domain.com/receiving.swf receivingLC.allowDomain('app#com.example'); receivingLC.connect('myConnection'); // sendingLC is an AIR application with app ID = com.example (and no publisher ID) sendingLC.send('www.domain.com:myConnection', 'myMethod');

AIR アプリケーションから他の AIR アプリケーション:2 つの AIR アプリケーション間を通信するには、allowDomain() メソッドを呼び出して、送信側 AIR アプリケーションの接続接頭辞で渡すことで、この 2 つの間の通信を許可する必要があります。例えば、送信側アプリケーションのアプリケーション ID が「com.example」で、発行者 ID がない場合は、ストリング app#com.example を受信側アプリケーションの allowDomain() メソッドに渡します。また、send() メソッドの接続名を、受信側 LocalConnection オブジェクトの接続接頭辞で修飾する必要もあります。

// receivingLC is an AIR application with app ID = com.sample (and no publisher ID) receivingLC.allowDomain('app#com.example'); receivingLC.connect('myConnection'); // sendingLC is an AIR application with app ID = com.example (and no publisher ID) sendingLC.send('app#com.sample:myConnection', 'myMethod');

LocalConnection オブジェクトを使用して、1 つのファイル内でデータを送受信することもできますが、これは一般的な方法ではありません。

send() メソッドと connect() メソッドの詳細については、connectionName パラメーター(LocalConnection.send() エントリおよび LocalConnection.connect() エントリ)の説明を参照してください。また、allowDomain() エントリおよび domain エントリも参照してください。

このサンプルは、2 つの異なる SWF ファイルにコンパイルする必要のある 2 つの ActionScript クラスから構成されています。

LocalConnectionSenderExample SWF ファイルでは LocalConnection インスタンスが作成され、ボタンが押されると call() メソッドを使用して SWF ファイル内の lcHandler というメソッドが呼び出されます。このとき接続名 "myConnection" が使用され、パラメーターとして TextField の内容が渡されます。

LocalConnectionReceiverExample SWF ファイルでは LocalConnection インスタンスが作成され、connect() メソッドが呼び出されて、この SWF ファイルが接続名 "myConnection" 宛のメッセージの受信者に指定されます。さらにこのクラスには、lcHandler() というパブリックメソッドが含まれています。これは、LocalConnectionSenderExample SWF ファイルによって呼び出されるメソッドです。メソッドが呼び出されると、パラメーターとして渡されるテキストがステージ上の TextField に追加されます。

注意:この例をテストするには、両方の SWF ファイルを同じコンピューター上に同時にロードする必要があります。

// Code in LocalConnectionSenderExample.as package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.net.LocalConnection; import flash.text.TextField; import flash.text.TextFieldType; import flash.events.StatusEvent; import flash.text.TextFieldAutoSize; public class LocalConnectionSenderExample extends Sprite { private var conn:LocalConnection; // UI elements private var messageLabel:TextField; private var message:TextField; private var sendBtn:Sprite; public function LocalConnectionSenderExample() { buildUI(); sendBtn.addEventListener(MouseEvent.CLICK, sendMessage); conn = new LocalConnection(); conn.addEventListener(StatusEvent.STATUS, onStatus); } private function sendMessage(event:MouseEvent):void { conn.send("myConnection", "lcHandler", message.text); } private function onStatus(event:StatusEvent):void { switch (event.level) { case "status": trace("LocalConnection.send() succeeded"); break; case "error": trace("LocalConnection.send() failed"); break; } } private function buildUI():void { const hPadding:uint = 5; // messageLabel messageLabel = new TextField(); messageLabel.x = 10; messageLabel.y = 10; messageLabel.text = "Text to send:"; messageLabel.autoSize = TextFieldAutoSize.LEFT; addChild(messageLabel); // message message = new TextField(); message.x = messageLabel.x + messageLabel.width + hPadding; message.y = 10; message.width = 120; message.height = 20; message.background = true; message.border = true; message.type = TextFieldType.INPUT; addChild(message); // sendBtn sendBtn = new Sprite(); sendBtn.x = message.x + message.width + hPadding; sendBtn.y = 10; var sendLbl:TextField = new TextField(); sendLbl.x = 1 + hPadding; sendLbl.y = 1; sendLbl.selectable = false; sendLbl.autoSize = TextFieldAutoSize.LEFT; sendLbl.text = "Send"; sendBtn.addChild(sendLbl); sendBtn.graphics.lineStyle(1); sendBtn.graphics.beginFill(0xcccccc); sendBtn.graphics.drawRoundRect(0, 0, (sendLbl.width + 2 + hPadding + hPadding), (sendLbl.height + 2), 5, 5); sendBtn.graphics.endFill(); addChild(sendBtn); } } }
// Code in LocalConnectionReceiverExample.as package { import flash.display.Sprite; import flash.net.LocalConnection; import flash.text.TextField; public class LocalConnectionReceiverExample extends Sprite { private var conn:LocalConnection; private var output:TextField; public function LocalConnectionReceiverExample() { buildUI(); conn = new LocalConnection(); conn.client = this; try { conn.connect("myConnection"); } catch (error:ArgumentError) { trace("Can't connect...the connection name is already being used by another SWF"); } } public function lcHandler(msg:String):void { output.appendText(msg + "\n"); } private function buildUI():void { output = new TextField(); output.background = true; output.border = true; output.wordWrap = true; addChild(output); } } }
flash.net.LocalConnection.send()flash.net.LocalConnection.allowDomain()flash.net.LocalConnection.domainstatus LocalConnection オブジェクトがステータスを報告するときに送出されます。flash.events.StatusEvent.STATUSflash.events.StatusEvent LocalConnection オブジェクトがステータスを報告するときに送出されます。LocalConnection.send() が正常に実行された場合、status イベントオブジェクトの level プロパティの値は "status" になります。また、呼び出しに失敗した場合、level プロパティの値は "error" になります。受信側ファイルで接続が拒否されると、送信側ファイルへの通知なしで呼び出しが失敗する可能性があります。 LocalConnection.send()securityError LocalConnection.send() の呼び出しで、異なるセキュリティサンドボックスにデータを送信しようとしたときに送出されます。flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent LocalConnection.send() の呼び出しで、異なるセキュリティサンドボックスにデータを送信しようとすると送出されます。 send()asyncError 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。flash.events.AsyncErrorEvent.ASYNC_ERRORflash.events.AsyncErrorEvent 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。 LocalConnection LocalConnection オブジェクトを作成します。 LocalConnection オブジェクトを作成します。LocalConnection オブジェクトを使用すると、同じクライアントコンピューター上で実行されている異なるファイル間で通信できるようになります。 flash.net.LocalConnection.connect()flash.net.LocalConnection.send()allowDomain この LocalConnection インスタンスに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。指定されたすべてのパラメーターは、null 以外にする必要があります。 ArgumentErrorArgumentErrordomainsLocalConnection 呼び出しを許可するドメインを指定するストリングです。このパラメーターには次の 2 つの特殊なケースがあります。
  • ワイルドカード文字 "~~" を使用して、すべてのドメインからの呼び出しを許可できます。
  • "localhost" というストリングを指定して、ローカル環境にインストールされているファイルからこのファイルへの呼び出しを許可することができます。Flash Player 8 から、ローカルファイルに関するセキュリティ制限が導入されました。デフォルトでは、Flash Player で実行されている、インターネットへのアクセスを許可された SWF ファイルは、ローカルファイルシステムにアクセスできません。 Flash Player では、"localhost" を指定すると、すべてのローカル SWF ファイルがこの SWF ファイルにアクセスできます。
この LocalConnection インスタンスに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。

このメソッドを使用して、セキュアでないプロトコルでホストされているファイルから、セキュアなプロトコル(HTTPS)を使用してホストされているファイルへのアクセスを許可することはできません。この場合は、allowInsecureDomain() メソッドを使用してくだい。

場合によっては、このメソッドを使用して、ドメインの異なる子ファイルから親ファイルへの LocalConnection 呼び出しを、子ファイルの最終的なドメインが不明な状態でも実行できるようにしたいことがあります。 例えば、ロードバランシングリダイレクトやサードパーティー製サーバーを使用する場合などです。このような場合、ロードに使用される LoaderInfo オブジェクトの url プロパティを使用すれば、allowDomain() メソッドで使用するドメインを取得できます。例えば、Loader オブジェクトを使用して子ファイルをロードする場合は、ファイルがロードされた後、Loader オブジェクトの contentLoaderInfo.url プロパティをチェックすることにより、完全な URL ストリングから子 SWF ファイルのドメインを解析できます。この場合、ファイルがロードされるまで待つようにしてください。ファイルが完全にロードされるまで、contentLoaderInfo.url プロパティが最終的な正しい値に設定されないためです。

また、これとは反対に、ドメインの不明な親からの LocalConnection 呼び出しを子ファイルに受け入れさせたい場合もあります。この場合は、ドメインパラメーターが、ロードされたファイルの loaderInfo.url プロパティのドメインに一致するかどうかをチェックすることにより、このメソッドを実装できます。この場合も、loaderInfo.url に含まれている完全な URL からドメインを解析する必要があります。この状況では、親ファイルがロードされるまで待つ必要はありません。親 SWF ファイルは子 SWF ファイルがロードされた時点で既にロードされているからです。

このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。デフォルトでは、LocalConnection オブジェクトはそれを作成したファイルのサンドボックスに関連付けられ、LocalConnection オブジェクトのクロスドメイン呼び出しは、受信側ファイルで LocalConnection.allowDomain() メソッドが呼び出されていない限り許可されません。ただし、Adobe AIR では、アプリケーションセキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

注意:allowDomain() メソッドは、ActionScript 1.0 および 2.0 での形式から変更されています。これらの以前のバージョンでは、allowDomain は実装するコールバックメソッドでした。ActionScript 3.0 では、allowDomain() は LocalConnection のビルトインメソッドとして呼び出されます。変更された allowDomain()flash.system.Security.allowDomain() とほぼ同じように作用します。

flash.net.LocalConnection.allowInsecureDomain()flash.display.LoaderInfo.urlflash.system.Security.allowDomain()
allowInsecureDomain この LocalConnection オブジェクトに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。指定されたすべてのパラメーターは、null 以外にする必要があります。 ArgumentErrorArgumentErrordomainsLocalConnection 呼び出しを許可するドメインを指定するストリングです。このパラメーターには 2 つの特殊なケースがあります。
  • ワイルドカード文字 "~~" を指定して、すべてのドメインからの呼び出しを許可できます。"~~" を指定する場合、ローカルホストは含まれません。
  • "localhost" というストリングを指定して、ローカル環境にインストールされている SWF ファイルからこの SWF ファイルへの呼び出しを許可することができます。Flash Player 8 から、ローカル SWF ファイルに関するセキュリティ制限が導入されました。これにより、インターネットへのアクセスを許可された SWF ファイルは、ローカルファイルシステムにはアクセスできません。"localhost" を指定すると、どのローカル SWF ファイルもこの SWF ファイルにアクセスできます。オーサリング時に、呼び出し元の SWF ファイルを local-with-networking タイプの SWF ファイルとして指定する必要もあります。
この LocalConnection オブジェクトに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。

allowInsecureDomain() メソッドは allowDomain() メソッドと同じように作用しますが、allowInsecureDomain() メソッドは、HTTPS 以外でロードされたファイルが HTTPS でロードされた SWF ファイルに LocalConnection 呼び出しを送信することも許可する点が異なります。この違いは、HTTPS を使用してロードされたファイルから allowInsecureDomain() メソッドを呼び出す場合にのみ意味があります。同じドメイン内の非 HTTPS と HTTPS の境界を越える場合でも、allowInsecureDomain() メソッドを呼び出す必要があります。デフォルトでは、同じドメイン内でも 非 HTTPS ファイルから HTTPS ファイルへの LocalConnection 呼び出しは許可されません。

allowInsecureDomain() を呼び出すことは、HTTPS によるセキュリティが損なわれる恐れがあるので、お勧めできません。HTTPS によってファイルをロードする場合は、ほぼ確実に、ファイルがネットワークでの配信中に不正操作を受けることはありません。 非 HTTPS ファイルから HTTPS ファイルへの LocalConnection 呼び出しを許可した場合、配信中に不正操作された可能性のあるファイルからの呼び出しを受け入れることになります。この場合は、HTTPS ファイルに送られてきた LocalConnection 呼び出しの正当性を信頼できないので、一般に特別な警戒を必要とします。

デフォルトでは、HTTPS プロトコルを使用してホストされたファイルは、HTTPS プロトコルを使用してホストされた他のファイルにのみアクセスできます。 この実装方法により、HTTPS プロトコルが提供する整合性が保たれます。

このメソッドでデフォルトの動作を変更することはお勧めできません。デフォルトの動作を変更すると、HTTPS のセキュリティが損なわれます。ただし、デフォルトの動作を変更せざるをえない場合もあります。例えば、Flash Player 9 以降用にパブリッシュされた HTTPS SWF ファイルに対して、Flash Player 6 以前のバージョン用にパブリッシュされた HTTP SWF ファイルからのアクセスを許可しなければならない場合などです。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

flash.net.LocalConnection.allowDomain()
close LocalConnection オブジェクトを閉じます(切断します)。LocalConnection インスタンスが接続されていないので、閉じることができません。 ArgumentErrorArgumentError LocalConnection オブジェクトを閉じます(切断します)。このコマンドは、LocalConnection オブジェクトがもうコマンドを受け入れないようにする場合に実行します。例えば、connect() コマンドを、別の SWF ファイルで同じ connectionName パラメーターを使用して実行する場合などです。 flash.net.LocalConnection.connect()connect send() コマンド(送信側 LocalConnection オブジェクト)から送信されたコマンドを受け入れるように LocalConnection オブジェクトを準備します。connectionName パラメーターに渡される値は null 以外にする必要があります。 TypeErrorTypeErrorこのエラーは、次の 3 つの理由によって発生する可能性があります。1) connectionName パラメーターに渡されたストリング値が null だった場合。null 以外の値を渡します。2) connectionName パラメーターに渡された値にコロン(:)が含まれていた場合。コロンは、スーパードメインと connectionName ストリングを区切る特殊文字として send() メソッドで使用されます。connect() メソッドでは使用しません。3) LocalConnection インスタンスが既に接続されている場合。 ArgumentErrorArgumentErrorconnectionNameString受信側 LocalConnection オブジェクトと通信する、send() コマンドで指定された接続名に対応するストリングです。 send() コマンド(送信側 LocalConnection オブジェクト)から送信されたコマンドを受け入れるように LocalConnection オブジェクトを準備します。 connect() メソッドで使用されるオブジェクトは、受信側 LocalConnection オブジェクトと呼ばれます。受信側と送信側のオブジェクトは、同じクライアントコンピューター上で実行されている必要があります。

競合状況を避けるため、このメソッドを呼び出す前に、受信側の LocalConnection オブジェクトに関連付けられるメソッドを定義します(LocalConnection クラスの例を参照)。

デフォルトでは、connectionName 引数は "superdomain:connectionName" の値に解決されます。ここで superdomain は、connect() コマンドを含むファイルのスーパードメインを表します。 例えば、受信側 LocalConnection オブジェクトを含むファイルが www.someDomain.com に配置されている場合、connectionName"someDomain.com:connectionName" に解決されます。(Flash Player で実行されているファイルがクライアントコンピューターに配置されている場合、superdomain には "localhost" が割り当てられます。)

Adobe AIR のアプリケーションセキュリティサンドボックスで実行されているコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)では、スーパードメインの代わりに、app# + AIR アプリケーションのアプリケーション ID(アプリケーション記述ファイルで定義)が使用されます。 例えば、アプリケーション ID が com.example.air.MyApp のアプリケーションでは、connectionName"app#com.example.air.MyApp:connectionName" に解決されます。

またデフォルトでは、受信側 LocalConnection オブジェクトは、接続名が "superdomain:connectionName" の値に解決される送信側 LocalConnection オブジェクトからのコマンドだけを受け入れます。このため、同じドメインに置かれているファイル間の通信は簡単です。

同じドメインのファイル間のみの通信を実装する場合は、先頭がアンダースコア(_)でなくドメイン名を含まないストリングを connectionName に指定します("myDomain:connectionName" など)。connect(connectionName) メソッドと同じストリングを使用してください。

異なるドメイン内のファイル間の通信を実装する場合は、アンダースコア(_)で始まるストリングを connectionName に指定すると、受信側 LocalConnection オブジェクトを含むファイルをドメイン間で移植しやすくなります。考えられる 2 つの状況を次に示します。

  • connectionName のストリングがアンダースコア(_)で始まっていない場合は、"myDomain:connectionName" のように、スーパードメインとコロンが前に追加されます。 これにより、他のドメインの同じ名前を持つ接続との競合は回避できますが、送信側 LocalConnection オブジェクトでも必ずこのスーパードメインを指定する必要があります("myDomain:connectionName" など)。受信側 LocalConnection オブジェクトを含むファイルが別のドメインに移動された場合は、"anotherDomain:connectionName" のように、新しいスーパードメインに応じて接頭辞が変更されます。すべての送信側 LocalConnection オブジェクトは、新しいスーパードメインを参照するように手動で編集する必要があります。
  • connectionName のストリングがアンダースコア(_)で始まっている場合("_connectionName" など)は、ストリングに接頭辞は追加されません。 つまり、受信側と送信側の LocalConnection オブジェクトは、connectionName にまったく同じストリングを使用します。受信側オブジェクトが allowDomain() を使用し、すべてのドメインからの通信を受け入れるように指定した場合は、送信側 LocalConnection オブジェクトを変更せずに、受信側 LocalConnection オブジェクトを含むファイルを別のドメインに移動させることができます。

詳細については、クラスの概要の説明、connectionNamesend())の説明、および allowDomain() エントリと domain エントリを参照してください。

注意:コロンは、connectionName のストリングとスーパードメインを区切る特殊文字として使用されます。connectionName にコロンを含むストリングを指定するのは無効です。

このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。 デフォルトでは、LocalConnection オブジェクトはそれを作成したファイルのサンドボックスに関連付けられ、LocalConnection オブジェクトのクロスドメイン呼び出しは、受信側ファイルで LocalConnection.allowDomain() メソッドが呼び出されていない限り許可されません。ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含む HTML ページに allowNetworking パラメーター(object タグおよび embed タグ)を設定します。ただし、Adobe AIR では、application セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

flash.net.LocalConnection.send()flash.net.LocalConnection.allowDomain()flash.net.LocalConnection.domain
send connect(connectionName) メソッド(受信側 LocalConnection オブジェクト)で確立した接続を使用して、methodName で指定されたメソッドを呼び出します。connectionName または methodName のいずれかの値が null です。これらのパラメーターに null 以外の値を渡します。 TypeErrorTypeErrorこのエラーは、次のうちいずれかの理由で発生する可能性があります。1) connectionName または methodName のいずれかの値が空ストリングである場合。これらのパラメーターに有効なストリングを渡します。2) methodName で指定されているメソッドが制限されている場合。3) 送信された直列化メッセージが大きすぎる場合(40 K 以上)。 ArgumentErrorArgumentErrorconnectionNameString送信側 LocalConnection オブジェクトと通信する、connect() コマンドで指定された接続名に対応します。 methodNameString受信側 LocalConnection オブジェクト内で呼び出されるメソッドの名前。次のメソッド名を使用すると、このコマンドは失敗します。sendconnectcloseallowDomainallowInsecureDomainclient、および domainarguments指定するメソッドに渡す追加のパラメーター。このパラメーターはオプションです。 connect(connectionName) メソッド(受信側 LocalConnection オブジェクト)で確立した接続を使用して、methodName で指定されたメソッドを呼び出します。send() メソッドで使用されるオブジェクトは、送信側 LocalConnection オブジェクトと呼ばれます。送信側オブジェクトと受信側オブジェクトを含む SWF ファイルは、同じクライアントコンピューター上で実行されている必要があります。

このコマンドにパラメーターとして渡すことができるデータの量は 40 KB に制限されます。シンタックスが正しいにもかかわらず、send()ArgumentError をスローする場合は、send() 要求を複数のコマンドに分割してそれぞれのデータを 40 KB より小さくしてみてください。

connect() の項目で説明したように、connectionName にはデフォルトで現在のスーパードメインが追加されます。 異なるドメイン間の通信を実装する場合は、送信側と受信側の両方の LocalConnection オブジェクトの connectionName を、現在のスーパードメインが connectionName に追加されないように定義する必要があります。 これには、次の 2 つの方法があります。

  • 送信側と受信側の両方の LocalConnection オブジェクトで、connectionName の先頭にアンダースコア(_)を使用します。受信側オブジェクトを含むファイルでは、LocalConnection.allowDomain() を使用して、どのドメインからの接続も受け入れるように指定します。この方法では、送信側と受信側のファイルを任意のドメインに配置できます。
  • 送信側 LocalConnection オブジェクトの connectionName にスーパードメインを含めます。例えば、myDomain.com:myConnectionName と指定します。受信側オブジェクトでは、LocalConnection.allowDomain() を使用して、指定したスーパードメイン(この例では myDomain.com)からの接続を受け入れるか、またはすべてのドメインからの接続を受け入れるように指定します。

注意:受信側 LocalConnection オブジェクトの connectionName ではスーパードメインを指定できません。スーパードメインを指定できるのは送信側 LocalConnection オブジェクトだけです。

このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。 デフォルトでは、LocalConnection オブジェクトはそれを作成したファイルのサンドボックスに関連付けられ、LocalConnection オブジェクトのクロスドメイン呼び出しは、受信側ファイルで LocalConnection.allowDomain() メソッドが呼び出されていない限り許可されません。ブラウザーで実行されている SWF コンテンツで、ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含む HTML ページに allowNetworking パラメーター(object タグおよび embed タグ)を設定します。 ただし、Adobe AIR では、アプリケーションセキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

flash.net.LocalConnection.allowDomain()flash.net.LocalConnection.connect()flash.net.LocalConnection.domainsecurityErrorflash.events:SecurityErrorEventLocalConnection.send() は、呼び出し元のコードがアクセスできないセキュリティ Sandbox から SWF ファイルと通信しようとしました。この問題は、受信側が LocalConnection.allowDomain() を実装することで回避できます。 LocalConnection.send() は、呼び出し元のコードがアクセスできないセキュリティ Sandbox から SWF ファイルと通信しようとしました。statusflash.events:StatusEventLevel プロパティの値が "status" の場合は呼び出しが成功したことを示し、"error" の場合は呼び出しが失敗したことを示します。受信側の SWF ファイルが接続を拒否した場合、呼び出しは失敗する可能性があります。 Level プロパティの値が "status" の場合は呼び出しが成功したことを示し、"error" の場合は呼び出しが失敗したことを示します。
client コールバックメソッドが呼び出されるオブジェクトを示します。Objectclient プロパティは、null 以外のオブジェクトに設定する必要があります。 TypeErrorTypeError コールバックメソッドが呼び出されるオブジェクトを示します。デフォルトのオブジェクトは、作成されるローカル接続 this です。client プロパティを別のオブジェクトに設定すると、その別のオブジェクトでコールバックメソッドを呼び出すことができます。 domain 現在のファイルが存在するドメインを表すストリングです。String 現在のファイルが存在するドメインを表すストリングです。

Adobe AIR のアプリケーションセキュリティサンドボックスで実行されているコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)では、スーパードメインの代わりに、app# + AIR アプリケーションのアプリケーション ID(アプリケーション記述ファイルで定義)が使用されます。 例えば、アプリケーション ID が com.example.air.MyApp のアプリケーションでは、connectionName"app#com.example.air.MyApp:connectionName" に解決されます。

Flash Player 9 以降用にパブリッシュされた SWF ファイルでは、ファイルのサブドメインを含む正確なドメインを示すストリングを返します。 例えば、現在のファイルが www.adobe.com にある場合は、"www.adobe.com" を返します。

現在のファイルが、Flash Player で実行されているクライアントコンピューター上のローカルファイルである場合は、"localhost" を返します。

このプロパティの最も一般的な使用方法としては、送信側 LocalConnection オブジェクトのドメイン名を、受信側 LocalConnection オブジェクトで呼び出すメソッドのパラメーターとして組み込みます。あるいは、LocalConnection.allowDomain() と組み合わせて使用して、特定のドメインからのコマンドを受け入れます。同じドメイン内にある LocalConnection オブジェクト間でのみ通信する場合は、通常、このプロパティを使用する必要はありません。

flash.net.LocalConnection.allowDomain()flash.net.LocalConnection.connect()
isSupported 現在のプラットフォームで LocalConnection クラスがサポートされている場合、isSupported プロパティは true に設定されます。サポートされていない場合は、false に設定されます。Boolean 現在のプラットフォームで LocalConnection クラスがサポートされている場合、isSupported プロパティは true に設定されます。サポートされていない場合は、false に設定されます。 isPerUserBoolean
NetStream NetStream クラスは NetConnection 経由で単方向ストリーミングチャンネルを開きます。flash.events:EventDispatcher NetStream クラスは NetConnection 経由で単方向ストリーミングチャンネルを開きます。

NetStream クラスを使用して、次の操作を行います。

  • NetStream.play() を呼び出して、ローカルディスク、Web サーバーまたは Flash Media Server からメディアファイルを再生します。
  • NetStream.publish() を呼び出して、ビデオ、オーディオおよびデータストリームを Flash Media Server にパブリッシュします。
  • NetStream.send() を呼び出して、サブスクライブされたすべてのクライアントにデータメッセージを送信します。
  • NetStream.send() を呼び出して、メタデータをライブストリームに追加します。
  • NetStream.appendBytes() を呼び出して、ByteArray データを NetStream に渡します。

注意:同じ NetStream オブジェクトでは、ストリームを再生およびパブリッシュできません。

Adobe AIR および Flash Player 9.0.115.0 以降のバージョンでは、標準の MPEG-4 コンテナ形式から派生したファイルがサポートされます。H.264 ビデオまたは HE-AAC v2 エンコードオーディオ、あるいはその両方が含まれている場合、このようなファイルには F4V、MP4、M4A、MOV、MP4V、3GP および 3G2 があります。H.264 では、Sorenson または On2 の同じエンコードプロファイルと比較して、低いビットレートで高品質のビデオが配信されます。AAC は、MPEG-4 ビデオ標準で定義された標準オーディオ形式です。AAC の拡張である HE-AAC v2 は、スペクトルバンドレプリケーション(SBR)およびパラメトリックステレオ(PS)技法を使用して、低いビットレートでのコーディング効率を向上させます。

サポートされているコーデックおよびファイル形式について詳しくは、以下を参照してください。

  • ADOBE FLASH MEDIA SERVER 3.5 技術概要
  • Exploring Flash Player support for high-definition H.264 video and AAC audio
  • FLV/F4V オープン仕様のドキュメント

Flash Media Server ストリーム、プログレッシブ F4V ファイル、またはプログレッシブ FLV ファイルからデータを受け取る

Flash Media Server、F4V ファイル、および FLV ファイルは、ストリーミング中または再生中に特定のデータポイントで、データが含まれているイベントオブジェクトを送信できます。再生中は、2 つの方法でストリームまたは FLV ファイルからのデータを処理できます。

  • client プロパティをイベントハンドラーと関連付けてデータオブジェクトを受信します。NetStream.client プロパティを使用して、特定のデータ処理関数の呼び出しにオブジェクトを割り当てます。NetStream.client プロパティに割り当てられたオブジェクトは、onCuePoint()onImageData()onMetaData()onPlayStatus()onSeekPoint()onTextData() および onXMPData() の各データポイントを監視できます。これらの関数内にプロシージャを書き込んで、再生中にストリームから返されたデータオブジェクトを処理します。詳しくは、NetStream.client プロパティを参照してください。
  • client プロパティを NetStream クラスのサブクラスに関連付けて、データオブジェクトを受信するイベントハンドラーを書き込みます。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。ただし、NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義することはできます。また、そのサブクラスをダイナミックにしてイベントハンドラーをサブクラスのインスタンスに追加することもできます。

NetGroup.Neighbor.Connect イベントの受信を待ってから、オブジェクトレプリケーション、ダイレクトルーティングまたはポスティング API を使用します。

注意:MP3 などのオーディオファイルでデータを送信するには、Sound クラスを使用してオーディオファイルと Sound オブジェクトを関連付けます。次に、Sound.id3 プロパティを使用してサウンドファイルからメタデータを読み込みます。

次の例では、Video オブジェクトを NetConnection クラスおよび NetStream クラスと共に使用して、FLV ファイルをロードして再生します。

この例では、Video オブジェクトと NetStream オブジェクトを作成し、Video.attachNetStream() メソッドと NetStream.play() メソッドを呼び出すコードがハンドラー関数に配置されます。ハンドラーは、NetConnection オブジェクトとの接続が成功した場合にのみ呼び出されます。つまり、netStatus イベントが返す info オブジェクトの code プロパティが成功を示しているときです。接続に成功するまで待ってから、NetStream.play() を呼び出すことをお勧めします。

package { import flash.display.Sprite; import flash.events.NetStatusEvent; import flash.events.SecurityErrorEvent; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.Event; public class NetConnectionExample extends Sprite { private var videoURL:String = "http://www.helpexamples.com/flash/video/cuepoints.flv"; private var connection:NetConnection; private var stream:NetStream; private var video:Video = new Video(); public function NetConnectionExample() { connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.connect(null); } private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": connectStream(); break; case "NetStream.Play.StreamNotFound": trace("Stream not found: " + videoURL); break; } } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function connectStream():void { var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.client = new CustomClient(); video.attachNetStream(stream); stream.play(videoURL); addChild(video); } } } class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate); } public function onCuePoint(info:Object):void { trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type); } }
カスタムクラスを作成しなくても、関数を使用してメタデータを取得することができます。次の例は Bill Sanders 氏によるアイデアですが、前述の NetConnectionExample のコードを編集して、関数内でメタデータを呼び出す方法を示しています。この例では、mdata オブジェクトを使用して video ビデオインスタンスの幅と高さを設定しています。 //Place the following in the connectStream() function //in the NetConnectionExample code var metaSniffer:Object=new Object(); stream.client=metaSniffer; //stream is the NetStream instance metaSniffer.onMetaData=getMeta; // Add the following function within the NetConnectionExample class private function getMeta (mdata:Object):void { video.width=mdata.width/2; video.height=mdata.height/2; }
flash.media.Videoflash.net.NetConnectionappendBytes()play()publish()send()onImageDataonMetaDatamediaTypeData ビデオコンテンツの再生時と、一部の種類のメッセージが処理されたときに送出されます。flash.events.NetDataEventflash.events.NetDataEvent ビデオコンテンツの再生時と、一部の種類のメッセージが処理されたときに送出されます。

NetDataEvent は次のメッセージのために送出されます。

  • onCuePoint
  • onImageData
  • onMetaData
  • onPlayStatus(NetStream.Play.Complete コードの場合)
  • onTextData
  • onXMPData

注意:このイベントは、Android および Blackberry Tablet OS 上のブラウザー内の Flash Player で実行しているコンテンツ、または iOS 上の AIR で実行しているコンテンツからは送出されません。

onSeekPoint シーク可能ポイントと見なされるポイント(例えば、ビデオキーフレーム)が付加バイトパーサーによって検出されたときに、appendBytes() から同期的に呼び出されます。 シーク可能ポイントと見なされるポイント(例えば、ビデオキーフレーム)が付加バイトパーサーによって検出されたときに、appendBytes() から同期的に呼び出されます。このイベントを使用して、シークポイントテーブルを作成できます。byteCount は、シークポイントに対する解析可能なメッセージの最初のバイトの byteCount に対応しています。前述のとおり、この値は 0 にリセットされます。シークするには、NetStream.Seek.Notify イベントで、シーク可能ポイントから始まるバイトを見つけ、appendBytes(bytes) を呼び出します。bytes 引数が、シーク可能ポイントから始まるバイトで構成される ByteArray である場合は、ビデオはそのシークポイントから再生されます。

注意:このコールバック内からの appendBytes() への呼び出しは無視されます。

onSeekPointNetStream.client オブジェクトのプロパティです。このプロパティは appendBytes() メソッドが受け取るデータに応答するので、「イベント」セクションにリストされています。NetStream クラスの説明について詳しくは、NetStream.client プロパティを参照してください。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、onSeekPoint をイベントとして受け取ったり、処理したりすることはできません。onSeekPoint を使用するには、1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。

  • Netstream インスタンスの client プロパティで参照されるオブジェクトです。
  • Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。ただし、NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義することはできます。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。
client
drmStatus DRM(デジタル著作権管理)で暗号化されたコンテンツの再生が開始されるときに送出されます(ユーザーが認証されてコンテンツの再生が許可された場合)。flash.events.DRMStatusEvent.DRM_STATUSflash.events.DRMStatusEvent DRM(デジタル著作権管理)で暗号化されたコンテンツの再生が開始されるときに送出されます(ユーザーが認証されてコンテンツの再生が許可された場合)。

DRMStatusEvent オブジェクトには、コンテンツがオフラインでも使用可能になっているか、またはバウチャーの期限が切れたときにコンテンツを表示できなくなるかなど、バウチャーに関連する情報が含まれています。

flash.events.DRMStatusEventflash.net.drm.DRMManager.resetDRMVouchers()setDRMAuthenticationCredentials()
drmError NetStream オブジェクトが DRM(デジタル著作権管理)で暗号化されたファイルを再生しようとして、DRM に関連したエラーを検出したときに送出されます。flash.events.DRMErrorEvent.DRM_ERRORflash.events.DRMErrorEvent NetStream オブジェクトが DRM(デジタル著作権管理)で暗号化されたファイルを再生しようとして、DRM に関連したエラーを検出したときに送出されます。例えば、DRMErrorEvent オブジェクトは、ユーザー承認に失敗したときに送出されます。これは、ユーザーがコンテンツを表示する権利を購入していないためや、コンテンツプロバイダーが表示アプリケーションをサポートしていないためなどで発生します。 flash.events.DRMErrorEventflash.net.drm.DRMManager.resetDRMVouchers()setDRMAuthenticationCredentials()drmAuthenticate NetStream オブジェクトが、再生の前にユーザーの認証資格情報を要求する、DRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。flash.events.DRMAuthenticateEvent.DRM_AUTHENTICATEflash.events.DRMAuthenticateEvent NetStream オブジェクトが、再生の前にユーザーの認証資格情報を要求する、DRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。

NetStream オブジェクトの setDRMAuthenticationCredentials() メソッドを使用してユーザーを認証します。ユーザー認証に失敗した場合、認証が再試行され、NetStream オブジェクトの新しい DRMAuthenticateEvent イベントが送出されます。

flash.events.DRMAuthenticateEventflash.net.drm.DRMManager.resetDRMVouchers()setDRMAuthenticationCredentials()
onDRMContentData AIR がメディアファイル内に埋め込まれた DRM コンテンツメタデータを抽出したときに応答するリスナーを定義します。 AIR がメディアファイル内に埋め込まれた DRM コンテンツメタデータを抽出したときに応答するリスナーを定義します。

DRMContentData オブジェクトには、DRM で保護されたメディアファイルの再生に求められるバウチャーを取得するために必要な情報が含まれています。DRMManager クラスを使用して、この情報でバウチャーをダウンロードします。

onDRMContentDataNetStream.client オブジェクトのプロパティです。このプロパティは、ローカルメディアファイルから埋め込みデータをプリロードするときにデータイベントに応答するので、「イベント」セクションにリストされています。詳しくは、NetStream クラスの説明を参照してください。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、onDRMContentData をイベントとして受け取ったり、処理したりすることはできません。代わりに、1 つのコールバック関数を定義して、以下のオブジェクトのいずれかを直接アタッチする必要があります。

  • Netstream インスタンスの client プロパティで参照されるオブジェクトです。
  • Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。ただし、NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義することや、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することは可能です。
flash.net.drm.DRMContentDatapreloadEmbeddedData()flash.net.drm.DRMManagerflash.net.drm.DRMVoucher
onPlayStatus NetStream オブジェクトによるストリームの再生が終了した場合に応答するリスナーを定義します。 NetStream オブジェクトによるストリームの再生が終了した場合に応答するリスナーを定義します。関連付けられたイベントオブジェクトは、netStatus イベントによって返される内容に加えて情報を提供します。このプロパティを使用すると、NetStream オブジェクトが再生リスト内のストリームを切り替えたとき(情報オブジェクト NetStream.Play.Switch で示される)、または NetStream オブジェクトが終わりまで再生したときに(情報オブジェクト NetStream.Play.Complete で示される)、コード内のアクションをトリガーできます。

onPlayStaus は、実際は NetStream.client オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。詳しくは、NetStream クラスの説明を参照してください。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、onPlayStatus をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。

  • Netstream インスタンスの client プロパティで参照されるオブジェクトです。
  • Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義します。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。

このイベントでは、次のプロパティが指定された情報オブジェクトを返すことができます。

code プロパティlevel プロパティ説明NetStream.Play.Switchstatusサブスクライバが、再生リストでストリームを切り替えています。NetStream.Play.Completestatus再生が終了しました。NetStream.Play.TransitionCompletestatusストリームのビットレートを切り替えた結果、サブスクライバは新しいストリームに切り替えています。
clientflash.events.NetStatusEvent.NET_STATUSasyncErroronMetaDataonCuePoint
onCuePoint ビデオファイルの再生中に埋め込まれたキューポイントに達した場合に応答するリスナーを定義します。 ビデオファイルの再生中に埋め込まれたキューポイントに達した場合に応答するリスナーを定義します。このリスナーを使用して、ビデオが特定のキューポイントに達したときにコード内のアクションをトリガーすることができます。これにより、アプリケーションの他のアクションとビデオ再生イベントと同期させることができます。Flash Media Serverのサポートするビデオファイル形式について詳しくは、www.adobe.com/go/learn_fms_fileformats_jp を参照してください。

onCuePoint は実際は NetStream.client オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。詳しくは、NetStream クラスの説明を参照してください。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、onCuePoint をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。

  • Netstream インスタンスの client プロパティで参照されるオブジェクトです。
  • Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義します。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。

関連付けられたイベントリスナーは、NetStream.play() メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガーされます。

次のタイプのキューポイントをビデオファイルに埋め込むことができます。

  • ナビゲーションキューポイントは、ビデオファイル内のキーフレームと、その厳密に一致するキーフレームに対応するキューポイントの time プロパティを指定します。ナビゲーションキューポイントは、ビデオファイル内の移動に使用できるブックマークやエントリポイントとしてよく使われます。
  • 時間を指定するイベントキューポイント。時間は、特定のキーフレームに対応していることも、対応していないこともあります。イベントキューポイントは、通常ビデオ内で何か処理が行われるときの時間を表し、他のアプリケーションイベントのトリガーに使用できます。

onCuePoint イベントオブジェクトには、次のプロパティが含まれます。

プロパティ説明nameキューポイントがビデオファイル内に埋め込まれたときに、キューポイントに指定された名前です。parametersこのキューポイントに指定された名前と値のペアのストリングの結合配列です。パラメーター名または値には、任意の有効なストリングを使用できます。timeビデオファイルの再生時にキューポイントが発生した時間(秒数)です。type到達したキューポイントの種類です。ナビゲーションまたはイベントのいずれかです。

最初にビデオファイルをエンコードするとき、または Flash オーサリングツールでビデオの読み込みウィザードを使用してビデオクリップを読み込むときに、ビデオファイルにキューポイントを定義できます。

onMetaData イベントも、ビデオファイル内のキューポイントに関する情報を取得します。ただし、onMetaData イベントは、ビデオの再生が開始される前に、すべてのキューポイントに関する情報を取得します。onCuePoint イベントは、1 つのキューポイントについて、再生時のそのキューポイントに指定された時間での情報を取得します。

一般に、コードで特定のキューポイントの発生時に応答するには、onCuePoint イベントを使用して、コード内の特定のアクションをトリガーします。

onMetaData イベントに指定されたキューポイントのリストを使用すると、ビデオストリームの事前に定義されたポイントでユーザーにビデオの再生を開始させることができます。キューポイントの time プロパティの値を NetStream.seek() メソッドに渡して、そのキューポイントからビデオを再生します。

次の例は、外部 FLV ファイルをロードして、メタデータおよびキューポイントに応答する方法を示しています。ActionScriptExamples.com で作成された例。 var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); video.attachNetStream(ns); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
clientonMetaData
onTextData Flash Player が再生中のメディアファイルに埋め込まれたテキストデータを受信したときに応答するリスナーを定義します。 Flash Player が再生中のメディアファイルに埋め込まれたテキストデータを受信したときに応答するリスナーを定義します。テキストデータは UTF-8 形式で、3GP timed text 仕様に基づいて形式に関する情報を含めることができます。

onTextData は実際は NetStream.client オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。詳しくは、NetStream クラスの説明を参照してください。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、onTextData をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。

  • Netstream インスタンスの client プロパティで参照されるオブジェクトです。
  • Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義します。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。

関連付けられたイベントリスナーは、NetStream.play() メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガーされます。

onTextData イベントオブジェクトには、テキストデータごとに 1 つのプロパティが含まれます。

この例のコードでは、Netstream.client プロパティを使用して、onTextData および onImageData のコールバック関数を処理しています。onImageDataHandler() 関数は、onImageData イベントオブジェクト imageData を使用してバイト配列を格納します。また、onTextDataHandler() 関数は、onTextData イベントオブジェクト textData を使用して複数のテキストデータを格納します(各データは、textData オブジェクトのプロパティです)。

コード中の場所 yourURL を、テキストまたはイメージメタデータを含むメディアファイルの実際の場所で置き換える必要があります。

カスタムクラスを使用してイメージデータやテキストデータを処理することもできます。詳細および例については、記事「Flash Video のメタデータおよびキューポイントの処理(英語)」を参照してください。

package { import flash.display.*; import flash.net.*; import flash.media.*; import flash.system.*; import flash.events.*; public class OnTextDataExample extends Sprite { public function OnTextDataExample():void { var customClient:Object = new Object(); customClient.onImageData = onImageDataHandler; customClient.onTextData = onTextDataHandler; var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_ns.play("yourURL"); my_ns.client = customClient; var my_video:Video = new Video(); my_video.attachNetStream(my_ns); addChild(my_video); } public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); var imageloader:Loader = new Loader(); imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object. addChild(imageloader); } public function onTextDataHandler(textData:Object):void { trace("--- textData properties ----"); var key:String; for (key in textData) { trace(key + ": " + textData[key]); } } } }
NetConnectionclientasyncErrorplay()onImageData
onImageData 再生中のメディアファイルにバイト配列として埋め込まれているイメージデータを Flash Player が受け取ったときに応答するリスナーを定義します。 再生中のメディアファイルにバイト配列として埋め込まれているイメージデータを Flash Player が受け取ったときに応答するリスナーを定義します。イメージデータは、JPEG、PNG または GIF のいずれかのコンテンツを作成できます。表示オブジェクトにバイト配列を読み込むには、flash.display.Loader.loadBytes() メソッドを使用します。

onImageData は実際は NetStream.client オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。詳しくは、NetStream クラスの説明を参照してください。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、onImageData をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。

  • Netstream インスタンスの client プロパティで参照されるオブジェクトです。
  • Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義します。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。

関連付けられたイベントリスナーは、NetStream.play() メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガーされます。

onImageData イベントオブジェクトは、イメージデータを AMF0 データチャンネルを介して送信されるバイト配列として格納します。

この例のコードでは、Netstream.client プロパティを使用して、onTextData および onImageData のコールバック関数を処理しています。onImageDataHandler() 関数は、onImageData イベントオブジェクト imageData を使用してバイト配列を格納します。また、onTextDataHandler() 関数は、onTextData イベントオブジェクト textData を使用して複数のテキストデータを格納します(各データは、textData オブジェクトのプロパティです)。

コード中の場所 yourURL を、テキストまたはイメージメタデータを含むメディアファイルの実際の場所で置き換える必要があります。

カスタムクラスを使用してイメージデータやテキストデータを処理することもできます。詳細および例については、記事「Flash Video のメタデータおよびキューポイントの処理(英語)」を参照してください。

package { import flash.display.*; import flash.net.*; import flash.media.*; import flash.system.*; import flash.events.*; public class OnTextDataExample extends Sprite { public function OnTextDataExample():void { var customClient:Object = new Object(); customClient.onImageData = onImageDataHandler; customClient.onTextData = onTextDataHandler; var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_ns.play("yourURL"); my_ns.client = customClient; var my_video:Video = new Video(); my_video.attachNetStream(my_ns); addChild(my_video); } public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); var imageloader:Loader = new Loader(); imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object. addChild(imageloader); } public function onTextDataHandler(textData:Object):void { trace("--- textData properties ----"); var key:String; for (key in textData) { trace(key + ": " + textData[key]); } } } }
NetConnectionflash.display.Loader.loadBytes()clientasyncErrorplay()onTextData
onMetaData 再生中のビデオに埋め込まれた記述的情報を Flash Player が受け取ったときに応答するリスナーを定義します。 再生中のビデオに埋め込まれた記述的情報を Flash Player が受け取ったときに応答するリスナーを定義します。Flash Media Serverのサポートするビデオファイル形式について詳しくは、www.adobe.com/go/learn_fms_fileformats_jp を参照してください。

onMetaData は実際は NetStream.client オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。NetStream クラスの説明について詳しくは、NetStream.client プロパティを参照してください。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、onMetaData をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。

  • Netstream インスタンスの client プロパティで参照されるオブジェクトです。
  • Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義することができます。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。

Flash Video Exporter ユーティリティ(バージョン 1.1 以降)は、ビデオの継続時間、作成日付、データレート、その他の情報をビデオファイルに埋め込みます。各ビデオエンコーダーは、それぞれ異なるメタデータのセットを埋め込みます。

関連付けられたイベントリスナーは、NetStream.play() メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガーされます。

多くの場合、ストリームメタデータに埋め込まれた継続期間の値は実際の継続時間に近似したものになりますが、正確な値ではありません。つまり、再生ヘッドがビデオストリームの末尾にある場合、FLV メタデータに埋め込まれた継続期間の値は NetStream.time プロパティの値と必ずしも一致するわけではありません。

onMetaData イベントハンドラーに渡されるイベントオブジェクトには、各データに 1 つのプロパティが含まれています。

次の例は、外部 FLV ファイルをロードして、メタデータおよびキューポイントに応答する方法を示しています。ActionScriptExamples.com で作成された例。 var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); video.attachNetStream(ns); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
NetConnectionclientasyncErroronCuePointplay()time
onXMPData 再生中のビデオに埋め込まれている Adobe Extensible Metadata Platform(XMP)独自の情報を Flash Player が受け取ったときに応答するリスナーを定義します。 再生中のビデオに埋め込まれている Adobe Extensible Metadata Platform(XMP)独自の情報を Flash Player が受け取ったときに応答するリスナーを定義します。Flash Media Serverのサポートするビデオファイル形式について詳しくは、www.adobe.com/go/learn_fms_fileformats_jp を参照してください。

onXMPData は実際は NetStream.client オブジェクトのプロパティです。このプロパティは、Flash Media Server を使用したメディアのストリーミング時または FLV ファイルの再生中にデータイベントに応答するので、「イベント」セクションにリストされています。NetStream クラスの説明について詳しくは、NetStream.client プロパティを参照してください。addEventListener() メソッドまたはその他の EventDispatcher メソッドを使用して、onMetaData をイベントとして受け取ったり、処理したりすることはできません。1 つのコールバック関数を定義して、以下のオブジェクトのいずれかをアタッチする必要があります。

  • Netstream インスタンスの client プロパティで参照されるオブジェクトです。
  • Netstream サブクラスのインスタンスです。Netstream は sealed クラスで、実行時にプロパティまたはメソッドを Netstream オブジェクトに追加できないことを意味します。ただし、NetStream のサブクラスを作成し、そのサブクラス内にイベントハンドラーを定義することはできます。また、サブクラスをダイナミックにしてイベントハンドラー関数をサブクラスのインスタンスに追加することもできます。

関連付けられたイベントリスナーは、NetStream.play() メソッドの呼び出し後、ただしビデオ再生ヘッドが進むよりは前にトリガーされます。

onXMPData() イベント処理機能に渡されるオブジェクトは、1 つのデータプロパティ(ストリング)を持ちます。このストリングは最上位の UUID ボックスから生成されます(最上位ボックスの 128 ビット UUID は BE7ACFCB-97A9-42E8-9C71-999491E3AFAC)。この最上位 UUID ボックスには、null を持たない UTF-8 ストリングとして表される XML ドキュメントが 1 つだけ含まれます。

flash.net.NetConnectionclientasyncErroronCuePointplay()time
netStatus NetStream オブジェクトが、そのステータスまたはエラーの状態をレポートすると送出されます。flash.events.NetStatusEvent.NET_STATUSflash.events.NetStatusEvent NetStream オブジェクトが、そのステータスまたはエラーの状態をレポートすると送出されます。netStatus イベントには、info プロパティが含まれます。このプロパティは、接続試行が成功したかどうかなど、イベントに関する特定の情報を含む情報オブジェクトです。 flash.events.NetStatusEvent.infoioError 入出力エラーが発生してネットワーク処理が失敗したときに送出されます。flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent 入出力エラーが発生してネットワーク処理が失敗したときに送出されます。 asyncError 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。flash.events.AsyncErrorEvent.ASYNC_ERRORflash.events.AsyncErrorEvent 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。このイベントは、サーバーが定義されていないメソッドをクライアント上で呼び出したときに送出されます。 onPlayStatusonMetaDatastatus アプリケーションが NetStream.play() メソッドを呼び出して DRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。flash.events.StatusEvent.STATUSflash.events.StatusEvent アプリケーションが NetStream.play() メソッドを呼び出して DRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。ステータスコードプロパティの値は "DRM.encryptedFLV" です。 play()NetStream メディアファイルを再生するときに使用できるストリームを作成し、NetConnection オブジェクトにデータを送信します。NetConnection インスタンスは接続されていません。 ArgumentErrorArgumentErrorconnectionflash.net:NetConnectionNetConnection オブジェクトです。 peerIDStringconnectToFMSこのオプションのパラメーターは Flash Player 10 以降で、RTMFP 接続して使用する場合に利用可能です。(NetConnection.protocol プロパティの値が "rtmfp" でない場合、このパラメーターは無視されます。)次の値のいずれかを使用します。
  • Flash Media Server に接続するには、NetStream.CONNECT_TO_FMS を指定します。
  • ピアーに直接パブリッシュするには、NetStream.DIRECT_CONNECTIONS を指定します。
  • 特定のピアーから直接再生するには、ピアーの識別子を指定します(「NetConnection.nearID」および「NetStream.farID」を参照)。
  • (Flash Player 10.1 または AIR 2 以降)ピアーツーピアーマルチキャストグループでストリームをパブリッシュまたは再生するには、groupspec ストリングを指定します(「GroupSpecifier クラス」を参照)。

ほとんどの場合、groupspec にはローカルシステムでネットワークアップリンクを使用する可能性があります。 この場合、ユーザーはコンピューターのネットワークリソースを使用する権限を求められています。 ユーザーがこの使用を許可する場合は、NetStream.Connect.Success NetStatusEvent が NetConnection のイベントリスナーに送信されます。ユーザーが許可を拒否する場合、NetStream.Connect.Rejected イベントが送信されます。groupspec を指定する場合、NetStream.Connect.Success イベントが受信されるまで、NetStream オブジェクトのメソッドを使用するエラーになり、例外が発生します。

このパラメーターをコンストラクターのステートメントに含めて null の値を渡すと、その値は「connectToFMS」に設定されます。

メディアファイルを再生するときに使用できるストリームを作成し、NetConnection オブジェクトにデータを送信します。 次のコードは、変数 videoURL に割り当てられたビデオを連続的にダウンロードし、表示する接続を示しています。 var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_ns.play(videoURL); var my_video:Video = new Video(); my_video.attachNetStream(my_ns); addChild(my_video); 次のコードは、(変数 videoURL に割り当てられた)ビデオを、connect() コマンドで指定されているリモート Flash Media Server インスタンスでストリーミングし、表示する接続を示しています。 var my_nc:NetConnection = new NetConnection(); my_nc.connect("rtmp://www.yourfmsserver.com/someappname"); var my_ns:NetStream = new NetStream(my_nc, NetStream.CONNECT_TO_FMS); my_ns.play(videoURL); var my_video:Video = new Video(); my_video.attachNetStream(my_ns); addChild(my_video);
CONNECT_TO_FMSDIRECT_CONNECTIONSfarIDflash.media.Video.attachCamera()flash.net.GroupSpecifierflash.net.GroupSpecifier.groupspecWithAuthorizations()flash.net.GroupSpecifier.groupspecWithoutAuthorizations()flash.net.GroupSpecifier.multicastEnabledflash.net.NetConnectionflash.net.NetConnection.nearIDflash.net.NetConnection.protocolflash.net.NetGroupflash.events.NetStatusEvent.info.code="NetStream.Connect.Rejected"flash.events.NetStatusEvent.info.code="NetStream.Connect.Success"
appendBytesAction タイムスケールの不連続性を示し、FIFO をフラッシュして、ファイルヘッダーまたは FLV タグの先頭を予期するようバイトパーサーに指示します。netStreamAppendBytesActionString タイムスケールの不連続性を示し、FIFO をフラッシュして、ファイルヘッダーまたは FLV タグの先頭を予期するようバイトパーサーに指示します。

NetStream.seek() を呼び出すと、NetStream バッファーがフラッシュされます。バイトパーサーは、appendBytesAction() を呼び出して RESET_BEGIN または RESET_SEEK 引数を渡すまでフラッシュモードのままです。「NetStream.Seek.Notify」イベントをキャプチャして、シーク後に appendBytesAction() を呼び出します。新しいファイルヘッダーは、再生リストおよび NetStream.seek() を呼び出さないシークをサポートできます。

このメソッドを呼び出して、onSeekPoint() コールバックのバイトカウンターをリセットすることもできます。

appendBytes()seek()flash.net.NetStreamAppendBytesAction
appendBytes ByteArray をプレイアウトのために NetStream に渡します。bytesflash.utils:ByteArray ByteArray をプレイアウトのために NetStream に渡します。「データ生成モード」の NetStream に対してこのメソッドを呼び出します。NetStream をデータ生成モードにするには、null に接続されている NetConnection 上に作成された NetStream に対して NetStream.play(null) を呼び出します。データ生成モードになっていない NetStream に対して appendBytes() を呼び出すとエラーになり、例外が発生します。

バイトパーサーは、ヘッダー付きの FLV ファイルを認識します。ヘッダーが解析された後、appendBytes() は、今後のすべての呼び出しが同じ実際のファイルまたは仮想ファイルの連続であると予期します。appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN) が呼び出さるまでは、別のヘッダーは予期されません。

NetStream オブジェクトには、appendBytes() から NetStream への FIFO と、プレイアウトバッファーの 2 つのバッファーがあります。FIFO は部分 FLV タグ再アセンブリバッファで、不完全な FLV タグが 1 つしか含まれません。NetStream.seek() を呼び出すと、両方のバッファーがフラッシュされます。seek() を呼び出してから、appendBytesAction() を呼び出してタイムスケールをリセットし、付加された次のメッセージのタイムスタンプから開始します。

FLV タグが完全になるまで、appendBytes() を呼び出すたびに、バイトが FIFO に追加されます。FLV タグが完全になったら、そのタグはプレイアウトバッファーに移動します。appendBytes() を呼び出すことで、複数の FLV タグを書き込むことができます。既存の FLV タグは、最初のバイトによって完全になります(この FLV タグはプレイアウトバッファーに移動します)。完全な FLV タグはプレイアウトバッファーに移動します。完全な FLV タグの形成に使用されなかった残りのバイトは FIFO に移動します。FIFO 内のバイトは、appendBytes() への呼び出しによって完全になるか、RESET_SEEK または RESET_BEGIN 引数を指定して appendBytesAction() を呼び出すことでフラッシュされます。

注意:バイトパーサーは、以降の appendBytes() への呼び出しが行われるまで、その appendBytes() への呼び出しを完全にはデコードできない場合があります。

appendBytesAction()seek()
attachAudio ソースとして渡された Microphone オブジェクトからのオーディオストリームを、NetStream オブジェクトに接続します。"null" microphoneflash.media:Microphone送信するオーディオストリームのソースです。 ソースとして渡された Microphone オブジェクトからのオーディオストリームを、NetStream オブジェクトに接続します。このメソッドは、指定されたストリームの発行者だけが使用できます。

このメソッドを Flash Media Server で使用し、ライブオーディオをサーバーに送信します。このメソッドは、publish() メソッドを呼び出す前、または呼び出した後に呼び出します。

Microphone.rate プロパティを、サウンドキャプチャデバイスのレートに合わせて設定します。setSilenceLevel() を呼び出して、無音レベルのしきい値を設定します。オーディオストリームのサウンドプロパティ(ボリュームとパン)を制御するには、Microphone.soundTransform プロパティを使用します。

     var nc:NetConnection = new NetConnection();
     nc.connect("rtmp://server.domain.com/app");
     var ns:NetStream = new NetStream(nc);
     
     var live_mic:Microphone = Microphone.get();
     live_mic.rate = 8;
     live_mic.setSilenceLevel(20,200);
     
     var soundTrans:SoundTransform = new SoundTransform();
     soundTrans.volume = 6;
     live_mic.soundTransform = soundTrans;
     
     ns.attachAudio(live_mic);
     ns.publish("mic_stream","live")
     

オーディオを聞くには、NetStream.play() メソッドを呼び出し、DisplayObjectContainer.addChild() を呼び出して、オーディオを表示リストのオブジェクトに転送します。

play()flash.media.Microphoneflash.display.DisplayObjectContainer.addChild()
attachCamera カメラからビデオのキャプチャを開始します。または、theCamera が null に設定されると、キャプチャを停止します。theCameraflash.media:Cameraビデオ転送のソースです。有効な値は、ビデオのキャプチャを開始する Camera オブジェクトと null です。null を渡すと、ビデオのキャプチャが停止され、ユーザーが送信した追加パラメーターはどれも無視されます。 snapshotMillisecondsint-1ビデオストリームが連続的、単一のフレーム、コマ撮り写真の作成に使用する一連の単一フレームのいずれであるかを指定します。
  • このパラメーターを省略すると、値 nullattachCamera に渡すまで、すべてのビデオがキャプチャされます。
  • 0 を渡すと、単一のビデオフレームのみがキャプチャされます。既存のストリーム内に "スナップショット" を転送するには、この値を使用します。Flash Player または AIR では、無効なパラメーター、負のパラメーター、または非数値パラメーターは 0 と解釈されます。
  • 正の値を渡すと、単一のビデオフレームがキャプチャされた後、スナップショットのトレーラーとして、指定の長さの一時停止が追加されます。コマ撮り写真の効果を作成するには、この値を使用します。
カメラからビデオのキャプチャを開始します。または、theCameranull に設定されると、キャプチャを停止します。このメソッドは、指定されたストリームの発行者だけが使用できます。

このメソッドは、Flash Media Server で使用することを目的としています。詳細については、クラスの説明を参照してください。

ビデオソースのアタッチ後に、NetStream.publish() を呼び出して転送を開始する必要があります。ビデオを表示するサブスクライバは、NetStream.play()Video.attachCamera() の各メソッドを呼び出して、ステージ上にビデオを表示する必要があります。

snapshotMilliseconds を使用して値 0 を指定すると、単一のスナップショットを送信できます。また、正の数を指定して、ビデオフィードに指定のミリ秒数のトレーラーを追加すると、一連のスナップショット、つまり事実上のコマ落としビデオを送信することができます。 トレーラーは、ビデオメッセージの表示時間を拡張します。attachCamera() を、snapshotMilliseconds に正の値を指定して繰り返し呼び出すと、スナップショットとトレーラーが交互に繰り返されるシーケンスになり、コマ落としビデオが作成されます。例えば、毎日 1 フレームずつキャプチャして、ビデオファイルに追加することができます。サブスクライバがファイルを再生すると、各フレームが指定のミリ秒間画面上に表示され、その後、次のフレームが表示されます。

この snapshotMilliseconds パラメーターの目的は、fps パラメーター(Camera.setMode() で設定可能)とは異なります。snapshotMilliseconds は、記録されたフレーム間の経過時間を制御するために指定します。fps は、記録時と再生時の経過時間を制御するために Camera.setMode() を使用して指定します。

例えば、5 分ごとにスナップショットを 1 枚撮り、合計で 100 枚のスナップショットを撮るとします。この操作を行うには、次の 2 つの方法があります。

  • NetStream.attachCamera(myCamera, 500) コマンドを 5 分に 1 回、合計 100 回実行できます。この場合、記録に 500 分かかりますが、生成されるファイルは 50 秒(100 フレーム、各フレーム間 500 ミリ秒)で再生されます。
  • Camera.setMode() コマンドを、fps に 1/300(300 秒ごとに 1 回、つまり 5 分に 1 回)の値を指定して発行してから NetStream.attachCamera(source) コマンドを発行すると、カメラは 500 分間連続してキャプチャするようになります。生成されるファイルは、500 分、つまり記録に要した時間と同じ長さで再生され、各フレームは 5 分間表示されます。

どちらの手法でも、同じ 500 個のフレームがキャプチャされます。どちらのアプローチも有用ですが、使用するアプローチは、主に再生要件によって異なります。例えば、後者の場合、始めから最後までオーディオを録音し続けることができます。また、どちらの場合もファイルサイズはほとんど同じです。

attach 新規 NetConnection オブジェクトにストリームを接続します。connectionflash.net:NetConnection 新規 NetConnection オブジェクトにストリームを接続します。接続が中断された後に再接続してから、このメソッドを呼び出して、NetStream を新しい NetConnection オブジェクトに関連付けます。Flash Player および AIR は、接続が切断されたときの再生ポイントからストリーミングを再開します。また、このメソッドを使用して、負荷分散を実装することもできます。

このメソッドでは、Flash Media Server バージョン 3.5.3 以降が必要です。

このメソッドを使用して ストリームの再接続を実装するには、Flash Media Server 3.5.3 のマニュアルを参照してください。

このメソッドを使用して負荷分散を実装するには、以下の手順を実行します。

  1. 接続されたストリームを別のサーバーの NetConnection オブジェクトに接続します。
  2. ストリームが新しい接続に正しく接続されたら、データが漏れ出すのを防ぐために、以前の接続で NetConnection.close() を呼び出します。
  3. NetStream.play2() を呼び出して、NetStreamPlayOptions.transition の値を RESUME に設定します。残りの NetStreamPlayOptions プロパティを、最初に NetStream.play() または NetStream.play2() を呼び出したときと同じ値に設定して、ストリームを開始します。
play2()NetStreamPlayOptions.transition
close ストリーム上のすべてのデータの再生を停止し、time プロパティを 0 に設定して、他の用途でストリームにアクセスできるようにします。 ストリーム上のすべてのデータの再生を停止し、time プロパティを 0 に設定して、他のユーザーがストリームにアクセスできるようにします。また、このメソッドは、HTTP を使用してダウンロードされたビデオファイルのローカルコピーを削除します。アプリケーションでは、アプリケーションで作成したファイルのローカルコピーは削除されますが、コピーがキャッシュディレクトリに残る場合があります。ビデオファイルをキャッシュやローカル記憶域に一切残さないようにする必要がある場合には、Flash Media Server を使用してください。

Flash Media Server を使用している場合、パブリッシュしているストリームから NetStream.play() を呼び出すか、サブスクライブしているストリームから NetStream.publish() を呼び出すときに、このメソッドが暗黙的に呼び出されます。次の点に注意してください。

  • パブリッシュしているストリームから close() を呼び出すと、ストリームのパブリッシュが停止し、発行者は別の目的でストリームを使用できるようになります。ストリームのパブリッシュが停止するため、サブスクライバはストリームでパブリッシュされた内容を受信できなくなります。
  • サブスクライブしているストリームから close() を呼び出すと、サブスクライバに対するストリームの再生が停止し、サブスクライバは別の目的でストリームを使用できるようになります。他のサブスクライバの再生は停止しません。
  • サブスクライブしているストリームは、そのストリームを閉じたり、flash.net.NetStream.play(false) を使用してストリームの種類を変更したりせずに、再生を停止できます。
pause()play()publish()
onPeerConnect ピアーがパブリッシュするストリームが、ピアーがサブスクライブするストリームに一致する場合に呼び出されます。Booleansubscriberflash.net:NetStream ピアーがパブリッシュするストリームが、ピアーがサブスクライブするストリームに一致する場合に呼び出されます。サブスクライバが発行者に接続する前にこのメソッドを呼び出すと、ActionScript コードはピアーツーピアーパブリッシュに対するアクセスを細かく制御できます。次のコードは、このメソッドのコールバック関数の作成方法の例です。 var c:Object = new Object; c.onPeerConnect = function(subscriber:NetStream):Boolean { if (accept) return true; else return false; }; m_netStream.client = c;

ピアーの発行者がこのメソッドを実装していない場合、すべてのピアーはパブリッシュされたすべてのコンテンツを再生できます。

pause ビデオストリームの再生を一時停止します。 ビデオストリームの再生を一時停止します。ビデオが既に一時停止している場合は、このメソッドを呼び出しても何も実行されません。ビデオを一時停止した後で再生を再開するには、resume() を呼び出します。一時停止と再生を切り替える(最初にビデオを一時停止し、次に再開する)には、togglePause() を呼び出します。

Flash Player 9.0.115.0 以降、Flash Player では、NetStream.pause() が呼び出されたときにバッファーをクリアしなくなりました。この動作を「スマート一時停止」と呼びます。Flash Player 9.0.115.0 以前は、Flash Player はバッファーが満杯になるまで待機してから再生を開始していましたが、このため遅延がよく発生していました。

注意:後方互換性を確保する目的で現在も "NetStream.Buffer.Flush" イベント(NetStatusEvent.info プロパティを参照)は送出されますが、サーバーでバッファのフラッシュ処理は行われません。

1 回の一時停止の場合、NetStream.bufferLength プロパティには 60 秒または NetStream.bufferTime の値の 2 倍のうち、いずれか大きい方の値という制限があります。例えば、bufferTime が 20 秒の場合、Flash Player は NetStream.bufferLength が 20~~2(40)または 60 のうち、大きい方の値になるまでバッファーするため、この場合は、bufferLength が 60 秒になるまでバッファーします。bufferTime が 40 秒の場合、Flash Player は bufferLength が 40~~2 (80) または 60 のうち、大きい方の値になるまでバッファーするため、この場合は、bufferLength が 80 秒になるまでバッファーします。

bufferLength プロパティにも絶対制限があります。pause() の呼び出しによって bufferLength が 600 秒またはbufferTime ~~ 2 の値のいずれか大きい方の値を超えた場合、Flash Player はバッファーをフラッシュし、bufferLength を 0 にリセットします。例えば、bufferTime が 120 秒の場合は、bufferLength が 600 秒に達すると、Flash Player はバッファーをフラッシュします。bufferTime が 360 秒の場合は、bufferLength が 720 秒に達すると、Flash Player はバッファーをフラッシュします。

ヒント:例えば、コードで NetStream.pause() を使用し、閲覧者がコマーシャルを見ている間、データをバッファーし、メインのビデオが開始されたときに一時停止を解除することができます。

close()play()resume()togglePause()bufferLengthbufferTimeflash.events.NetStatusEvent.info
play2 マルチビットレートのファイル間をシームレスに切り替え、接続が中断し再接続されたときに、NetStream が再開できるようにします。paramflash.net:NetStreamPlayOptions マルチビットレートのファイル間をシームレスに切り替え、接続が中断し再接続されたときに、NetStream が再開できるようにします。

このメソッドは、NetStream.play() を拡張したものです。play() メソッドと同様に、play2() メソッドは、メディアファイルの再生を開始したり、メディアファイルをキューに追加して再生リストを作成したりします。Flash Media Server で使用する場合、サーバーに要求を出して別のメディアファイルに切り替えることもできます。切り替えはクライアントアプリケーションでシームレスに実行されます。次の機能は、play2() ストリームの切り替えを使用します。

動的ストリーミング

Flash Media Server 3.5 以降でサポートされる動的ストリーミングにより、マルチビットレートで暗号化されたストリームを使用できます。ビューアーのネットワーク状態の変化に伴って、最適な表示エクスペリエンスを提供するビットレートを受信します。NetStreamInfo クラスを使用して、ネットワーク条件を監視したり、データに基づいたストリームを切り替えたりします。異なる機能でクライアントのストリームを切り替えることもできます。詳しくは、『Adobe Flash Media Server 開発者ガイド』の「動的ストリーミング」を参照してください。

Adobe では、NetStream クラスを拡張する DynamicStream と呼ばれるカスタム ActionScript クラスを作成しました。DynamicStream クラスを使用すると、ネットワーク状態を検出するための独自のコードを作成する代わりに、アプリケーションでダイナミックストリーミングを実装できます。 独自のダイナミックストリーミングコードの作成を選択した場合でも、DynamicStream クラスを参照実装として使用してください。Flash Media Server のツールとダウンロードページから、このクラスとこのクラスに関するド ュメントをダウンロードしてください。

ストリームの再接続

Flash Media Server 3.5.3 以降でサポートされるストリームの再接続を使用すると、接続が失われたときも、メディアの中断が発生しません。ActionScript ロジックが Flash Media Server に再接続を試みる間、メディアはバッファーを使用して再生を続けます。再接続後、新しい NetConnection で同じ NetStream オブジェクトを使用するために NetStream.attach() を呼び出します。ストリームへの再接続には、NetStream.attach()NetStreamPlayTransitions.RESUME、および NetStreamPlayTrasitions.APPEND_AND_WAIT の各 API を使用します。詳しくは、Flash Media Server 3.5.3 のマニュアルを参照してください。

play()attach()NetStreamPlayOptionsNetStreamPlayTransitions
play ローカルディレクトリまたは Web サーバーからメディアファイルを再生します。Flash Media Server からメディアファイルまたはライブストリームを再生します。信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。この制限は、この SWF ファイルを local-with-networking または trusted として分類し直すことで回避できます。 SecurityErrorSecurityError少なくとも 1 つのパラメーターを指定する必要があります。 ArgumentErrorArgumentErrorNetStream オブジェクトが無効です。このエラーは、NetConnection の失敗によって発生する場合があります。 ErrorErrorarguments

ローカルファイルの再生

メディアファイルの場所。引数には、String、URLRequest.url プロパティ、またはこのどちらかを参照する変数を使用できます。アプリケーションセキュリティサンドボックス外にある Flash Player および AIR コンテンツの場合、SWF ファイルまたはサブディレクトリと同じディレクトリに保存されているローカルビデオファイルを再生できます。ただし、上位レベルのディレクトリに移動することはできません。

アプリケーションセキュリティサンドボックス内の AIR コンテンツの場合、メディアファイルに指定するパスは、SWF ファイルのディレクトリに相対します。ただし、SWF ファイルのディレクトリより上位に移動することはできません。AIR でパスを相対パスとして処理するため、完全なパスは指定しないでください。

Flash Media Server からのメディアファイルの再生

名前必須説明name:Object必須 記録されたファイルの名前、NetStream.publish() を使用してパブリッシュされたライブデータの識別子、または falsefalse の場合は、ストリームの再生が停止し、他のパラメーターは無視されます。ファイル名の構文の詳細については、この表の次にあるファイル形式一覧を参照してください。start:Numberオプション 開始時間(秒単位)。指定可能な値は、-2、-1、0、または正の数値です。デフォルト値は -2 です。この値のときは、ライブストリームを検索し、次に、記録されたストリームを検索します。いずれのストリームも検出されない場合は、ライブストリームが開きます。-1 の場合は、ライブストリームだけが再生されます。0 または正の数値の場合は、記録されたストリームの再生が、start に指定された秒数から開始されます。 len:Number オプション(start が指定されている場合) 再生の継続時間(秒単位)。指定可能な値は、-1、0、または正の数値です。デフォルト値は -1 です。この値のときは、ライブストリームまたは記録されたストリームが最後まで再生されます。0 の場合、記録されたストリームの先頭を基準として、start で指定された秒数の位置にある単一のフレームが再生されます。正の数値の場合、ライブストリームまたは記録されたストリームが、len で指定された秒数だけ再生されます。 reset:Object オプション(len が指定されている場合) 再生リストを消去するかどうか。デフォルト値は 1 または true です。この値の場合、以前に play で呼び出したファイルが消去され、name で指定したファイルが即座に再生されます。0 または false の場合、再生リストにストリームが追加されます。2 の場合、再生リストが維持され、間隔をおいて順次返されるのではなく、すべてのストリームメッセージが一度に返されます。3 の場合、再生リストが消去され、すべてのストリームメッセージが一度に返されます。

次の表に記載されているファイル形式を再生できます。構文は、ファイル形式によって異なります。

ファイル形式シンタックスFLV("samples" ディレクトリで)ストリーム名をストリングとして指定します。ファイル名の拡張子は含めません。ns.play("samples/myflvstream");mp3 または ID3("samples" ディレクトリで)ストリーム名をストリングとして指定します。接頭辞として mp3: または id3: を使用し、ファイル名の拡張子は含めません。

ns.play("mp3:samples/mymp3stream");

ns.play("id3:samples/myid3data");

MPEG-4 対応ファイル(F4V、MP4 など)("samples" ディレクトリで)ストリーム名をストリングとして指定します。接頭辞として mp4: を使用します。この接頭辞は、ファイルが MPEG-4 Part 14 コンテナ形式内に H.264 でエンコードされたビデオと AAC でエンコードされたオーディオを含んでいることをサーバーに示します。サーバー上のファイルがファイル拡張子を含む場合は、それを指定します。

ns.play("mp4:samples/myvideo.f4v");

ns.play("mp4:samples/myvideo.mp4");

ns.play("mp4:samples/myvideo");

ns.play("mp4:samples/myvideo.mov");

RAW("samples" ディレクトリで)ストリーム名をストリングとして指定します。接頭辞として raw: を使用します。ns.play("raw:samples/myvideo");

データ生成モードの有効化

「データ生成モード」を有効にするには、null に接続されている NetConnection 上で作成された NetStream に·null 値を渡します。このモードでは、appendBytes() を呼び出して、データを NetStream に配信します(また、null を渡すと、onSeekPoint() コールバックに対するバイトカウンターがリセットされます)。

ローカルディレクトリまたは Web サーバーからメディアファイルを再生します。Flash Media Server からメディアファイルまたはライブストリームを再生します。NetStatusEvent オブジェクトを送出して、ステータスおよびエラーメッセージをレポートします。

サポートされているコーデックおよびファイル形式について詳しくは、以下を参照してください。

  • ADOBE FLASH MEDIA SERVER 3.5 技術概要
  • Exploring Flash Player support for high-definition H.264 video and AAC audio
  • FLV/F4V オープン仕様のドキュメント

ファイルまたはライブストリームを再生するためのワークフロー

  1. NetConnection オブジェクトを作成し、NetConnection.connect() を呼び出します。

    ローカルディレクトリまたは Web サーバーからファイルを再生するには、null を渡します。

    記録されたファイルまたはライブストリームを Flash Media Server から再生するには、Flash Media Server アプリケーションの URI を渡します。

  2. NetConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler) を呼び出して、NetStatusEvent イベントを待機します。
  3. NetConnection.Connect.Success」で、NetStream オブジェクトを作成し、NetConnection オブジェクトをコンストラクターに渡します。
  4. Video オブジェクトを作成し、Video.attachNetStream() を呼び出して NetStream オブジェクトを渡します。
  5. NetStream.play() を呼び出します。

    ライブストリームを再生するには、NetStream.publish() メソッドに渡されたストリーム名を渡します。

    記録されたファイルを再生するには、ファイル名を渡します。

  6. addChild() を呼び出して、Video オブジェクトを渡し、ビデオを表示します。

注意:サンプルコードを確認するには、このページの下部の例にスクロールしてください。

データ生成モードの有効化

「データ生成モード」を有効化するには、play(null) を呼び出します。このモードでは、appendBytes() メソッドを呼び出して、データを NetStream に配信します。データ生成モードを使用して、Apache HTTP Server 上の Adobe HTTP ダイナミックストリーミングモジュールからのコンテンツを HTTP 経由でストリーミングします。HTTP ダイナミックストリーミングを使用することで、クライアントはファイル内の任意のポイントをすばやくシークできます。Open Source Media Framework(OSMF)は、VOD(ビデオオンデマンド)とライブストリームの再生用に、HTTP ダイナミックストリーミングをサポートします。NetStream のデータ生成モードを使用する方法の例については、OSMF ソースをダウンロードしてください。HTTP ダイナミックストリーミングについて詳しくは、HTTP ダイナミックストリーミングを参照してください。

Flash Media Server を使用しないでこのメソッドを使用する場合、セキュリティに関する考慮事項があります。信頼できるローカルのサンドボックスまたはネットワークアクセスを許可されたローカルのサンドボックスのファイルは、リモートサンドボックスからビデオファイルをロードおよび再生することができますが、URL ポリシーファイルで明示的な許可が与えられていない限り、リモートファイルのデータにアクセスできません。また、Flash Player で実行されている SWF ファイルがこのメソッドを使用しないようにするには、SWF コンテンツが含まれる HTML ページの allowNetworking パラメーター(object タグおよび embed タグ)を設定します。セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

Flash Media Server この例では、"samples" ディレクトリから記録された F4V ファイルを、先頭から開始して最大 100 秒まで再生します。MPEG-4 ファイルの場合、サーバー上のファイルにファイル名拡張子がある場合、play() メソッドでファイル名拡張子を指定する必要があります。 ns.play("mp4:samples/record1.f4v", 0, 100, true); Flash Media Server この例は、クライアントがパブリッシュしたライブ FLV ストリームの先頭から最後までの再生をただちに開始します。 ns.play("livestream"); 次の例は、外部 FLV ファイルをロードする方法を示しています。 var MyVideo:Video = new Video(); addChild(MyVideo); var MyNC:NetConnection = new NetConnection(); MyNC.connect(null); var MyNS:NetStream = new NetStream(MyNC); MyNS.play("http://www.helpexamples.com/flash/video/clouds.flv"); MyVideo.attachNetStream(MyNS); //the clouds.flv video has metadata we're not using, so create //an error handler to ignore the message generated by the runtime //about the metadata MyNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); function asyncErrorHandler(event:AsyncErrorEvent):void { //ignore metadata error message }
DisplayObjectContainer.addChild()checkPolicyFileappendBytes()statusflash.events:StatusEventDRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。code プロパティの値は "DRM.encryptedFLV" です。 DRM(デジタル著作権管理)で暗号化されたコンテンツを再生しようとすると送出されます。
preloadEmbeddedData ローカルに保存されたメディアファイルから DRM メタデータを抽出します。paramflash.net:NetStreamPlayOptionsコンテンツファイルを処理中に使用するオプションを説明する NetStreamPlayOptions。 ローカルに保存されたメディアファイルから DRM メタデータを抽出します。

オフライン再生に必要な DRM バウチャーをダウンロードおよびキャッシュする際に最初の手順として preloadEmbeddedMetaData() を使用します。埋め込み DRM メタデータがメディアファイル内で検出されると、DRMContentData オブジェクトは NetStream クライアントの onDRMContentData 関数に渡されます。この DRMContentData オブジェクトには、コンテンツの再生に求められるバウチャーを取得するために必要な情報が含まれています。バウチャーをダウンロードするには、DRMContentDataObject を DRMManager loadVoucher() メソッドに渡します。

DRM バウチャーをプリロードする手順には、次のものが含まれます。

  • メタデータをプリロードする新しい NetStream オブジェクトを作成します。

  • コールバック関数を NetStream clientonDRMContentData プロパティに割り当てます。
  • 新しい NetStreamPlayOptions オブジェクトを作成して、その streamName プロパティをローカルビデオファイルの URL ストリングに設定します。
  • preloadEmbeddedMetadata() を呼び出して、NetStreamPlayOptions オブジェクトに渡します。
  • onDRMContentData コールバックに応答して、DRMManager loadVoucher() メソッドを呼び出し、DRMContentData オブジェクトに渡します。DRMContentData オブジェクトの authenticationMethod プロパティに値 userNameAndPassWord がある場合、バウチャーをロードする前に Media Rights Server 上のユーザーを認証する必要があります。
  • プリロードに使用した NetStream を閉じます。

注意:メタデータのプリロードとコンテンツの再生の両方で同じ NetStream オブジェクトを使用するには、プリロード操作が生成する onPlayStatus 呼び出しを待機してから再生を開始します。

ダウンロードされたバウチャーは、ローカルキャッシュに保存されます。オンラインでコンテンツを再生すると、バウチャーのダウンロードおよびキャッシュを行うことができます。DRM で保護されたコンテンツファイルが表示されると、キャッシュされたバウチャーはローカルストアから自動的に取得されます。DRMManager を使用すると、バウチャーキャッシュを管理します。

注意:HTTP、HTTPS または RTMP 接続を使用した DRM メタデータのプリロードはサポートされていません。ファイルシステム上に保存されたファイルからのみメタデータのプリロードは可能です。

onDRMContentDataflash.net.drm.DRMContentDataflash.net.drm.DRMManager.loadVoucher()flash.net.drm.DRMVoucherclient
publish クライアントから Flash Media Server へ、ストリーミングオーディオ、ビデオ、およびデータメッセージを送信します。送信中にストリームを記録することもできます。nameStringnullストリームを識別するストリングです。このストリームをサブスクライブしているクライアントは、NetStream.play() を呼び出す場合に、この同じ名前を渡します。ストリーム名の後にスラッシュ(/)を指定しないでください。たとえば、"bolero/" というストリーム名は使用しないでください。

次の表に示す形式でファイルを記録できます(publish() は MP3 形式のファイルには使用できません)。構文は、ファイル形式によって異なります。

ファイル形式シンタックスFLVストリーム名を、ファイル名拡張子なしのストリングとして指定します。ns.publish("myflvstream");MPEG-4 対応ファイル(F4V または MP4 など)ストリーム名をストリングとして指定します。接頭辞として mp4: を使用し、ファイル名の拡張子は必要に応じて指定します。Flash Player は H.264 を使用してエンコードしませんが、Flash Media Server は F4V コンテナ内に任意のコーデックを記録できます。Flash Media Live Encoder は、H.264 を使用してエンコードできます。 ns.publish("mp4:myvideo.f4v") ns.publish("mp4:myvideo");RAWストリーム名をストリングとして指定します。接頭辞として raw: を使用します。ns.publish("raw:myvideo");

typeStringnullストリームのパブリッシュ方法を指定するストリングです。有効な値は、「record」、「append」、「appendWithGap」および「live」です。デフォルト値は "live" です。
  • record」を渡すと、サーバーはライブデータをパブリッシュして記録し、記録したデータを、name パラメーターに渡された値と名前が一致する新しいファイルに保存します。このファイルが存在する場合は、上書きされます。
  • append」を渡すと、サーバーはライブデータをパブリッシュして記録し、記録したデータを、name パラメーターに渡された値と名前が一致するファイルに追加します。name パラメーターと一致するファイルが見つからない場合は、ファイルが作成されます。
  • appendWithGap」を渡すと、時間のコーディネーションに関する補足情報が渡され、動的ストリーミングの際にサーバーが正しい移行ポイントを決定できるよう支援します。
  • このパラメーターを省略するか、「live」を渡した場合、サーバーはライブデータを記録せずにパブリッシュします。name パラメーターに渡された値と名前が一致するファイルが存在する場合は、そのファイルが削除されます。
クライアントから Flash Media Server へ、ストリーミングオーディオ、ビデオ、およびデータメッセージを送信します。送信中にストリームを記録することもできます。このメソッドは、ストリームに関する情報を含む NetStatusEvent オブジェクトを送出します。NetStream.publish() を呼び出す前に、「NetConnection.Connect.Success」イベントをキャプチャして、アプリケーションが Flash Media Server に正常に接続できたかどうかを確認します。

パブリッシュ中に、FLV または F4V 形式でファイルを記録できます。ファイルを F4V 形式で記録した場合は、分割・統合ツールを使用して編集するか、別のアプリケーションでファイルを再生する必要があります。ツールのダウンロード方法については、www.adobe.com/go/fms_tools_jp を参照してください。

注意:このメソッドを使用してストリームを再生しないでください。ストリームを再生するには、NetStream.play() メソッドを呼び出します。

ストリームをパブリッシュするためのワークフロー

  1. NetConnection オブジェクトを作成し、NetConnection.connect() を呼び出します。
  2. NetConnection.addEventListener() を呼び出して、NetStatusEvent イベントを待機します。
  3. NetConnection.Connect.Success」イベントで、NetStream オブジェクトを作成し、NetConnection オブジェクトをコンストラクターに渡します。
  4. オーディオとビデオをキャプチャするには、NetStream.attachAudio() メソッドと NetStream.attachCamera() メソッドを呼び出します。
  5. ストリームをパブリッシュするには、NetStream.publish() メソッドを呼び出します。データを記録しながらパブリッシュすることができます。記録すると、ユーザーがデータを後で再生できるようになります。

注意: NetStream で可能なのはストリームのパブリッシュまたは再生のいずれかです。両方を行うことはできません。ストリームをパブリッシュしてサーバーから再生を表示するには、2 つの NetStream オブジェクトを作成します。複数の NetStream オブジェクトを 1 つの NetConnection オブジェクトに送信できます。

Flash Media Server では、ストリームの記録時にファイルが作成されます。デフォルトでは、NetConnection.connect() に渡されたアプリケーションインスタンス名が付いたディレクトリが作成され、そのディレクトリにファイルが保存されます。例えば、次のコードでは「lectureseries」アプリケーションのデフォルトのインスタンスに接続し、「lecture」というストリームを記録します。applications/lectureseries/streams/_definst_ ディレクトリに「lecture.flv」というファイルが記録されます。

var nc:NetConnection = new NetConnection(); nc.connect("rtmp://fms.example.com/lectureseries"); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); function netStatusHandler(event:NetStatusEvent):void{ if (event.info.code == "NetConnection.Connect.Success"){ var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }

次の例では、同じアプリケーションの「monday」インスタンスに接続します。/applications/lectureseries/streams/monday ディレクトリに lecture.flv というファイルが記録されます。

var nc:NetConnection = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); nc.connect("rtmp://fms.example.com/lectureseries/monday"); function netStatusHandler(event:NetStatusEvent):void{ if (event.info.code == "NetConnection.Connect.Success"){ var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }
次の例では、カメラからビデオをキャプチャし、そのビデオを NetStream 経由で Flash Media Server にパブリッシュします。この例では、Flash Media Server でビデオが再生されると、ビデオが表示されます。

この例を実行するには、コンピューターに接続されているカメラが必要です。さらに、Button コンポーネントと Label コンポーネントをライブラリに追加する必要があります。

アプリケーションには、アプリケーションが正常にサーバーに接続された場合にのみ、ストリームをパブリッシュする(Flash Media Server に送信する)ボタンがあります。アプリケーションは、ストリームが正常にパブリッシュされた場合にのみ、サーバーから配信されたそのストリームを再生します。NetStatusEvent は、これらのいずれかの場合を示す code プロパティが指定された info オブジェクトを返します。netStatusHandler 関数は、NetConnection クラスと NetStream クラスに関するこれらのイベントを処理します。

package { import flash.display.Sprite; import flash.events.*; import flash.media.Video; import flash.media.Camera; import flash.net.NetConnection; import flash.net.NetStream; import fl.controls.Button; import fl.controls.Label; public class NetStream_publish extends Sprite { private var connectionURL:String = "rtmp://localhost/live/"; private var videoURL:String = "liveVideo"; private var nc:NetConnection; private var ns_publish:NetStream; private var ns_playback:NetStream; private var video_publish:Video; private var video_playback:Video; private var cam:Camera; private var b:Button; private var l:Label; public function NetStream_publish() { setUpUI(); nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Add bandwidth detection handlers on the NetConnection Client to // prevent Reference Errors at runtime when using the "live" and "vod" applications. var clientObj:Object = new Object(); clientObj.onBWDone = onBWDone; clientObj.onBWCheck = onBWCheck; nc.client = clientObj; // Connect to the "live" application on Flash Media Server. nc.connect(connectionURL); } private function netStatusHandler(event:NetStatusEvent):void { trace(event.info.code + " | " + event.info.description); switch (event.info.code) { case "NetConnection.Connect.Success": // Enable the "Publish" button after the client connects to the server. b.enabled = true; break; case "NetStream.Publish.Start": playbackVideo(); break; } } private function publishVideo(event:MouseEvent):void{ // Disable the button so that you can only publish once. b.enabled = false; // Create a NetStream to send video to FMS. ns_publish = new NetStream(nc); ns_publish.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Publish (send) the video to FMS. cam = Camera.getCamera(); ns_publish.attachCamera(cam); ns_publish.publish(videoURL); } private function playbackVideo():void { // Create a NetStream to receive the video from FMS. ns_playback = new NetStream(nc); ns_playback.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); ns_playback.play(videoURL); // Display the video that was published to FMS. video_playback = new Video(cam.width, cam.height); video_playback.x = cam.width + 20; video_playback.y = 10; video_playback.attachNetStream(ns_playback); addChild(video_playback); } private function setUpUI():void { b = new Button(); b.addEventListener(MouseEvent.CLICK, publishVideo); b.width = 150; b.label = "Publish video to server"; b.move(10, 150); b.enabled = false; l = new Label(); l.width = 150; l.text = "Playing back from server" l.move(190, 150); addChild(b); addChild(l); } // Handlers called by the Flash Media Server "live" and "vod" applications. public function onBWDone(... rest):Boolean { return true; } public function onBWCheck(... rest):Number { return 0; } } }
flash.net.NetConnection.connect()flash.events.NetStatusEvent.info
receiveAudio ストリーム上で着信オーディオが再生されるかどうかを示します。flagBooleanストリーム上で着信オーディオを再生するかどうかを指定します。再生する場合は true、再生しない場合は false を指定します。デフォルト値は true です。指定したストリームに音声データのみが含まれる場合、false を渡すときに NetStream.time のインクリメントが停止されます。 ストリーム上で着信オーディオが再生されるかどうかを示します。このメソッドは、指定されたストリームにサブスクライブしているクライアントだけが使用できます。ストリームの発行者には使用できません。このメソッドは、NetStream.play() メソッドを呼び出す前、または呼び出した後に呼び出します。例えば、ボタンにこのメソッドをアタッチすると、ユーザーは音声のミュートとミュート解除を実行できます。このメソッドを使用するのは、Flash Media Server から再生されるユニキャストストリームのみです。このメソッドは、RTMFP マルチキャストストリーム、または NetStream.appendBytes() メソッドを使用する場合は機能しません。 receiveVideoFPS 着信ビデオのフレームレートを指定します。FPSNumber着信ビデオ再生時の 1 秒あたりのフレームレートを指定します。 着信ビデオのフレームレートを指定します。このメソッドは、指定されたストリームにサブスクライブしているクライアントだけが使用できます。ストリームの発行者には使用できません。このメソッドは、NetStream.play() メソッドを呼び出す前、または呼び出した後に呼び出します。例えば、ユーザーがビデオフレームレートを設定できるようにこのメソッドを呼び出します。現在のフレームレートを確認するには、NetStream.currentFPS を使用します。ビデオの受信を停止するには、0 を渡します。

FPS パラメーターに値を渡してビデオのフレームレートを制限すると、Flash Media Server は、ビデオの完全性を維持する一方で、フレームを減らそうとします。2 つのキーフレームごとに、目的のレートを満たすために必要なフレームの最小数がサーバーから送信されます。I フレーム(または中間フレーム)を連続して送信する必要があります。そうしないと、ビデオは破損します。したがって、キーフレームに続いて、必要な数のフレームが直ちに連続的に送信されます。フレームは均等には配信されないので、待機により中断されたセグメントにおいてもモーションはスムーズに表示されます。

このメソッドを使用するのは、Flash Media Server から再生されるユニキャストストリームのみです。このメソッドは、RTMFP マルチキャストストリーム、または NetStream.appendBytes() メソッドを使用する場合は機能しません。

receiveVideo ストリーム上で着信ビデオが再生されるかどうかを示します。flagBooleanこのストリーム上で着信ビデオを再生するかどうかを指定します。再生する場合は true、再生しない場合は false を指定します。デフォルト値は true です。指定したストリームにビデオデータのみが含まれる場合、false を渡すときに NetStream.time のインクリメントが停止されます。 ストリーム上で着信ビデオが再生されるかどうかを示します。このメソッドは、指定されたストリームにサブスクライブしているクライアントだけが使用できます。ストリームの発行者には使用できません。このメソッドは、NetStream.play() メソッドを呼び出す前、または呼び出した後に呼び出します。例えば、ボタンにこのメソッドをアタッチすると、ユーザーはビデオの表示と非表示を実行できます。このメソッドを使用するのは、Flash Media Server から再生されるユニキャストストリームのみです。このメソッドは、RTMFP マルチキャストストリーム、または NetStream.appendBytes() メソッドを使用する場合は機能しません。 resetDRMVouchers ローカルにキャッシュされたすべての DRM(デジタル著作権管理)バウチャーデータを削除します。バウチャーデータを削除できません。 IOErrorflash.errors:IOError ローカルにキャッシュされたすべての DRM(デジタル著作権管理)バウチャーデータを削除します。

アプリケーションで、保護されたコンテンツにユーザーがアクセスできる media rights server から必要なバウチャーを再ダウンロードする必要があります。この関数の呼び出しは、DRMManager オブジェクトの resetDRMVouchers() 関数を呼び出すことと同じです。

次の例では、すべての DRM バウチャーをリセットします。 NetStream.resetDRMVouchers();
flash.net.drm.DRMManager.resetDRMVouchers()
resume 再生を一時停止していたビデオストリームを再開します。 再生を一時停止していたビデオストリームを再開します。ビデオが既に再生中である場合は、このメソッドを呼び出しても何も実行されません。 close()pause()play()togglePause()seek 指定された位置に最も近いキーフレーム(ビデオ業界では I フレームとも呼ばれます)をシークします。offsetNumberビデオファイルにおける、再生ヘッドのおおよその移動時間(秒単位)です。Flash Media Server で、Application.xml 設定ファイルの <EnhancedSeek>true に設定されている場合(これがデフォルトの設定です)、サーバーはオフセットにキーフレームを生成します。
  • ストリームの先頭に移動するには、offset に 0 を指定します。
  • ストリームの先頭から前方にシークするには、進めたい秒数をパラメーターに指定します。例えば、先頭から 15 秒の位置(または15 秒前のキーフレーム)に再生ヘッドを移動するには、myStream.seek(15) にします。
  • 現在位置を基準としてシークを行う場合、NetStream.time + n、または NetStream.time - n と指定すると、それぞれ現在位置から n 秒分だけ前方または後方へシークが行われます。例えば、現在位置から 20 秒巻き戻すには、NetStream.seek(NetStream.time - 20) にします。
指定された位置に最も近いキーフレーム(ビデオ業界では I フレームとも呼ばれます)をシークします。キーフレームは、ストリームの先頭から秒単位のオフセット位置に配置されます。

通常、ビデオストリームは、キーフレーム(または I フレーム)と P フレームの 2 種類のフレームでエンコードされます。キーフレームにはイメージ全体が格納されています。一方、P フレームは、キーフレーム間の追加のビデオ情報を提供する中間フレームです。通常、ビデオストリームには 10 ~ 50 フレームごとにキーフレームがあります。

Flash Media Server には、強化されたシークとスマートシークなど、各種のシーク動作が用意されています。

強化されたシーク

強化されたシークは、デフォルトで有効になっています。強化されたシークを無効にするには、Flash Media Server で Application.xml 構成ファイルの EnhancedSeek 要素を false に設定します。

強化されたシークが有効になっている場合、サーバーは前のキーフレームとすべての中間 P フレームに基づいて、オフセット位置に新しいキーフレームを生成します。ただし、キーフレームの生成によりサーバーの処理の負荷が高くなり、生成されるキーフレームに歪みが発生することがあります。ビデオコーデックが On2 の場合、シーク位置の前のキーフレームと、そのキーフレームとシーク位置の間にあるすべての P フレームがクライアントに送信されます。

強化されたシークが無効になっている場合、サーバーは一番近いキーフレームからストリーミングを開始します。例えば、ビデオ内の 0 秒と 10 秒の時点にキーフレームがあるとします。4 秒に対してシークを実行すると、0 秒のキーフレームを使用して 4 秒から再生が開始されます。10 秒の位置にある次のキーフレームに到達するまで、ビデオはフリーズされたままになります。シークの操作性を向上するには、キーフレームの間隔を短くする必要があります。通常のシークモードでは、キーフレーム間の位置からビデオを開始することはできません。

スマートシーク

スマートシークを有効にするには、NetStream.inBufferSeektrue に設定します。

スマートシークを使用すると、Flash Player で既存の巻き戻し用バッファーおよび早送り用バッファー内をシークできるようになります。スマートシークが無効になっている場合、seek() が呼び出されるたびに、Flash Player ではバッファーがフ ッシュされ、サーバー内のデータが要求されます。詳しくは、NetStream.inBufferSeekを参照してください。

データ生成モードのシーク

データ生成モードの NetStream に対して seek() を呼び出すと、appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN または appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK) を呼び出してパーサーをリセットするまで、appendBytes() に渡されるすべてのバイトが廃棄されます(バッファーに格納されず、部分的なメッセージ FIFO に累積されるか、シークポイントに対して解析されます)。データ生成モードについて詳しくは、NetStream.play() を参照してください。

inBufferSeekbackBufferLengthbackBufferTimestep()timeplay()
send パブリッシュされたストリーム上で、サブスクライブしているすべてのクライアントにメッセージを送信します。handlerNameString送信するメッセージです。メッセージを受け取る ActionScript ハンドラーの名前でもあります。ハンドラー名の深さは 1 レベルのみで(つまり、親子形式を取ることができません)、ストリームオブジェクトに相対します。ハンドラー名には予約語を使用しないでください。例えば、ハンドラー名として「close」を使用すると、このメソッドは失敗します。Flash Media Server で、@setDataFrame を使用してメタデータのキーフレームをライブストリームに追加したり、@clearDataFrame を使用してキーフレームを削除したりします。 argumentsオプションのパラメーターで、任意のデータ型を指定できます。それらは直列化され、接続を介して送信されます。受信側のハンドラーは同じ順番でそれらを受け取ります。パラメーターが循環オブジェクト(循環するリンクされたリストなど)である場合、シリアライザは参照を正しく処理します。Flash Media Server で、@setDataFrame が最初の引数の場合、onMetaData を 2 番目の引数として使用します。3 番目の引数には、メタデータがプロパティとして設定された Object または Array のインスタンスを渡します。設定可能なプロパティ名のリストについては、Flash Media Server 開発者ガイドを参照してください。@clearDataFrame を最初の引数、onMetaData を 2 番目の引数として使用し、3 番目の引数はありません。 パブリッシュされたストリーム上で、サブスクライブしているすべてのクライアントにメッセージを送信します。このメソッドは、指定されたストリームの発行者だけが使用できます。このメソッドは、Flash Media Server にのみ使用できます。このメッセージを処理して応答するには、NetStream オブジェクトにハンドラーを作成します。このオブジェクトの例には、ns.HandlerName があります。

Flash Player または AIR は、メソッドやそれらのデータ、オブジェクトプロトタイプ変数、または列挙不可能な変数を直列化しません。表示オブジェクトの場合、Flash Player または AIR はパスを直列化しますが、データは直列化しません。

send() メソッドを呼び出し、Flash Media Server にパブリッシュするライブストリームにデータキーフレームを追加できます。データキーフレームは、発行者がライブストリームに追加するメッセージです。通常、データキーフレームは、カメラやマイクロホンからストリーム用のデータをキャプチャする前に、ライブストリームにメタデータを追加するために使用されます。発行者は、ライブストリームのパブリッシュ中にいつでもデータキーフレームを追加できます。発行者がサーバーに接続している限り、データキーフレームはサーバーのメモリに保存されます。

データキーフレームが追加される前のライブストリームにサブスクライブしているクライアントは、データキーフレームが追加されるとすぐにそのキーフレームを受信します。データキーフレームが追加された後のライブストリームにサブスクライブしているクライアントは、サブスクライブするときにキーフレームを受信します。

Flash Media Server に送信するライブストリームにメタデータのキーフレームを追加するには、次の例に示すように、@setDataFrame をハンドラー名として使用し、続いて 2 つの引数を指定します。

var ns:NetStream = new NetStream(nc); ns.send("@setDataFrame", "onMetaData", metaData);

@setDataFrame 引数は、Flash Media Server に組み込まれている特別なハンドラーを表します。onMetaData 引数は、onMetaData イベントを監視してメタデータを取得する、クライアントアプリケーションのコールバック関数の名前です。3 番目の metaData は、メタデータ値を定義したプロパティを持つ Object または Array のインスタンスです。

@clearDataFrame を使用して、ストリームに設定されているメタデータのキーフレームを消去します。

ns.send("@clearDataFrame", "onMetaData");
次の例は、2 つの NetStream オブジェクトを作成します。1 つのオブジェクトはサーバーへのライブストリームのパブリッシュに使用し、もう 1 つはストリームへのサブスクライブに使用します。 package { import flash.display.Sprite; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.NetStatusEvent; import flash.media.Video; import flash.utils.setTimeout; public class TestExample extends Sprite { var nc:NetConnection = new NetConnection(); var ns1:NetStream; var ns2:NetStream; var vid:Video = new Video(300,300); var obj:Object = new Object(); public function TestExample() { nc.objectEncoding = 0; nc.addEventListener("netStatus", onNCStatus); nc.connect("rtmp://localhost/FlashVideoApp"); addChild(vid); } function onNCStatus(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": trace("You've connected successfully"); ns1 = new NetStream(nc); ns2 = new NetStream(nc); ns1.client = new CustomClient(); ns1.publish("dummy", "live"); ns2.play("dummy"); ns2.client = new CustomClient(); vid.attachNetStream(ns2); setTimeout(sendHello, 3000); break; case "NetStream.Publish.BadName": trace("Please check the name of the publishing stream" ); break; } } function sendHello():void { ns1.send("myFunction", "hello"); } } } class CustomClient { public function myFunction(event:String):void { trace(event); } } 次の例は、メタデータを作成してライブストリームに追加します。 private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetStream.Publish.Start": var metaData:Object = new Object(); metaData.title = "myStream"; metaData.width = 400; metaData.height = 200; ns.send("&#64;setDataFrame", "onMetaData", metaData); ns.attachCamera( Camera.getCamera() ); ns.attachAudio( Microphone.getMicrophone() ); } } ビデオに追加されているデータキーフレームに応答するには、クライアントが onMetaData イベントハンドラーを定義する必要があります。次の例では、onMetaData イベントハンドラーは addEventListener() に登録されていませんが、代わりに onMetaData という名前のコールバック関数が登録されています。 public function onMetaData(info:Object):void { trace("width: " + info.width); trace("height: " + info.height); } 次の例は、サーバーに再生リストを作成する方法を示しています。 // Create a NetStream for playing var my_ns:NetStream = new NetStream(my_nc); my_video.attachNetStream(my_ns); // Play the stream record1 my_ns.play("record1", 0, -1, true); // Switch to the stream live1 and play for 5 seconds. // Since reset is false, live1 will start to play after record1 is done. my_ns.play("live1", -1 , 5, false); 録画済みのビデオファイルにデータメッセージだけが含まれている場合、録画したときの速度でビデオファイルを再生するか、すべてのデータメッセージを一度に取得することができます。 //To play at normal speed var my_ns:NetStream = new NetStream(my_nc); my_ns.play("log", 0, -1); //To get the data messages all at once my_ns.play("log", 0, -1, 3);
clientdataReliableplay()
setDRMAuthenticationCredentials 基になる暗号化コンテンツを表示するために必要な DRM 認証資格情報を設定します。userNameString有効なユーザー名情報。 passwordString指定したユーザー名に対応するパスワード情報。 typeString指定する認証資格情報のタイプを指定するストリング。 有効な値は "drm""proxy" です。 デフォルト値は "drm" です。
  • "drm" 認証タイプの場合、提供された資格情報は Flash Access に対して認証されます。
  • "proxy" 認証タイプの場合、資格情報は プロキシサーバーで認証され、プロキシサーバーが要求する資格情報と一致する必要があります。例えば、"proxy" オプションを使用すると、ユーザーがインターネットにアクセスする前にプロキシサーバーで認証を受けるように企業が要求する場合、アプリケーションにそのような手順を設定できます。匿名認証を使用する場合を除き、プロキシ認証の後にも、ユーザーは証明書を取得してコンテンツを再生するために、Flash Access に対して認証する必要があります。"drm" オプションを指定して setDRMAuthenticationcredentials() を 2 回使用すると、Flash Access に対して認証することができます。
基になる暗号化コンテンツを表示するために必要な DRM 認証資格情報を設定します。

setDRMAuthenticationCredentials() メソッドは、コンテンツプロバイダーまたはプロキシサーバーに知られていて承認されている資格情報に一致する資格情報を提供する必要があります。これらは、ユーザーがコンテンツの表示許可を取得するときに使用する資格情報と同じものです。

flash.events.DRMAuthenticateEvent
step 現在表示されているフレームに対して、指定された数のフレーム分、前後に進みます。framesint 現在表示されているフレームに対して、指定された数のフレーム分、前後に進みます。前に進む場合は正の数、後ろに進む場合は負の数を指定します。このメソッドを呼び出して、正確かつ高速な早送りまたは巻き戻し機能を作成します。

このメソッドは、データが Flash Media Server 3.5.3 以降からストリーミングされ、NetStream.inBufferSeektrue の場合にのみ使用可能です。さらに、ターゲットフレームがバッファーに格納されている必要があります。例えば、現在表示されているフレームがフレーム番号 120 で値 1000 を指定する場合、フレーム番号 1120 がバッファーにない場合、メソッドはエラーになります。

このメソッドは、pause() メソッドまたは togglePause()メソッドと共に使用されることを想定しています。再生中に、停止せずに 10 個のフレームを前または後ろに進めた場合、その操作に気付かないか、異常が発生しているかのように見えます。さらに、pause() または togglePause を呼び出したときにオーディオは出力されません。

NetStream.step() の呼び出しが成功すると、info オブジェクトの code プロパティの値として「NetStream.Step.Notify」が指定された NetStatusEvent が送信されます。

inBufferSeekbackBufferTimebackBufferLengthbufferTimebufferLengthstep()seek()
togglePause ストリームの再生を一時停止または再開します。 ストリームの再生を一時停止または再開します。このメソッドを呼び出すと最初は再生を一時停止し、次に呼び出したときには再生を再開します。このメソッドを使用して、ユーザーが 1 つのボタンを押すだけで再生を一時停止または再生できるようにすることができます。 close()play()pause()resume()CONNECT_TO_FMS NetStream インスタンスのコンストラクターに対するパラメーターとして使用される静的オブジェクト。connectToFMSString NetStream インスタンスのコンストラクターに対するパラメーターとして使用される静的オブジェクト。これは NetStream コントラクタの 2 番目のパラメーターのデフォルト値です。アプリケーションが使用してメディアをプログレッシブ再生することはありません。このパラメーターを使用すると、コントラクタが Flash Media Server インスタンスに接続します。 DIRECT_CONNECTIONS ピアーツーピアーの発行者接続を作成します。directConnectionsString ピアーツーピアーの発行者接続を作成します。2 番目の(オプション)パラメーターのこのストリングを、NetStream インスタンスのコンストラクターに渡します。アプリケーションはこのストリングを使用して、クライアントにオーディオおよびビデオをパブリッシュするための NetStream 接続を作成します。 audioReliable RTMFP 接続の場合、音声が完全な信頼性を備えて送信されるかどうかを指定します。Boolean RTMFP 接続の場合、音声が完全な信頼性を備えて送信されるかどうかを指定します。TRUE の場合、この NetStream 経由で送信されるすべての音声は完全に信頼できます。FALSE の場合、送信される音声は完全には信頼できませんが、一定の時間再送信された後、消失します。FALSE 値を使用すれば、音声品質を犠牲にして、レーテンシーを低減できます。

部分信頼性をサポートしていないネットワークプロトコルでプロパティを FALSE に設定しようとすると、この試行は無視され、プロパティは TRUE に設定されます。

dataReliablevideoReliable
audioSampleAccess RTMFP 接続の場合、この NetStream 上のピアーツーピアーサブスクライバーに音声ストリームのキャプチャを許可するかどうかを指定します。Boolean RTMFP 接続の場合、この NetStream 上のピアーツーピアーサブスクライバーに音声ストリームのキャプチャを許可するかどうかを指定します。FALSE の場合、音声ストリームをキャプチャしようとするサブスクライバーには権限エラーが表示されます。 videoSampleAccessbackBufferLength 巻戻しおよび再生のために現在キャッシュされている、以前に表示されたデータの秒数。Number 巻戻しおよび再生のために現在キャッシュされている、以前に表示されたデータの秒数。

このプロパティは、データが Flash Media Server 3.5.3 以降のストリーミングの場合にのみ使用可能です。Flash Media Server について詳しくは、このクラスの説明を参照してください。

以前に表示されたデータをどれだけキャッシュするかを指定するには、Netstream.backBufferTime プロパティを使用します。

データがキャッシュされるのを防ぐために、Netstream.inBufferSeek プロパティを FALSE に設定します。

backBufferTimeinBufferSeek
backBufferTime 巻き戻しと再生のために Flash Player がキャッシュする、以前に表示されたデータの量を秒単位で指定します。Number 巻き戻しと再生のために Flash Player がキャッシュする、以前に表示されたデータの量を秒単位で指定します。デフォルト値は、デスクトップアプリケーションの場合は 30 秒、モバイルアプリケーションの場合は 3 秒です。

このプロパティは、Flash Media Server 3.5.3 以降でデータをストリーミングする場合にのみ使用できます。Flash Media Server について詳しくは、このクラスの説明を参照してください。

このプロパティを使用すると、既に表示されたデータをもう一度サーバーから取得することがないので、巻戻し操作のパフォーマンスが向上します。 その代わり、ストリームはバッファーから再生を開始します。再生中、データはバッファーがいっぱいになるまでストリーミングを続けます。

巻戻し位置がキャッシュ内のデータよりも前の場合、バッファーはフラッシュされ、データは要求された位置でサーバーからストリーミングを開始します。

このプロパティを使用するには、Netstream.inBufferSeek プロパティを TRUE に設定します。

backBufferLengthbufferTimeinBufferSeek
bufferLength バッファーに現在格納されているデータの秒数です。Number バッファーに現在格納されているデータの秒数です。このプロパティを bufferTime プロパティと組み合わせることにより、あとどれくらいの時間でバッファーが満たされるかを見積もることができます。例えば、バッファーにデータがロードされるのを待つユーザーに対してフィードバック情報を提供することが可能になります。 backBufferLengthbufferTimebytesLoadedbufferTimeMax ライブストリーミングコンテンツ用に、最大バッファー長を秒単位で指定します。Number ライブストリーミングコンテンツ用に、最大バッファー長を秒単位で指定します。デフォルト値は 0 です。バッファー長は、ネットワークとデバイスの問題(送信側と受信側のクロックの誤差など)により、時間の経過と共に長くなることがあります。このプロパティを設定すると、ミーティングや調査などのライブアプリケーション用のバッファー長の上限を設定することができます。

bufferTimeMax > 0 および bufferLength >= bufferTimeMax の場合、bufferLengthbufferTime に到達するまで、オーディオは早く再生されます。ライブストリームがビデオのみの場合は、ビデオは bufferLengthbufferTime に達するまで高速で再生されます。

再生の遅延の程度(bufferLengthbufferTime の差異)に応じて、Flash Player は、キャッチアップレートを 1.5%~6.25%の間で制御します。ストリームにオーディオが含まれている場合、高速な再生は、ドメインで音声の歪みを最小化するダウンサンプリング周波数を使用することにより実現されます。

bufferTimeMax プロパティを設定すると、次の場合にライブバッファーストリームのキャッチアップが有効になります。

  • Flash Media Server からライブメディアをストリーミングする場合。
  • Data Generation Mode Flash Mode(NetStream.appendBytes())でライブメディアをストリーミングする場合。
bufferLengthbufferTime
bufferTime ストリームの表示を開始するまでにメッセージをどの程度の時間バッファリングしておくかを指定します。Number ストリームの表示を開始するまでにメッセージをどの程度の時間バッファリングしておくかを指定します。

デフォルト値は 0.1(1/10 秒)です。バッファー内の現在の秒数を調べるには、bufferLength プロパティを使用します。

サーバーサイド再生リストを再生するには、bufferTime に少なくとも 1 秒指定する必要があります。再生中に問題が発生した場合は、bufferTime の長さを増やしてください。

記録されているコンテンツ 記録されている(ライブではない)コンテンツをストリーミングするときにひずみが生じないようにするには、Netstream.bufferTime の値を 0 に設定しないようにします。記録されているコンテンツの場合、デフォルトでは入力バッファーが使用され、メディアデータがキューに置かれてメディアが適切に再生されます。記録されているコンテンツでは、デフォルト値を使用するか、バッファー時間を延長します。

ライブコンテンツ ライブコンテンツをストリーミングする場合は、bufferTime プロパティを 0 に設定します。

Flash Player 9.0.115.0 以降、Flash Player では、NetStream.pause() が呼び出されたときにバッファーをクリアしなくなりました。Flash Player 9.0.115.0 以前は、Flash Player はバッファーが満杯になるまで待機してから再生を開始していましたが、このため遅延がよく発生していました。

1 回の一時停止の場合、NetStream.bufferLength プロパティには 60 秒または NetStream.bufferTime の値の 2 倍のうち、いずれか大きい方の値という制限があります。例えば、bufferTime が 20 秒の場合、Flash Player は NetStream.bufferLength が 20~~2 (40) または 60 のうち、大きい方の値になるまでバッファリングするため、この場合は、bufferLength が 60 秒になるまでバッファリングします。bufferTime が 40 秒の場合、Flash Player は bufferLength が 40~~2 (80) または 60 のうち、大きい方の値になるまでバッファリングするため、この場合は、bufferLength が 80 秒になるまでバッファリングします。

bufferLength プロパティにも絶対制限があります。pause() の呼び出しによって bufferLength が 600 秒またはbufferTime ~~ 2 の値のいずれか大きい方の値を超えた場合、Flash Player はバッファーをフラッシュし、bufferLength を 0 にリセットします。例えば、bufferTime が 120 秒の場合は、bufferLength が 600 秒に達すると、Flash Player はバッファーをフラッシュします。bufferTime が 360 秒の場合は、bufferLength が 720 秒に達すると、Flash Player はバッファーをフラッシュします。

ヒント:例えば、コードで NetStream.pause() を使用し、閲覧者がコマーシャルを見ている間、データをバッファーし、メインのビデオが開始されたときに一時停止を解除することができます。

一時停止の新しい動作の詳細については、http://www.adobe.com/go/learn_fms_smartpause_jp を参照してください。

Flash Media Server。バッファーの動作は、パブリッシュするストリームまたはサブスクライブするストリームにバッファー時間が設定されているかどうかによって異なります。パブリッシュするストリームの場合、bufferTime には、送信バッファーに蓄積されたフレームの送信を開始するまでの時間の長さを指定します。高速接続の場合は、バッファー時間を考慮する必要はありません。データは、アプリケーションがバッファリングすると即座に送信されます。一方、低速接続では、アプリケーションがデータをバッファリングする速度とクライアントに送信できる速度に大きな差が生じることがあります。

サブスクライブするストリームの場合、bufferTime には、受信データをバッファリングして、ストリームの表示を開始するまでの時間を指定します。

記録されたストリームを再生するときに、bufferTime が 0 の場合、Flash はバッファー時間を小さな値(約 10 ミリ秒)に設定します。ライブストリームを後で再生する場合(例えば、再生リストから再生)、このバッファー時間が保持されます。つまり、bufferTime はストリームに対して 0 以外の値のままになります。

backBufferTimebufferLengthbufferTimeMaxtime
bytesLoaded 既にアプリケーションにロードされているデータのバイト数です。uint 既にアプリケーションにロードされているデータのバイト数です。このプロパティを bytesTotal プロパティと組み合わせることにより、あとどれくらいの時間でバッファーが満たされるかを見積もることができます。例えば、バッファーにデータがロードされるのを待つユーザーに対してフィードバック情報を提供することが可能になります。 bytesTotalbufferLengthbytesTotal アプリケーションにロードされるファイルの総バイト数。uint アプリケーションにロードされるファイルの総バイト数。 bytesLoadedbufferTimecheckPolicyFile ビデオファイルのロードを開始する前に、アプリケーションが、ロードするビデオファイルのサーバーからクロスドメインポリシーファイルをダウンロードしようとするかどうかを指定します。Boolean ビデオファイルのロードを開始する前に、アプリケーションが、ロードするビデオファイルのサーバーからクロスドメインポリシーファイルをダウンロードしようとするかどうかを指定します。このプロパティは、プログレッシブビデオのダウンロードと、呼び出し元の SWF ファイル自体のドメインの外部にあるファイルのロードに使用します。このプロパティは、RTMP を使用している場合は無視されます。

このプロパティを true に設定して、呼び出し元の SWF の外部にあるドメインからロードしたビデオファイル上の BitmapData.draw() を呼び出します。BitmapData.draw() メソッドを使用すると、ビデオにピクセルレベルでアクセスできます。ロード時に BitmapData.draw() を呼び出すときに checkPolicyFile プロパティを true に設定していないと、SecurityError 例外を受け取る場合があります。これは、必要なポリシーファイルがダウンロードされていないためです。

ロードしているビデオに対するピクセルレベルのアクセスが必要ない場合は、このプロパティを true に設定しないでください。ポリシーファイルを確認すると、ネットワーク帯域幅が消費されるため、ダウンロードの開始が遅れる場合があります。

NetStream.play() メソッドを呼び出すときに checkPolicyFile の設定が true になっていると、Flash Player または AIR ランタイムで該当するクロスドメインポリシーファイルが正常にダウンロードされるか、NetStream.play() によるダウンロードが開始される前にそのようなポリシーファイルは存在しないと判定されるか、いずれかになります。ポリシーファイルの存在を確認するため、Flash Player または AIR ランタイムは次のアクションをこの順番で実行します。

  1. アプリケーションは、既にダウンロードされているポリシーファイルを考慮します。
  2. アプリケーションは、Security.loadPolicyFile() メソッドの呼び出しで指定された保留中ポリシーファイルをダウンロードしようとします。
  3. アプリケーションは NetStream.play() に渡された URL に対応するデフォルトの場所からポリシーファイルをダウンロードしようとします。その URL と同じサーバー上の /crossdomain.xml がデフォルトの場所です。

どのような場合も、Flash Player または Adobe AIR では、該当するポリシーファイルがビデオのサーバー上に存在しており、ポリシーファイルの場所に基づいて play() に渡された URL にあるオブジェクトへのアクセスを提供し、<allow-access-from> タグによって呼び出し元コードのファイルのドメインがビデオにアクセスできるようにする必要があります。

checkPolicyFiletrue に設定した場合、アプリケーションはビデオをダウンロードする前に、ポリシーファイルが検証されるまで待機します。BitmapData.draw() の呼び出しなど、ビデオデータに対するピクセルレベルの操作は、NetStream オブジェクトから onMetaData イベントまたは NetStatus イベントを受け取るまで実行を待つ必要があります。

checkPolicyFiletrue に設定したが関連ポリシーファイルが見つからない場合、エラーになって SecurityError 例外がスローされるのは、ポリシーファイルを必要とする操作を実行してからです。

サーバーサイド HTTP リダイレクトを使用する URL からファイルをダウンロードする場合は、checkPolicyFile に注意してください。アプリケーションは、NetStream.play() で指定する初期 URL に対応するポリシーファイルを取得しようとします。最終的なファイルが HTTP リダイレクトによって別の URL から取得される場合、最初にダウンロードされたポリシーファイルはファイルの最終的な URL(セキュリティ判定においてはこの URL が重要となります)に適用できないことがあります。

ポリシーファイルについて詳しくは、『ActionScript 3.0 開発ガイド』の「Web サイトのコントロール(ポリシーファイル)」および Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

flash.display.BitmapData.draw()flash.system.Security.loadPolicyFile()netStatusonMetaDataplay()
client F4V または FLV ファイルデータのストリーミングの処理で、コールバックメソッドの呼び出し元となるオブジェクトを指定します。Objectclient プロパティは、null 以外のオブジェクトに設定する必要があります。 TypeErrorTypeError F4V または FLV ファイルデータのストリーミングの処理で、コールバックメソッドの呼び出し元となるオブジェクトを指定します。デフォルトのオブジェクトは、作成される NetStream オブジェクト this です。client プロパティを別のオブジェクトに設定すると、コールバックメソッドはその別のオブジェクトで呼び出されます。NetStream.client オブジェクトは、関数 onCuePoint()onImageData()onMetaData()onPlayStatus()onSeekPoint()onTextData() および onXMPData() を呼び出して、関連付けられたデータオブジェクトを受け取ることができます。

client プロパティをイベントハンドラーに関連付けるには:

  1. オブジェクトを作成し、NetStream オブジェクトの client プロパティに割り当てます。 var customClient:Object = new Object(); my_netstream.client = customClient;
  2. 必要なデータイベントに対するハンドラー関数をクライアントオブジェクトのプロパティとして割り当てます。 customClient.onImageData = onImageDataHandler;
  3. 以下のようなデータイベントオブジェクトを受け取るハンドラー関数を記述します。 public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); }

データがストリームを通るとき、または再生中、データイベントオブジェクト(この場合は imageData オブジェクト)にデータが取り込まれます。 onImageData の説明を参照してください。client プロパティに関連付けられたオブジェクトの例がすべて記載されています。

client プロパティをサブクラスに関連付けるには:

  1. ハンドラー関数を伴うサブクラスがデータイベントオブジェクトを受け取るように作成します。 class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " framerate=" + info.framerate); }
  2. サブクラスのインスタンスを NetStream オブジェクトの client プロパティに割り当てます。 my_netstream.client = new CustomClient();

データがストリームを通るとき、または再生中、データイベントオブジェクト(この場合は info オブジェクト)にデータが取り込まれます。 NetStream クラスの最後にあるクラス例を参照してください。client プロパティへのサブクラスインスタンスの割り当てが記載されています。

onCuePointonImageDataonMetaDataonPlayStatusonSeekPointonTextData
currentFPS 1 秒あたりの表示フレーム数です。Number 1 秒あたりの表示フレーム数です。複数のシステム上で再生できるようにビデオファイルを書き出す場合、テスト中にこの値をチェックすることで、ファイルの書き出し時にどの程度の圧縮が必要かを見極めることができます。 dataReliable RTMFP 接続の場合、NetStream.send() 呼び出しが完全な信頼性を備えて送信されるかどうかを指定します。Boolean RTMFP 接続の場合、NetStream.send() 呼び出しが完全な信頼性を備えて送信されるかどうかを指定します。TRUE の場合、この NetStream 経由で送信された NetStream.send() 呼び出しは完全に信頼できます。FALSE の場合、NetStream.send() 呼び出しは完全な信頼性を備えて送信されることはありませんが、一定の時間再送信された後、消失します。値を FALSE に設定すれば、データ品質を犠牲にして、レーテンシーを低減できます。

部分信頼性をサポートしていないネットワークプロトコルでプロパティを FALSE に設定しようとすると、この試行は無視され、プロパティは TRUE に設定されます。

audioReliablesend()videoReliable
farID RTMFP 接続の場合、この NetStream インスタンスに接続されている相手側の識別子です。String RTMFP 接続の場合、この NetStream インスタンスに接続されている相手側の識別子です。 farNonce RTMFP および RTMPE 接続の場合、値は基本的にこのストリームの向こう側で選択され、この接続に固有です。String RTMFP および RTMPE 接続の場合、値は基本的にこのストリームの向こう側で選択され、この接続に固有です。この値は、ストリームの向こう側では nearNonce 値となります。 inBufferSeek 表示されたデータがスマートシーク用にキャッシュされているか(TRUE)、キャッシュされていないか(FALSE)を指定します。Boolean 表示されたデータがスマートシーク用にキャッシュされているか(TRUE)、キャッシュされていないか(FALSE)を指定します。デフォルト値は FALSE です

Flash Media Server 3.5.3 および Flash Player 10.1 は連携してスマートシークをサポートします。スマートシークは、サーバー内のデータを要求せずに、巻き戻しと再生用のバッファーを使用します。標準のシークでは、バッファー済みのデータをフラッシュし、シーク時間に基づいて新しいデータを送信するようにサーバーに要求します。

NetStream.step() を呼び出して、指定した数のフレームを進めるか巻き戻します。NetStream.seek() を呼び出して、指定した数のフレームを前方へまたは後方へシークします。

スマートシークにより、サーバーの負荷が減少し、シークのパフォーマンスが向上します。inBufferSeek=true に設定し、step() およびseek() を呼び出して以下のものを作成します。

  • クライアント側 DVR 機能。新しいビデオの配信をサーバーに要求する代わりに、クライアント側のバッファー内をシークします。
  • トリックモード。フレームのコマ送り再生、早送り、巻き戻り、スローモーション再生中の早送りなどを実行するプレーヤーを作成します。

inBufferSeek=true と設定されていて、NetStream.seek() の呼び出しに成功した場合、NetStatusEvent の info.description プロパティには、ストリング "client-inBufferSeek" が含まれます。

NetStream.step() の呼び出しに成功した場合、NetStatusEvent の info.code プロパティにはストリング "NetStream.Step.Notify" が含まれます。

backBufferTimebackBufferLengthbufferTimebufferLengthstep()seek()
info サービスの質に関する統計情報をプロパティが持つ NetStreamInfo オブジェクトを返します。flash.net:NetStreamInfo サービスの質に関する統計情報をプロパティが持つ NetStreamInfo オブジェクトを返します。このオブジェクトは現在の状態のスナップショットです。 flash.net.NetStreamInfoliveDelay ライブ(バッファリングされていない)モードでサブスクライブしているストリームバッファー内にあるデータの秒数です。Number ライブ(バッファリングされていない)モードでサブスクライブしているストリームバッファー内にあるデータの秒数です。このプロパティは、現在のネットワーク転送の遅延時間を示します。

このプロパティは、主に Flash Media Server などのサーバーで使用することを目的としています。詳細については、クラスの説明を参照してください。

このプロパティの値を取得して、ストリームの転送品質を大まかに判断し、それをユーザーに伝えることができます。

maxPauseBufferTime 一時停止モード中にメッセージをバッファリングしておく時間を秒単位で指定します。Number 一時停止モード中にメッセージをバッファリングしておく時間を秒単位で指定します。このプロパティを使用して、一時停止モード中に行うバッファリングの量を制限できます。NetStream.bufferLength の値がこの制限に達するとバッファリングが停止します。

この値を設定しない場合は、デフォルトの 60 秒または各一時停止の NetStream.bufferTime の値の 2 倍のいずれか高いほうに設定されます。

bufferTime
multicastAvailabilitySendToAll RTMFP 接続の場合、ピアーツーピアーマルチキャストフラグメント可用性メッセージがすべてのピアーに送信されるか、1 つのピアーにのみ送信されるかを指定します。Boolean RTMFP 接続の場合、ピアーツーピアーマルチキャストフラグメント可用性メッセージがすべてのピアーに送信されるか、1 つのピアーにのみ送信されるかを指定します。値が TRUE の場合、メッセージが指定した間隔ですべてのピアーに一度だけ送信されることを指定します。値が FALSE の場合、メッセージが指定した間隔で 1 つのピアーにのみ送信されることを指定します。間隔は multicastAvailabilityUpdatePeriod プロパティによって決まります。 multicastAvailabilityUpdatePeriodmulticastAvailabilityUpdatePeriod RTMFP 接続の場合、メッセージがピアーに送信される間隔を秒単位で指定し、ローカルノードで新しいピアーツーピアーマルチキャストメディアフラグメントを使用できることをピアーに通知します。Number RTMFP 接続の場合、メッセージがピアーに送信される間隔を秒単位で指定し、ローカルノードで新しいピアーツーピアーマルチキャストメディアフラグメントを使用できることをピアーに通知します。この値を大きくすると、バッチ効率が向上し、制御オーバーヘッドは減少しますが、フラグメントが消失するまでにそれらのフラグメントを取得する時間が短縮されることにより、受信側での品質が低下する可能性があります。値を小さくすると、レーテンシーが下がり、制御オーバーヘッドが増加します。 multicastAvailabilitySendToAllmulticastFetchPeriodmulticastWindowDurationmulticastFetchPeriod RTMFP 接続の場合、ピアーツーピアーマルチキャストメディアフラグメントが利用可能になったことをローカルノードが認識してから、これらのフラグメントをピアーから取得するまでの時間を秒単位で指定します。Number RTMFP 接続の場合、ピアーツーピアーマルチキャストメディアフラグメントが利用可能になったことをローカルノードが認識してから、これらのフラグメントをピアーから取得するまでの時間を秒単位で指定します。この値によって、フラグメントをピアーから取得する前に、事前にローカルノードに移動させることができます。また、複数のピアーにフラグメントの提供を通知できるので、取得のための負荷を複数のピアーに分散できます。

この値を大きくすると、ピアーツーピアーメッシュ内の負荷バランスと公平性が向上しますが、利用可能な multicastWindowDuration が減り、レーテンシーが低下します。 この値を小さくすると、取得が要求されるときにレーテンシーが低下しますが、重複したデータ受信が増え、ピアーツーピアーメッシュの負荷バランスが低下します。

multicastAvailabilityUpdatePeriodmulticastWindowDuration
multicastInfo RTMFP 接続の場合、プロパティにサービス品質に関する統計が含まれる NetStreamMulticastInfo オブジェクトを返します。flash.net:NetStreamMulticastInfo RTMFP 接続の場合、プロパティにサービス品質に関する統計が含まれる NetStreamMulticastInfo オブジェクトを返します。このオブジェクトは現在の状態のスナップショットです。 flash.net.NetStreamMulticastInfomulticastPushNeighborLimit RTMFP 接続の場合、マルチキャストメディアを事前に移動するピアーの最大数を指定します。Number RTMFP 接続の場合、マルチキャストメディアを事前に移動するピアーの最大数を指定します。 multicastRelayMarginDuration RTMFP 接続の場合、指定された継続時間が過ぎてもピアーツーピアーマルチキャストデータを要求するピアーに対してデータを送信できるよう、データを利用できる継続時間を秒単位で指定します。Number RTMFP 接続の場合、指定された継続時間が過ぎてもピアーツーピアーマルチキャストデータを要求するピアーに対してデータを送信できるよう、データを利用できる継続時間を秒単位で指定します。この継続時間は multicastWindowDuration プロパティで指定されます。 multicastWindowDurationmulticastWindowDuration RTMFP 接続の場合、ピアーツーピアーマルチキャスト再構築ウィンドウの継続時間を秒単位で指定します。Number RTMFP 接続の場合、ピアーツーピアーマルチキャスト再構築ウィンドウの継続時間を秒単位で指定します。値を小さくすると、レーテンシーは小さくなりますが、すべてのフラグメントを取得するために十分な時間がなくなり、品質が低下する場合があります。逆に時間を大きくすると、すべてのフラグメントを取得するための時間が十分とれるので、品質は向上しますが、それに伴って、レーテンシーが増加します。 multicastRelayMarginDurationnearNonce RTMFP および RTMPE 接続の場合、値は基本的にこのストリームのこちら側で選択され、この接続に固有です。String RTMFP および RTMPE 接続の場合、値は基本的にこのストリームのこちら側で選択され、この接続に固有です。この値は、ストリームの向こう側では farNonce 値となります。 objectEncoding この NetStream オブジェクトのエンコード(AMF バージョン)です。uint この NetStream オブジェクトのエンコード(AMF バージョン)です。NetStream オブジェクトは、関連付けされた NetConnection オブジェクトからその objectEncoding 値を継承します。ActionScript 3.0 SWF ファイルで Flash Player 9 以前にリリースされたサーバーと通信する必要がある場合は、このプロパティを理解することが重要です。詳細については、NetConnection クラスの objectEncoding プロパティに関する説明を参照してください。

このプロパティの値は、ローカルストリームかリモートストリームかによって異なります。nullNetConnection.connect() メソッドに渡されたローカルストリームでは、NetConnection.defaultObjectEncoding の値が返されます。サーバーに接続しているリモートストリームでは、このサーバーとの接続のオブジェクトエンコーディングが返されます。

接続されていない場合にこのプロパティを読み取ろうとするか、このプロパティを変更しようとすると、アプリケーションにより例外がスローされます。

flash.net.NetConnection.objectEncoding
peerStreams パブリッシュするこの NetStream インスタンスを監視している、サブスクライブするすべての NetStream インスタンスを保持するオブジェクト。Array パブリッシュするこの NetStream インスタンスを監視している、サブスクライブするすべての NetStream インスタンスを保持するオブジェクト。 soundTransform この NetStream オブジェクトのサウンドを制御します。flash.media:SoundTransform この NetStream オブジェクトのサウンドを制御します。詳細については、SoundTransform クラスを参照してください。 flash.media.SoundTransformtime 再生ヘッドの位置(秒単位)です。Number 再生ヘッドの位置(秒単位)です。

Flash Media Server サブスクライブするストリームの場合、ストリームを再生した秒数です。パブリッシュするストリームの場合、ストリームをパブリッシュした秒数です。この数値は、小数点以下 3 桁までの精度があります。この数値に 1000 を掛けると、ストリームを再生したミリ秒単位の時間数になります。

サブスクライブするストリームでは、サーバーがデータの送信を停止してもストリームが開いたままになっている場合、time プロパティの値の増加が止まります。サーバーがデータの送信を再開すると、値の増加が止まった個所から値の増加が続けられます。

再生リストの要素間でストリームを切り替えても、time の値は増加を続けます。呼び出した NetStream.play()reset1 または true に設定されている場合、または NetStream.close() を呼び出した場合、このプロパティは 0 に設定されます。

bufferLengthbytesLoaded
videoReliable RTMFP 接続の場合、ビデオが完全な信頼性を備えて送信されるかどうかを指定します。Boolean RTMFP 接続の場合、ビデオが完全な信頼性を備えて送信されるかどうかを指定します。TRUE の場合、この NetStream 経由で送信されるすべてのビデオは完全に信頼できます。FALSE の場合、送信されるビデオは完全には信頼できませんが、一定の時間再送信されてから、消失します。FALSE 値を使用すれば、ビデオ品質を犠牲にして、レーテンシーを低減できます。

部分信頼性をサポートしていないネットワークプロトコルでプロパティを FALSE に設定しようとすると、この試行は無視され、プロパティは TRUE に設定されます。

audioReliabledataReliable
videoSampleAccess RTMFP 接続の場合、この NetStream 上のピアーツーピアーサブスクライバーにビデオストリームのキャプチャを許可するかどうかを指定します。Boolean RTMFP 接続の場合、この NetStream 上のピアーツーピアーサブスクライバーにビデオストリームのキャプチャを許可するかどうかを指定します。FALSE の場合、ビデオストリームをキャプチャしようとするサブスクライバーには権限エラーが表示されます。 audioSampleAccess
NetMonitor NetMonitor クラスにより、アプリケーションで使用される NetStream オブジェクトを監視できます。flash.events:EventDispatcher NetMonitor クラスにより、アプリケーションで使用される NetStream オブジェクトを監視できます。

NetMonitor クラスを使用して、アプリケーションで使用中の NetStream オブジェクトの現在のリストを取得します。このクラスのインスタンスは、新しい NetStream オブジェクトが作成されるたびに、netStreamCreate イベントを送出します。

NetMonitor クラスを使用すると、どのビデオプレーヤーを使用中であるかを問わず、ビデオ再生および関連するイベントを追跡できます。この機能はメディアの測定、分析および使用状況追跡ライブラリを実装する際に役立ちます。

この例では、使用中の特定のビデオプレーヤーに関する詳細情報を持たずに、NetMonitor クラスを使用して NetStream 情報にアクセスできることを示しています。ここでは、Open Screen Media Framework(OSMF)プロジェクトの MediaPlayerSprite クラスが使用されていますが、どのビデオプレーヤーにも置き換えることができます。

例のビデオの一時停止と再開にはスペースバーを使用し、30 秒送りまたは 30 秒戻しには右向き矢印と左向き矢印を使用して、送出されたイベントに対するこれらの操作の影響を確認できます。

package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.KeyboardEvent; import flash.events.NetDataEvent; import flash.events.NetMonitorEvent; import flash.events.NetStatusEvent; import flash.net.NetMonitor; import flash.net.NetStream; import flash.ui.Keyboard; import org.osmf.elements.VideoElement; import org.osmf.media.MediaPlayer; import org.osmf.media.MediaPlayerSprite; import org.osmf.net.DynamicStreamingItem; import org.osmf.net.DynamicStreamingResource; public class NetMonitorExample extends Sprite { private var netmon:NetMonitor; private var mediaPlayer:MediaPlayer; public function NetMonitorExample() { //Configure stage this.stage.align = StageAlign.TOP_LEFT; this.stage.scaleMode = StageScaleMode.NO_SCALE; //Create NetMonitor object netmon = new flash.net.NetMonitor(); netmon.addEventListener(NetMonitorEvent.NET_STREAM_CREATE, newNetStream ); //Setup video player var mediaPlayerSprite:MediaPlayerSprite = new MediaPlayerSprite(); var videoElement:VideoElement = new VideoElement(); var dynResource:DynamicStreamingResource = new DynamicStreamingResource( "rtmp://cp67126.edgefcs.net/ondemand" ); dynResource.streamItems = Vector.<DynamicStreamingItem>( [ new DynamicStreamingItem( "mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_768x428_24.0fps_408kbps.mp4", 408, 768, 428 ) , new DynamicStreamingItem( "mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_768x428_24.0fps_608kbps.mp4", 608, 768, 428 ) , new DynamicStreamingItem( "mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_1024x522_24.0fps_908kbps.mp4", 908, 1024, 522 ) , new DynamicStreamingItem( "mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_1024x522_24.0fps_1308kbps.mp4", 1308, 1024, 522 ) , new DynamicStreamingItem( "mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_1280x720_24.0fps_1708kbps.mp4", 1708, 1280, 720 ) ]); videoElement.resource = dynResource; addChild( mediaPlayerSprite ); mediaPlayerSprite.media = videoElement; mediaPlayer = mediaPlayerSprite.mediaPlayer; this.stage.addEventListener( KeyboardEvent.KEY_DOWN, keyControl ); } //On new NetStream private function newNetStream( event:NetMonitorEvent ):void { trace( "New Netstream object "); var stream:NetStream = event.netStream; stream.addEventListener(NetDataEvent.MEDIA_TYPE_DATA, onStreamData); stream.addEventListener(NetStatusEvent.NET_STATUS, onStatus); } //On data events from a NetStream object private function onStreamData( event:NetDataEvent ):void { trace( "Data event at " + event.timestamp ); var netStream:NetStream = event.target as NetStream; switch( event.info.handler ) { case "onMetaData": trace( "--MetaData: " + stringify( netStream.info.metaData )); break; case "onXMPData": trace( "--XMPData: " + stringify( netStream.info.xmpData )); break; default: trace( "--" + event.info.handler + ": " + stringify(event.info.args[0]) ); } } //On status events from a NetStream object private function onStatus( event:NetStatusEvent ):void { trace( "Status: " + stringify( event.info ) ); } //Utility function to print out object properties private function stringify( object:Object ):String { var string:String = ""; var prop:String; var comma:Boolean = false; for ( prop in object ) { if( comma ) string += ", "; else comma = true; if( typeof(object[prop]) == "object" ) { stringify( object[prop] ) } else string += prop + " = " + object[prop]; } return string; } //Simple keyboard control for the video player private function keyControl( event:KeyboardEvent ):void { switch ( event.keyCode ) { case Keyboard.SPACE: if( mediaPlayer.paused ) mediaPlayer.play(); else mediaPlayer.pause(); break; case Keyboard.RIGHT: mediaPlayer.seek( mediaPlayer.currentTime + 30 ); break; case Keyboard.LEFT: mediaPlayer.seek( mediaPlayer.currentTime - 30 ); break; default: //do nothing } } } }
NetStreamnetStreamCreate この NetMonitor インスタンスのセキュリティコンテキスト内部で新しい NetStream オブジェクトが作成されたときに送出されます。flash.events.NetMonitorEvent.NET_STREAM_CREATEflash.events.NetMonitorEvent この NetMonitor インスタンスのセキュリティコンテキスト内部で新しい NetStream オブジェクトが作成されたときに送出されます。

注意:NetStream 監視機能が現在のプラットフォームでサポートされていない場合、netStreamCreate イベントは送出されません。

listStreams この NetMonitor オブジェクトのセキュリティコンテキストに属するすべての NetStream オブジェクトを取得します。NetStream オブジェクトのベクター この NetMonitor オブジェクトのセキュリティコンテキストに属するすべての NetStream オブジェクトを取得します。

NetStream オブジェクトのリストのキャッシュを回避します。

注意:NetStream 監視機能が現在のプラットフォームでサポートされていない場合、この関数によって返されるリストは常に空です。

NetStreamInfo NetStreamInfo クラスでは、NetStream オブジェクトと、その下層のオーディオ、ビデオ、データ用ストリーミングバッファーに関連する、サービスの質(QOS)の各種統計情報およびその他の情報を指定します。Object NetStreamInfo クラスでは、NetStream オブジェクトと、その下層のオーディオ、ビデオ、データ用ストリーミングバッファーに関連する、サービスの質(QOS)の各種統計情報およびその他の情報を指定します。NetStreamInfo オブジェクトは、現在の QOS の状態のスナップショットを取得する NetStream.info の呼出しに応答して返され、NetStreamInfo のプロパティを介して QOS の統計情報を提供します。 toString NetStreamInfo オブジェクトのプロパティを列挙するテキスト値を返します。NetStreamInfo オブジェクトのプロパティの値を含むストリング。 Stringこの NetStreamInfo オブジェクトのプロパティを列挙するテキスト値を返します。 NetStreamInfo オブジェクトのプロパティを列挙するテキスト値を返します。 SRTT NetStream セッションの平滑化往復時間(SRTT)(ミリ秒単位)Number NetStream セッションの平滑化往復時間(SRTT)(ミリ秒単位)このプロパティには、RTMFP ストリームに対してのみ有効な値が含まれます。RTMP ストリームの場合、値は 0 です。 flash.net.NetGroupaudioBufferByteLength NetStream オーディオバッファーのサイズ(バイト数)を提供します。Number NetStream オーディオバッファーのサイズ(バイト数)を提供します。ストリーミングメディア内の、ライブおよび録音両方のオーディオデータのバッファーサイズを指定します。このプロパティは、プログレッシブダウンロードで使用する Netstream.bytesLoaded に似ています。 audioBufferLength NetStream オーディオバッファーのサイズ(秒単位)を提供します。Number NetStream オーディオバッファーのサイズ(秒単位)を提供します。このプロパティは、NetStream.bufferLength プロパティを拡張したもので、時間単位のオーディオデータ専用バッファー長を提供します。 audioByteCount 再生またはフラッシュされたバイト数とは関係なく、キューが受信した総オーディオバイト数を指定します。Number 再生またはフラッシュされたバイト数とは関係なく、キューが受信した総オーディオバイト数を指定します。この値は、タイマーを作成し、タイマーを連続して呼び出した場合の値の差を計算することによって、選択したメトリックを使って、オーディオデータ受信速度を計算する場合に使用します。または、audioBytesPerSecond を使用します。 audioBytesPerSecondaudioBytesPerSecond NetStream オーディオバッファーがデータを受信する速度(1 秒あたりのバイト数)を指定します。Number NetStream オーディオバッファーがデータを受信する速度(1 秒あたりのバイト数)を指定します。この値は、最後の 1 秒に受信したオーディオデータの平滑化平均として計算されます。 audioLossRate NetStream セッションのオーディオの損失を指定します。Number NetStream セッションのオーディオの損失を指定します。この値は、RTMFP ストリームの場合のみ有効な値を返し、RTMP ストリームの場合は 0 を返します。 損失率は、全メッセージ数に対する損失メッセージ数の比率で表されます。 byteCount 再生またはフラッシュされたバイト数とは関係なく、キューが受信した総バイト数を指定します。Number 再生またはフラッシュされたバイト数とは関係なく、キューが受信した総バイト数を指定します。この値は、タイマーを作成し、タイマーを連続して呼び出した場合の値の差を計算することによって、選択したメトリックを使って、データ受信速度を計算する場合に使用します。または、currentBytesPerSecond を使用します。 currentBytesPerSecondcurrentBytesPerSecond NetStream バッファーがデータを受信する速度(1 秒あたりのバイト数)を指定します。Number NetStream バッファーがデータを受信する速度(1 秒あたりのバイト数)を指定します。この値は、最後の 1 秒に受信した全データの平滑化平均として計算されます。 dataBufferByteLength NetStream データバッファーのサイズ(バイト数)を提供します。Number NetStream データバッファーのサイズ(バイト数)を提供します。ストリーミングメディア内の、ライブおよび記録両方のデータメッセージのバッファーサイズを指定します。このプロパティは、プログレッシブダウンロードで使用する Netstream.bytesLoaded に似ています。 dataBufferLength NetStream データバッファーのサイズ(秒単位)を提供します。Number NetStream データバッファーのサイズ(秒単位)を提供します。このプロパティは、NetStream.bufferLength プロパティを拡張したもので、時間単位のデータメッセージ専用バッファー長を提供します。 dataByteCount 再生またはフラッシュされたバイト数とは関係なく、キューが受信したデータメッセージの総バイト数を指定します。Number 再生またはフラッシュされたバイト数とは関係なく、キューが受信したデータメッセージの総バイト数を指定します。この値は、タイマーを作成し、タイマーを連続して呼び出した場合の値の差を計算することによって、選択したメトリックを使って、データメッセージ受信速度を計算する場合に使用します。または、dataBytesPerSecond を使用します。 dataBytesPerSeconddataBytesPerSecond NetStream データバッファーがデータを受信する速度(1 秒あたりのバイト数)を指定します。Number NetStream データバッファーがデータを受信する速度(1 秒あたりのバイト数)を指定します。この値は、最後の 1 秒に受信したデータメッセージの平滑化平均として計算されます。 droppedFrames 現在の NetStream 再生セッションで脱落したビデオフレームの数を返します。Number 現在の NetStream 再生セッションで脱落したビデオフレームの数を返します。

記録されたストリーミングやプログレッシブダウンロードでは、システム CPU のリソースが十分でない場合、高品質または高解像度で高ビットレートのビデオの、1 秒あたりに必要なフレーム数をデコードする際に、デコーダの動作が遅くなることがあります。ライブストリーミングでは、待ち時間が長すぎる場合、バッファーはビデオフレームを脱落させます。このプロパティでは、脱落して正常には存在していないフレームの数を指定します。

isLive 再生中のメディアが収録されたものであるか、ライブであるかを示します。Boolean 再生中のメディアが収録されたものであるか、ライブであるかを示します。このプロパティは RTMP ストリーミングのみと関連しています。プログレッシブダウンロードおよび HTTP ダイナミックストリーミングの場合、このプロパティは常に false です。

注意:このプロパティは Android および Blackberry Tablet OS 上のブラウザー内の Flash Player、または iOS 上の AIR では、常に false です。

maxBytesPerSecond NetStream バッファーがデータを受信する最高速度(1 秒あたりのバイト数)を指定します。Number NetStream バッファーがデータを受信する最高速度(1 秒あたりのバイト数)を指定します。この値は、NetStream オブジェクトが受信した最後のメッセージを基に、クライアントのネットワーク容量に関する情報を提供します。NetStream.bufferTime で指定されているバッファーサイズとクライアントで利用可能な帯域幅によっては、Flash Media Server はバーストでバッファーにデータを受信します。このプロパティを使用すると、クライアントのバッファーがデータを受信する最大速度が得られます。 metaData 再生中のメディアに関連付けられた、最新のメタデータオブジェクト。Object 再生中のメディアに関連付けられた、最新のメタデータオブジェクト。

注意:このプロパティは Android および Blackberry Tablet OS 上のブラウザー内の Flash Player、または iOS 上の AIR では、常に null です。

playbackBytesPerSecond ストリーム再生速度(1 秒あたりのバイト数)を返します。Number ストリーム再生速度(1 秒あたりのバイト数)を返します。再生バッファーには、様々な再生リストのコンテンツを格納できます。このプロパティを使用すると、現在再生されているストリームのビットレートに近い再生速度が得られます。 resourceName NetStream.play() の呼び出し時に使用されたリソース名。StringNetStream.play() の呼び出し時に使用されたリソース名。 NetStream.play() の呼び出し時に使用されたリソース名。このプロパティは、プログレッシブダウンロードの場合は完全な URL、RTMP ストリーミングの場合はリソース名、HTTP ストリーミングの場合は null で構成されます。

注意:このプロパティは Android および Blackberry Tablet OS 上のブラウザー内の Flash Player、または iOS 上の AIR では、常に null です。

flash.media.NetStream.play()
uri NetConnection.connect() の呼び出し時に使用された URI。StringNetConnection.connect() の呼び出し時に使用された URI。 NetConnection.connect() の呼び出し時に使用された URI。この値は、プログレッシブダウンロードまたは HTTP ストリーミングの場合には null です。

注意:このプロパティは Android および Blackberry Tablet OS 上のブラウザー内の Flash Player、または iOS 上の AIR では、常に null です。

flash.media.NetConnection.uri
videoBufferByteLength NetStream ビデオバッファーのサイズ(バイト数)を提供します。Number NetStream ビデオバッファーのサイズ(バイト数)を提供します。ストリーミングメディア内の、ライブおよび録画両方のビデオデータのバッファーサイズを指定します。このプロパティは、プログレッシブダウンロードで使用する Netstream.bytesLoaded に似ています。 videoBufferLength NetStream ビデオバッファーのサイズ(秒単位)を提供します。Number NetStream ビデオバッファーのサイズ(秒単位)を提供します。このプロパティは、NetStream.bufferLength プロパティを拡張したもので、時間単位のビデオデータ専用バッファー長を提供します。 videoByteCount 再生またはフラッシュされたバイト数とは関係なく、キューが受信したビデオの総バイト数を指定します。Number 再生またはフラッシュされたバイト数とは関係なく、キューが受信したビデオの総バイト数を指定します。この値は、タイマーを作成し、タイマーを連続して呼び出した場合の値の差を計算することによって、選択したメトリックを使って、ビデオデータ受信速度を計算する場合に使用します。または、videoBytesPerSecond を使用します。 videoBytesPerSecondvideoBytesPerSecond NetStream ビデオバッファーがデータを受信する速度(1 秒あたりのバイト数)を指定します。Number NetStream ビデオバッファーがデータを受信する速度(1 秒あたりのバイト数)を指定します。この値は、最後の 1 秒に受信したビデオデータの平滑化平均として計算されます。 videoLossRate NetStream ビデオ非可逆圧縮率(消失したメッセージと合計メッセージの比率)を提供します。Number NetStream ビデオ非可逆圧縮率(消失したメッセージと合計メッセージの比率)を提供します。

メッセージサイズが最大転送単位(MTU)よりも小さい場合、この値はネットワークパケット消失率に対応します。

このプロパティは、RTMFP ストリームに対してのみ有効な値を返します。RTMP ストリームの場合、0 の値を返します。詳しくは、Flash Media Server のマニュアルを参照してください。

xmpData 再生中のメディアに関連付けられた、最新の XMP オブジェクト。Object 再生中のメディアに関連付けられた、最新の XMP オブジェクト。

注意:このプロパティは Android および Blackberry Tablet OS 上のブラウザー内の Flash Player、または iOS 上の AIR では、常に null です。

URLStream URLStream クラスはダウンロード用 URL への低レベルのアクセスを提供します。flash.utils:IDataInputflash.events:EventDispatcher URLStream クラスはダウンロード用 URL への低レベルのアクセスを提供します。データはダウンロードされるとすぐにアプリケーションコードで使用できるようになります。URLLoader の場合のように、ファイル全体がダウンロードされるまで待つ必要はありません。URLStream クラスでは、ダウンロードの完了前にストリームを閉じることもできます。ダウンロードされたファイルの内容は、生のバイナリデータとして利用できます。

URLStream の読み取り操作で、ブロッキングは発生しません。つまり、読み取るデータが十分にあるかどうかを bytesAvailable プロパティを使用して確認してから、データを読み取る必要があります。データが十分にない場合は、EOFError 例外がスローされます。

すべてのバイナリデータは、ビッグエンディアン形式がデフォルトのエンコーディングです。ビッグエンディアンでは、最上位バイトが最初になります。

URLStream クラスでダウンロードしている URL に適用されるセキュリティルールは、URLLoader オブジェクトに適用されるルールと同一です。ポリシーファイルは、必要に応じてダウンロードされます。ローカルファイルのセキュリティルールが適用され、必要に応じてセキュリティ警告が発生します。

次の例では、SWF ファイルをロードして、そのヘッダーの先頭を解析し、圧縮とバージョン番号の情報を示します。

例を実行するために、URLStreamExample.swf という名前のファイルを SWF ファイルと同じディレクトリに配置してください。

package { import flash.display.Sprite; import flash.errors.*; import flash.events.*; import flash.net.URLRequest; import flash.net.URLStream; public class URLStreamExample extends Sprite { private static const ZLIB_CODE:String = "CWS"; private var stream:URLStream; public function URLStreamExample() { stream = new URLStream(); var request:URLRequest = new URLRequest("URLStreamExample.swf"); configureListeners(stream); try { stream.load(request); } catch (error:Error) { trace("Unable to load requested URL."); } } private function configureListeners(dispatcher:EventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); } private function parseHeader():void { trace("parseHeader"); trace("isCompressed: " + isCompressed()); trace("version: " + stream.readByte()); } private function isCompressed():Boolean { return (stream.readUTFBytes(3) == ZLIB_CODE); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); parseHeader(); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:Event):void { trace("progressHandler: " + event); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
URLLoaderURLRequestprogress ダウンロード処理を実行中にデータを受信したときに送出されます。flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent ダウンロード処理を実行中にデータを受信したときに送出されます。受け取ったデータは、URLStream クラスのメソッドを使用してすぐに読み取ることができます。 URLStream.load()open ロード操作が開始したときに送出されます。flash.events.Event.OPENflash.events.Event ロード操作が開始したときに送出されます。 URLStream.load()ioError 入出力エラーが発生してロード操作が失敗したときに送出されます。flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent 入出力エラーが発生してロード操作が失敗したときに送出されます。 URLStream.load()httpResponseStatus URLStream.load() メソッドを呼び出して HTTP を介してデータにアクセスを試み、Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUSflash.events.HTTPStatusEvent URLStream.load() メソッドを呼び出して HTTP を介してデータにアクセスを試み、Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。

URLStream オブジェクトに httpStatusEvent イベントを登録すると、エラー応答がコンテンツであるかのように配信されます。このため、URLStream は、エラーデータが URLStream にロードされると、ioError イベントを送出する代わりに progress イベントおよび complete イベントを送出します。

URLStream.load()
httpStatus URLStream.load() を呼び出して HTTP を介してデータにアクセスを試み、Flash Player または Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。flash.events.HTTPStatusEvent.HTTP_STATUSflash.events.HTTPStatusEvent URLStream.load() を呼び出して HTTP を介してデータにアクセスを試み、Flash Player または Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます(一部のブラウザー環境ではこの情報を提供できません)。httpStatus が発生した場合は、complete イベントまたは error イベントの前に、これらのイベントとは別に送信されます。 URLStream.load()securityError URLStream.load() の呼び出しによってセキュリティサンドボックスの外部にあるサーバーからデータをロードしようとすると送出されます。flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent URLStream.load() の呼び出しによってセキュリティサンドボックスの外部にあるサーバーからデータをロードしようとすると送出されます。 URLStream.load()complete データが正常にロードされたときに送出されます。flash.events.Event.COMPLETEflash.events.Event データが正常にロードされたときに送出されます。 close すぐにストリームを閉じ、ダウンロード処理をキャンセルします。ストリームを閉じることができないか、またはストリームが開いていません。 IOErrorflash.errors:IOError すぐにストリームを閉じ、ダウンロード処理をキャンセルします。close() メソッドの呼び出し後は、ストリームからデータを読み込みません。 load request パラメーターで指定された URL でのダウンロードを開始します。URLRequest.requestHeader オブジェクトには、禁止されている特定の HTTP リクエストヘッダーを含めることはできません。詳細については、URLRequestHeader クラスの説明を参照してください。 ArgumentErrorArgumentErrorこのエラーは、次の理由で発生する可能性があります。
  1. Flash Player または Adobe AIR では URLRequest.data パラメーターを UTF8 から MBCS に変換できません。 このエラーは、load() に渡された URLRequest オブジェクトが GET 操作を行うように設定されている場合、および System.useCodePagetrue に設定されている場合に発生することがあります。
  2. Flash Player または Adobe AIR では POST データにメモリを割り当てることができません。このエラーは、load に渡された URLRequest オブジェクトが POST 操作を行うように設定されている場合に発生することがあります。
MemoryErrorflash.errors:MemoryError
信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。これは、ネットワークアクセスを許可されたローカル SWF ファイル、または信頼できる SWF ファイルとして再分類すると回避できる場合があります。 SecurityErrorSecurityError一般的な予約ポートに接続しようとしています。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。 SecurityErrorSecurityErrorrequestflash.net:URLRequestダウンロードする URL を指定する URLRequest オブジェクトです。このパラメーターの値、または渡された URLRequest オブジェクトの URLRequest.url プロパティが null の場合、アプリケーションは null ポインターエラーをスローします。
request パラメーターで指定された URL でのダウンロードを開始します。

注意:ロード中のファイルに ASCII 文字以外の文字(英語以外の多くの言語に存在する)が含まれている場合は、ASCII のような非 Unicode 形式ではなく UTF-8 または UTF-16 エンコーディング形式でファイルを保存することをお勧めします。

ロード処理がすぐに失敗すると、エラーについて説明する IOError または SecurityError(ローカルファイルのセキュリティエラーを含む)例外がスローされます。その他に、URL ダウンロードでダウンロードが正常に開始した場合は open イベントが送出され、エラーが発生した場合はエラーイベントが送出されます。

デフォルトで、呼び出し元の SWF ファイルおよびロードする URL は同じドメインに置かれている必要があります。例えば、www.adobe.com に置かれている SWF ファイルは www.adobe.com に置かれているソースからのみデータをロードできます。 異なるドメインからデータをロードするには、データをホストするサーバーに URL ポリシーファイルを配置します。

Flash Player では、一般的な予約ポートへは接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。

Flash Player では、SWF ファイルがこのメソッドを使用しないようにすることができます。そのためには、SWF コンテンツを含んでいる HTML ページに allowNetworking パラメーター(object タグおよび embed タグ)を設定します。

Flash Player 10 以降および AIR 1.5 以降では、"multipart/form-data" などのマルチパート Content-Type にアップロードが含まれていると(アップロードが含まれているかどうかは POST ボディ内の "content-disposition" ヘッダーの "filename" パラメーターで示されます)、そのアップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

  • POST 処理は、マウスのクリックやキーの押下などのユーザーが開始したアクションに応答して実行する必要があります。
  • POST 処理がクロスドメインである(POST ターゲットが、POST 要求を送信中の SWF ファイルと同じサーバー上にない)場合は、クロスドメインアクセスを許可する URL ポリシーファイルをターゲットサーバーが提供する必要があります。

また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

これらのルールは、アプリケーションサンドボックス内にない AIR コンテンツにも適用されます。ただし、Adobe AIR では、アプリケーションサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

AIR では、URLRequest オブジェクトを httpResponse ステータスイベントに登録できます。httpStatus イベントと異なり、httpResponseStatus イベントは応答データの前に配信されます。また、httpResponseStatus イベントには responseHeaders プロパティと responseURL プロパティの値が含まれます(これらは httpStatus イベントでは定義されていません)。httpResponseStatus イベントは、発生した場合、complete イベントまたは error イベントの前に、これらのイベントとは別に送信されます。

httpResponseStatus イベントリスナーがある場合、応答メッセージの本文は常に送信され、HTTP ステータスコードの応答結果は常に complete イベントになります。これは、HTTP 応答ステータスコードが成功またはエラーを示しているかどうかにかかわらず当てはまります。

AIR では、このイベントリスナーが存在しない(つまり、httpResponseStatus イベントリスナーが存在しない)場合、SWF の AIR のバージョンによって動作が異なります。

  • SWF 9 コンテンツでは、HTTP 応答のステータスコードが成功を示している場合のみ、HTTP 応答メッセージの本文が送信されます。それ以外(エラーがある場合)は、本文は送信されずに、URLRequest オブジェクトによって IOError イベントが送出されます。
  • SWF 10 コンテンツでは、HTTP 応答メッセージの本文は必ず送信されます。エラーがある場合は、URLRequest オブジェクトによって IOError イベントが送出されます。
completeflash.events:Eventデータが正常にロードされた後に送出されます。httpResponseStatus イベントリスナーが存在する場合、URLRequest オブジェクトは、HTTP 応答のステータスコードが成功またはエラーのいずれを示しているかを通知する complete イベントも送出します。 データが正常にロードされた後に送出されます。httpStatusflash.events:HTTPStatusEventアクセスが HTTP 経由で、現在の環境がステータスコードの取得をサポートしている場合complete イベントや error イベントに加えて、これらのイベントを受け取る場合があります。 アクセスが HTTP 経由で、現在の環境がステータスコードの取得をサポートしている場合、complete イベントや error イベントに加えて、これらのイベントを受け取る場合があります。httpResponseStatusflash.events:HTTPStatusEventload() メソッドを呼び出して HTTP を介してデータにアクセスを試み、Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。 load() メソッドを呼び出して HTTP を介してデータにアクセスを試み、Adobe AIR で要求のステータスコードを検出して返すことができる場合に送出されます。ioErrorflash.events:IOErrorEventロード操作を完了できませんでした。 ロード操作を完了できませんでした。openflash.events:Eventロード操作が開始したときに送出されます。 ロード操作が開始したときに送出されます。securityErrorflash.events:SecurityErrorEvent呼び出し元のセキュリティ Sandbox の外部にあるサーバーからデータを取得しようとするロード操作です。これはサーバー上のポリシーファイルを使用すると回避できます。 呼び出し元のセキュリティ Sandbox の外部にあるサーバーからデータを取得しようとするロード操作です。
readBoolean ストリームからブール値を読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOErrorバイトがゼロ以外の場合は true、それ以外の場合は false が返されます。 Boolean ストリームからブール値を読み取ります。1 バイトが読み取られ、バイトがゼロ以外の場合は true、それ以外の場合は false が返されます。 readByte ストリームから符号付きバイトを読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOError-128 ~ 127 の範囲の値。 int ストリームから符号付きバイトを読み取ります。

返される値は -128 ~ 127 の範囲です。

readBytes ストリームから length バイトのデータを読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOErrorbytesflash.utils:ByteArrayデータの読み込み先の ByteArray オブジェクトです。 offsetuint0bytes でのデータ読み込み開始位置を指定するためのオフセットです。デフォルト値は 0 です。 lengthuint0読み取るバイト数です。デフォルト値の 0 に設定すると、すべてのデータが読み取られます。 ストリームから length バイトのデータを読み取ります。このバイトは、bytes で指定した ByteArray オブジェクトに読み込まれます。ByteArray オブジェクトの offset バイトの位置から読み込みが開始されます。 readDouble ストリームから IEEE 754 倍精度浮動小数点数を読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOErrorストリームから返される IEEE 754 倍精度浮動小数点数。 Number ストリームから IEEE 754 倍精度浮動小数点数を読み取ります。 readFloat ストリームから IEEE 754 単精度浮動小数点数を読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOErrorストリームから返される IEEE 754 単精度浮動小数点数。 Number ストリームから IEEE 754 単精度浮動小数点数を読み取ります。 readInt ストリームから符号付き 32 ビット整数を読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOError-2147483648 ~ 2147483647 の範囲の値。 int ストリームから符号付き 32 ビット整数を読み取ります。

返される値は -2147483648 ~ 2147483647 の範囲です。

readMultiByte 指定した文字セットを使用して、バイトストリームから指定した長さのマルチバイトストリングを読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorUTF-8 エンコードされたストリングです。 Stringlengthuintバイトストリームから読み取るバイト数です。 charSetStringバイトの解釈に使用する文字セットを表すストリングです。文字セットのストリングには、"shift_jis""CN-GB"、および "iso-8859-1" などがあります。完全な一覧については、「サポートされている文字セット」を参照してください。

注意:charSet パラメーターの値が現在のシステムによって認識されない場合、アプリケーションはシステムのデフォルトコードページを文字セットとして使用します。例えば、charSet パラメーターの指定で、myTest.readMultiByte(22, "iso-8859-01") のように、011 の代わりに使用した場合、その文字セットパラメーターは開発マシンでは認識されるかもしれませんが、別のマシンでは認識されない可能性があります。もう一方のマシンでは、アプリケーションがシステムのデフォルトコードページを使用することになります。

指定した文字セットを使用して、バイトストリームから指定した長さのマルチバイトストリングを読み取ります。
readObject ソケットから Action Message Format(AMF)形式でエンコードされたオブジェクトを読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOError非直列化されたオブジェクトです。 ソケットから Action Message Format(AMF)形式でエンコードされたオブジェクトを読み取ります。 ObjectEncodingreadShort ストリームから符号付き 16 ビット整数を読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOError-32768 ~ 32767 の範囲の値。 int ストリームから符号付き 16 ビット整数を読み取ります。

返される値は -32768 ~ 32767 の範囲です。

readUTFBytes ストリームから length の UTF-8 バイトを読み取り、ストリングを返します。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOError指定した長さの文字のバイト表現で作成された UTF-8 ストリングです。 StringlengthuintUTF-8 バイトのシーケンスです。 ストリームから length の UTF-8 バイトを読み取り、ストリングを返します。 readUTF ストリームから UTF-8 ストリングを読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOErrorUTF-8 ストリング。 String ストリームから UTF-8 ストリングを読み取ります。このストリングには、バイト単位の長さを示す符号なし short が前に付いているものと見なされます。 readUnsignedByte ストリームから符号なしバイトを読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOError0 ~ 255 の範囲の値。 uint ストリームから符号なしバイトを読み取ります。

返される値は 0 ~ 255 の範囲です。

readUnsignedInt ストリームから符号なし 32 ビット整数を読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOError0 ~ 4294967295 の範囲の値。 uint ストリームから符号なし 32 ビット整数を読み取ります。

返される値は 0 ~ 4294967295 の範囲です。

readUnsignedShort ストリームから符号なし 16 ビット整数を読み取ります。読み取り可能なデータが不足しています。ローカル SWF ファイルがセキュリティ警告をトリガーする場合、Flash Player は URLStream データが ActionScript で利用されるのを阻止します。その場合、データが受信され、読み取りメソッドのいずれかが EOFError 例外をスローした場合でも、bytesAvailable プロパティは 0 を返します。 EOFErrorflash.errors:EOFErrorストリームで I/O エラーが発生したか、ストリームが開いていません。 IOErrorflash.errors:IOError0 ~ 65535 の範囲の値。 uint ストリームから符号なし 16 ビット整数を読み取ります。

返される値は 0 ~ 65535 の範囲です。

bytesAvailable 入力バッファーで読み取ることができるデータのバイト数を返します。uint 入力バッファーで読み取ることができるデータのバイト数を返します。bytesAvailable プロパティを呼び出して、読み取るデータが十分にあることを確認してから、いずれかの read メソッドを使用してデータを読み取るようにしてください。 connected この URLStream オブジェクトが現在、接続されているかどうかを示します。Boolean この URLStream オブジェクトが現在、接続されているかどうかを示します。このプロパティの呼び出しは、URLStream オブジェクトが接続されている場合は値 true を、それ以外の場合は false を返します。 endian データのバイト順を示します。StringEndian.BIG_ENDIAN データのバイト順を示します。指定できる値は、Endian.BIG_ENDIAN または Endian.LITTLE_ENDIAN です。 flash.utils.EndianobjectEncoding オブジェクトの書き込みまたは読み取り時に使用される Action Message Format(AMF)のバージョンを制御します。uint オブジェクトの書き込みまたは読み取り時に使用される Action Message Format(AMF)のバージョンを制御します。 readObject()ObjectEncoding クラス
NetGroupSendMode NetGroupSendMode クラスは、NetGroup.sendToNeighbor() メソッドの sendMode プロパティに使用される定数値の列挙です。NetGroup クラスの sendToNeighbor() メソッドの sendMode プロパティに使用される定数値の列挙。NetGroup クラスのメソッド Object NetGroupSendMode クラスは、NetGroup.sendToNeighbor() メソッドの sendMode プロパティに使用される定数値の列挙です。 flash.net.NetGroup.sendToNeighbor()NEXT_DECREASING 減少方向で最も近いグループアドレスを持つネイバーを指定します。nextDecreasingString 減少方向で最も近いグループアドレスを持つネイバーを指定します。 NEXT_INCREASING 増加方向で最も近いグループアドレスを持つネイバーを指定します。nextIncreasingString 増加方向で最も近いグループアドレスを持つネイバーを指定します。 SharedObject SharedObject クラスは、ユーザーのコンピューターまたはサーバー上で限定された量のデータを読み込みおよび格納するために使用されます。flash.events:EventDispatcher SharedObject クラスは、ユーザーのコンピューターまたはサーバー上で限定された量のデータを読み込みおよび格納するために使用されます。共有オブジェクトを使用すると、ローカルコンピューターまたはリモートサーバー上に永続化されているクライアント SWF ファイルとオブジェクト間で、リアルタイムでデータを共有することができます。ローカル共有オブジェクトはブラウザーのクッキーに似ており、リモート共有オブジェクトはリアルタイムデータ転送デバイスに似ています。リモート共有オブジェクトを使用するには、Adobe Flash Media Server が必要です。

共有オブジェクトを使用して次の操作を行います。

  • ローカルの永続性を維持する。共有オブジェクトを使用するにはこれが最も簡単な方法で、Flash Media Server は使用しません。例えば、SharedObject.getLocal() を呼び出して、アプリケーション内にメモリ付き電卓などの共有オブジェクトを作成することができます。ユーザーが電卓を閉じると、Flash Player により共有オブジェクトの最後の値がユーザーのコンピューターに保存されます。次に電卓を実行すると、電卓に前の値が表示されます。電卓アプリケーションを閉じる前に共有オブジェクトのプロパティを null に設定すると、次にアプリケーションを起動したときに、電卓にいずれの値も表示されません。その他のローカルの永続性の管理例としては、複雑な Web サイトのユーザー環境設定やその他のデータ(ニュースサイト上でユーザーが閲覧した記事のレコードなど)のトラッキングがあります。この情報をトラッキングすると、新規で未読の記事でなく、既に閲覧された記事を表示できます。 この情報をユーザーのコンピューターに保存すると、サーバーの負荷を削減できます。
  • Flash Media Server にデータを格納および共有する。サーバー上の共有オブジェクトには、他のクライアントが取得可能なデータを格納できます。例えば、SharedObject.getRemote() を呼び出して、電話帳などのリモート共有オブジェクトを作成します。このオブジェクトは、サーバー上に永続化されます。あるクライアントが共有オブジェクトを変更すると、現在そのオブジェクトに接続しているクライアントおよび後でそのオブジェクトに接続するクライアントのすべてが、変更されたデータを利用できます。オブジェクトがローカルに永続化され、サーバーに接続されていないときにクライアントがデータを変更すると、次回クライアントがリモート共有オブジェクトに接続するときに、データがそのオブジェクトにコピーされます。
  • リアルタイムでデータを共有する。共有オブジェクトは、複数のクライアント間でリアルタイムにデータを共有できます。例えば、チャットルームに接続しているユーザーのリストを格納するリモート共有オブジェクトを開くことができます。これはオブジェクトに接続しているすべてのクライアントに表示することができます。ユーザーがチャットルームに入退室するときに、オブジェクトが更新され、オブジェクトに接続しているすべてのクライアントに、更新後のチャットルームユーザーの一覧が表示されます。

ローカル共有オブジェクトを作成するには、SharedObject.getLocal() を呼び出します。リモート共有オブジェクトを作成するには、SharedObject.getRemote() を呼び出します。

アプリケーションを閉じると、共有オブジェクトが保存されます。つまり、ディスクに書き込まれます。また、flush() メソッドを呼び出して、データを明示的にディスクに書き込むこともできます。

ローカルディスク領域についての考慮事項。 ローカル共有オブジェクトには、アプリケーションを設計する際に考慮が必要な、いくつかの制限があります。SWF ファイルでローカル共有オブジェクトの書き込みが許可されない場合があります。ローカル共有オブジェクトに格納されているデータが、わからないうちに削除される場合もあります。Flash Player のユーザーは、個々のドメインまたはすべてのドメインで使用できるディスク領域を管理できます。ユーザーが使用可能なディスク領域の量を減らすと、一部のローカル共有オブジェクトが削除される可能性があります。Flash Player のユーザーには、サードパーティードメイン(現在のブラウザーのアドレスバーにあるドメイン以外のドメイン)によるローカル共有オブジェクトの読み取りまたは書き込みを防止できるプライバシーコントロール機能もあります。

注意:リモートサーバーではなくローカルコンピューターに格納および実行される SWF ファイルは、常にサードパーティーの共有オブジェクトをディスクに書き込むことができます。サードパーティーの共有オブジェクトの詳細については、Flash Player のヘルプの「グローバルストレージ設定パネル」を参照してください。

ディスク領域の量とユーザーのプライバシーコントロールに関する失敗についてチェックすることをお勧めします。getLocal() および flush() の呼び出し時にこれらのチェックを実行します。

  • SharedObject.getLocal() ユーザーがサードパーティーの共有オブジェクトを無効にしていて、SWF ファイルのドメインとブラウザーのアドレスバーに表示されるドメインが一致しない場合など、このメソッドの呼び出しに失敗すると、Flash Player は例外をスローします。
  • SharedObject.flush() このメソッドの呼び出しに失敗すると、Flash Player は例外をスローします。呼び出しに成功すると、SharedObjectFlushStatus.FLUSHED を返します。追加の記憶域が必要な場合は、SharedObjectFlushStatus.PENDING を返します。Flash Player はローカルに保存する情報用の記憶域を増加するようにユーザーに要求します。したがって、netStatus イベントは保存に失敗したか成功したかを示す情報オブジェクトと一緒に送出されます。

SWF ファイルでローカル共有オブジェクトを作成または変更しようとする場合、SWF ファイルの幅が最低でも 215 ピクセル、高さが最低でも 138 ピクセルあることを確認してください。このサイズは、ダイアログボックス(ローカル共有オブジェクトの記憶域制限を増やすかどうかをユーザーに確認する)を表示するための最小の大きさです。SWF ファイルがこの大きさよりも小さく、記憶域制限を増やす必要がある場合、SharedObject.flush() は失敗し、SharedObjectFlushedStatus.PENDING を返し、netStatus イベントを送出します。

リモート共有オブジェクト。 Flash Media Server では、アプリケーションに接続しているすべてのクライアントがリアルタイムで共有する、リモート共有オブジェクトを作成および使用できます。あるクライアントがリモート共有オブジェクトのプロパティを変更すると、接続しているすべてのクライアントのプロパティが変更されます。リモート共有オブジェクトを使用すると、例えば、マルチプレーヤーゲームのユーザーなどのクライアントを同期できます。

各リモート共有オブジェクトに data プロパティがあります。これは、データを格納するプロパティを持つオブジェクトです。setProperty() を呼び出して、データオブジェクトのプロパティを変更します。サーバーは、プロパティを更新し、sync イベントを送出し、接続しているクライアントにプロパティを返送します。

クライアント、サーバー、またはその両方のリモート共有オブジェクトを永続化できます。デフォルトでは、サイズが最大 100K の永続的なリモート共有オブジェクトがローカルに保存されます。大きなオブジェクトを保存しようとすると、ローカル記憶領域ダイアログボックスが表示されます。このダイアログボックスでは、ユーザーが共有オブジェクト用のローカル記憶域の使用を許可または拒否できます。ステージのサイズは必ず 215 × 138 ピクセル以上に設定してください。これは、ダイアログボックスを表示するために必要な最小サイズです。

ユーザーが「許可」をクリックすると、サーバーに共有オブジェクトが保存され、netStatus イベントが送出されます。このときの code プロパティは SharedObject.Flush.Success です。ユーザーが「拒否」を選択すると、サーバーに共有オブジェクトは保存されず、netStatus イベントが送出されます。このときの code プロパティは SharedObject.Flush.Failed です。

次のコードは、ID "application-name" を使用して、共有オブジェクトを作成(以降の実行では取得)します。「保存」ボタンがクリックされると、saveValue() メソッドが savedValue というプロパティを SharedObject オブジェクトの data プロパティに保存しようとします。Flash Player がデータを保存する許可を求める必要がある場合、ユーザーが許可を与えるか拒否すると、onFlushStatus() メソッドが呼び出されます。「クリア」ボタンがクリックされると、clearValue() メソッドが savedValue に保存された値を削除します。次に SWF ファイルがロードされたときに取得される値は、undefined になります。 package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import flash.net.SharedObject; import flash.net.SharedObjectFlushStatus; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; public class SharedObjectExample extends Sprite { private var mySo:SharedObject; public function SharedObjectExample() { buildUI(); saveBtn.addEventListener(MouseEvent.CLICK, saveValue); clearBtn.addEventListener(MouseEvent.CLICK, clearValue); mySo = SharedObject.getLocal("application-name"); output.appendText("SharedObject loaded...\n"); output.appendText("loaded value: " + mySo.data.savedValue + "\n\n"); } private function saveValue(event:MouseEvent):void { output.appendText("saving value...\n"); mySo.data.savedValue = input.text; var flushStatus:String = null; try { flushStatus = mySo.flush(10000); } catch (error:Error) { output.appendText("Error...Could not write SharedObject to disk\n"); } if (flushStatus != null) { switch (flushStatus) { case SharedObjectFlushStatus.PENDING: output.appendText("Requesting permission to save object...\n"); mySo.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); break; case SharedObjectFlushStatus.FLUSHED: output.appendText("Value flushed to disk.\n"); break; } } output.appendText("\n"); } private function clearValue(event:MouseEvent):void { output.appendText("Cleared saved value...Reload SWF and the value should be \"undefined\".\n\n"); delete mySo.data.savedValue; } private function onFlushStatus(event:NetStatusEvent):void { output.appendText("User closed permission dialog...\n"); switch (event.info.code) { case "SharedObject.Flush.Success": output.appendText("User granted permission -- value saved.\n"); break; case "SharedObject.Flush.Failed": output.appendText("User denied permission -- value not saved.\n"); break; } output.appendText("\n"); mySo.removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); } // UI elements private var inputLbl:TextField; private var input:TextField; private var output:TextField; private var saveBtn:Sprite; private var clearBtn:Sprite; private function buildUI():void { // input label inputLbl = new TextField(); addChild(inputLbl); inputLbl.x = 10; inputLbl.y = 10; inputLbl.text = "Value to save:"; // input TextField input = new TextField(); addChild(input); input.x = 80; input.y = 10; input.width = 100; input.height = 20; input.border = true; input.background = true; input.type = TextFieldType.INPUT; // output TextField output = new TextField(); addChild(output); output.x = 10; output.y = 35; output.width = 250; output.height = 250; output.multiline = true; output.wordWrap = true; output.border = true; output.background = true; // Save button saveBtn = new Sprite(); addChild(saveBtn); saveBtn.x = 190; saveBtn.y = 10; saveBtn.useHandCursor = true; saveBtn.graphics.lineStyle(1); saveBtn.graphics.beginFill(0xcccccc); saveBtn.graphics.drawRoundRect(0, 0, 30, 20, 5, 5); var saveLbl:TextField = new TextField(); saveBtn.addChild(saveLbl); saveLbl.text = "Save"; saveLbl.selectable = false; // Clear button clearBtn = new Sprite(); addChild(clearBtn); clearBtn.x = 230; clearBtn.y = 10; clearBtn.useHandCursor = true; clearBtn.graphics.lineStyle(1); clearBtn.graphics.beginFill(0xcccccc); clearBtn.graphics.drawRoundRect(0, 0, 30, 20, 5, 5); var clearLbl:TextField = new TextField(); clearBtn.addChild(clearLbl); clearLbl.text = "Clear"; clearLbl.selectable = false; } } }
flush()getLocal()netStatussync リモート共有オブジェクトがサーバーによって更新されるときに送出されます。flash.events.SyncEvent.SYNCflash.events.SyncEvent リモート共有オブジェクトがサーバーによって更新されるときに送出されます。 getRemote()netStatus SharedObject インスタンスが、そのステータスまたはエラーの状況をレポートするときに送出されます。flash.events.NetStatusEvent.NET_STATUSflash.events.NetStatusEvent SharedObject インスタンスが、そのステータスまたはエラーの状況をレポートするときに送出されます。netStatus イベントには、info プロパティが含まれます。このプロパティは、接続試行が成功したかどうかや共有オブジェクトのローカルディスクへの書き込みが成功したかどうかなど、イベントに関する特定の情報を含む情報オブジェクトです。 flash.events.NetStatusEvent.infoasyncError 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。flash.events.AsyncErrorEvent.ASYNC_ERRORflash.events.AsyncErrorEvent 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。 clear ローカル共有オブジェクトの場合、すべてのデータを消去し、共有オブジェクトをディスクから削除します。 ローカル共有オブジェクトの場合、すべてのデータを消去し、共有オブジェクトをディスクから削除します。共有オブジェクトへの参照はアクティブなままで、そのデータプロパティが削除されます。

Flash Media Server で使用されるリモート共有オブジェクトの場合、clear() はオブジェクトを切断し、すべてのデータを削除します。共有オブジェクトがローカルに永続化されている場合、このメソッドによって共有オブジェクトもディスクから削除されます。共有オブジェクトへの参照はアクティブなままで、そのデータプロパティが削除されます。

次のコードは、hostName の値を ID として使用して、SharedObject オブジェクトを作成(以降の実行では取得)します。username というプロパティが、SharedObject オブジェクトのデータプロパティに追加されます。最後に clear() メソッドが呼び出され、データオブジェクトに追加されたすべての情報(この場合は、username という単一のプロパティ)が消去されます。 package { import flash.net.SharedObject; public class SharedObject_clear { private var hostName:String = "yourDomain"; private var username:String = "yourUsername"; public function SharedObject_clear() { var mySo:SharedObject = SharedObject.getLocal(hostName); if(mySo.data.username == null) { mySo.data.username = username; trace("set: " + mySo.data.username); // yourUsername } else { mySo.clear(); trace("cleared: " + mySo.data.username); // undefined } } } }
close リモート共有オブジェクトとサーバーとの間の接続を閉じます。 リモート共有オブジェクトとサーバーとの間の接続を閉じます。リモート共有オブジェクトがローカルに永続化されている場合、ユーザーはこのメソッドの呼び出し後に、オブジェクトのローカルコピーを変更できます。ローカルオブジェクトの変更は、次回にユーザーがリモート共有オブジェクトに接続したときに、サーバーに送られます。 connect 指定した NetConnection オブジェクトを介して、サーバー上のリモート共有オブジェクトに接続します。Flash Player は、指定されたリモート共有オブジェクトに接続できません。NetConnection インスタンスが有効であり接続されていること、リモート共有オブジェクトがサーバーに正常に作成されたことを確認してください。 ErrorErrormyConnectionflash.net:NetConnectionFlash Media Server との通信に使用する NetConnection オブジェクトなど、RTMP(Real-Time Messaging Protocol)を使用する NetConnection オブジェクト。 paramsStringnullサーバー上のリモート共有オブジェクトに渡すメッセージを定義する文字列。Flash Media Server では使用できません。 指定した NetConnection オブジェクトを介して、サーバー上のリモート共有オブジェクトに接続します。このメソッドは、getRemote() を呼び出した後に使用します。接続に成功すると、sync イベントが送出されます。

リモート共有オブジェクトに対する操作を行う前に、try..catch..finally ステートメントを使用してエラーが発生していないかどうかを確認します。次に、sync イベントを監視して処理した後で、共有オブジェクトを変更します。sync イベントを送出する前にローカルで行った変更は失われる場合があります。

次の例は、connect() メソッドを呼び出して、リモート共有オブジェクトに接続します。

var myRemoteSO:SharedObject = SharedObject.getRemote("mo", myNC.uri, false); myRemoteSO.connect(myNC);
getRemote()synctry..catch..finallyNetConnection
flush ローカルに永続化された共有オブジェクトを直ちにローカルファイルに書き込みます。Flash Player は、共有オブジェクトをディスクに書き込むことができません。このエラーは、ユーザーがこのドメインからのオブジェクトに対して永続的にローカル情報を保存することを許可されていない場合に発生する可能性があります。

注意:サードパーティードメイン(現在のブラウザーのアドレスバーにあるドメイン以外のドメイン)の共有オブジェクトのディスクへの書き込みを許可していない場合でも、ローカルコンテンツでは、常にサードパーティードメインの共有オブジェクトをディスクに書き込むことができます。

ErrorError
次のいずれかの値になります。
  • SharedObjectFlushStatus.PENDING:ユーザーはこのドメインからのオブジェクトに対してローカル情報記憶域を許可していますが、割り当てられた領域がオブジェクトを保存するのに十分でありません。Flash Player はユーザーに領域を増やすように要求します。共有オブジェクトを保存するときにそのオブジェクト用の領域を増加できるようにするには、SharedObjectFlushStatus.PENDING 戻り値を無効にして、minDiskSpace の値を渡します。
  • SharedObjectFlushStatus.FLUSHED:共有オブジェクトはローカルディスク上のファイルに正常に書き込まれました。
String
minDiskSpaceint0このオブジェクトに割り当てる必要のある最小ディスク領域(バイト単位)です。
ローカルに永続化された共有オブジェクトを直ちにローカルファイルに書き込みます。このメソッドを使用しない場合、共有オブジェクトがファイルに書き込まれるのは、共有オブジェクトセッションの終了時となります。つまり、SWF ファイルが閉じられるとき、共有オブジェクトが参照されなくなってガベージコレクションされるとき、SharedObject.clear() または SharedObject.close() が呼び出されたとき、のいずれかの時点です。

このメソッドが SharedObjectFlushStatus.PENDING を返した場合、このドメインからのオブジェクトを保存するためのディスク領域を増やすようユーザーに求めるダイアログボックスが表示されます。共有オブジェクトが保存されるときはそのための領域を大きくして PENDING が返されないようにするには、minDiskSpace に値を指定します。Flash Player は、ファイルを書き込む際、現在のサイズの共有オブジェクトを保存するのに必要な領域ではなく、minDiskSpace に指定されたバイト数を確認します。

例えば、共有オブジェクトのサイズが、最初は小さくても最大 500 バイトまで大きくなると予想される場合には、minDiskSpace に 500 を指定します。ユーザーに対して共有オブジェクトへのディスク領域の割り当てを求める際には、500 バイトの領域が要求されます。要求されたディスク領域をユーザーが割り当てた場合、それ以降、オブジェクトのサイズが 500 バイトを超えない限り、オブジェクトを保存する際に追加のディスク領域を要求されることはありません。

ユーザーがこのダイアログボックスに応答すると、このメソッドがもう一度呼び出されます。netStatus イベントが送出されます。このときの code プロパティは SharedObject.Flush.Success または SharedObject.Flush.Failed です。

次のコードは、hostName の値を ID として使用して、SharedObject オブジェクトを作成(以降の実行では取得)します。username というプロパティが、SharedObject オブジェクトのデータプロパティに追加されます。flush() メソッドが呼び出された後、ストリング pending あるいはブール値の true または false が返されなかったかチェックされます。すべてのオープン SharedObject インスタンスは、Flash Player の現在のインスタンスを閉じるたびに自動的に保存されます。 package { import flash.net.SharedObject; public class SharedObject_flush { private var hostName:String = "yourDomain"; private var username:String = "yourUsername"; public function SharedObject_flush() { var mySo:SharedObject = SharedObject.getLocal(hostName); mySo.data.username = username; var flushResult:Object = mySo.flush(); trace("flushResult: " + flushResult); trace(mySo.data.username); // yourUsername } } }
clear()
getLocal 現在のクライアントだけが利用できるローカル永続共有オブジェクトへの参照を返します。Flash Player は、何らかの理由で共有オブジェクトを作成できません。サードパーティーの Flash コンテンツによる永続共有オブジェクトの作成と保存が禁止されている(ローカルコンテンツに適用されない)場合、このエラーが発生することがあります。ユーザーは、http://www.adobe.com/support/documentation/jp/flashplayer/help/settings_manager03.html にある設定マネージャーのグローバルストレージ設定パネルでサードパーティーの永続共有オブジェクトを禁止できます。 ErrorErrorローカルに永続化され、現在のクライアントでのみ利用できる共有オブジェクトへの参照です。共有オブジェクトを作成できない場合、または共有オブジェクトが見つからない場合(localPath に指定したディレクトリが存在しない場合など)、このメソッドは例外をスローします。 flash.net:SharedObjectnameStringオブジェクト名です。名前にはスラッシュ(/)を含めます。例えば、work/addresses は有効な名前です。共有オブジェクト名にスペース、および以下の文字を含めることはできません。
  ~ % & \ ; : " ' , < > ? # 
  
localPathStringnull共有オブジェクトを作成した SWF ファイルの完全パスまたは部分パスです。これによって、共有オブジェクトをローカルに保存する場所が決まります。このパラメーターを指定しない場合は、完全パスが使用されます。 secureBooleanfalseこの共有オブジェクトへのアクセスが HTTPS 接続経由で配布された SWF ファイルに限定されているかどうかを判別します。SWF ファイルが HTTPS 接続経由で配信されている場合、このパラメーターの値には次の効果があります。
  • このパラメーターを true に設定すると、Flash Player は新しいセキュアな共有オブジェクトを作成するか、既存のセキュアな共有オブジェクトの参照を取得します。このセキュアな共有オブジェクトに対する読み取りまたは書き込みは、HTTPS で配信された SWF ファイルによってのみ行えます。このとき SWF ファイルは SharedObject.getLocal() を、secure パラメーターを true に設定して呼び出します。
  • このパラメーターが false に設定されている場合、Flash Player は共有オブジェクトを新しく作成するか、または HTTPS 以外の接続で配信された SWF ファイルから読み込みまたは書き込みのできる既存の共有オブジェクトに対する参照を取得します。

SWF ファイルが HTTPS 以外の接続で配信された場合、このパラメーターを true に設定しようとすると、新しい共有オブジェクトの作成(または作成済みのセキュアな共有オブジェクトへのアクセス)は失敗し、null が返されます。このパラメーターの値にかかわらず、作成された共有オブジェクトには、当該ドメインで使用可能な合計ディスク容量の枠が適用されます。

次の図に、secure パラメーターの使用方法を示します。

現在のクライアントだけが利用できるローカル永続共有オブジェクトへの参照を返します。共有オブジェクトがまだ存在しない場合は、このメソッドにより作成されます。getLocal() に渡された値が無効である場合、または呼び出しに失敗した場合、Flash Player は例外をスローします。

次のコードでは、返された共有オブジェクトの参照の変数への割り当て方法を示します。

var so:SharedObject = SharedObject.getLocal("savedData");

注意:ユーザーがこのドメイン用のローカル記憶域を許可していない場合は、localPath の値が指定されていても、オブジェクトはローカルに保存されません。ただし、ローカルコンテンツは例外です。サードパーティードメイン(現在のブラウザーのアドレスバーにあるドメイン以外のドメイン)の共有オブジェクトのディスクへの書き込みを許可していない場合でも、ローカルコンテンツでは、常にサードパーティードメインの共有オブジェクトをディスクに書き込むことができます。

名前のコンフリクトを避けるために、共有オブジェクトを作成している SWF ファイルの位置が考慮されます。例えば、www.myCompany.com/apps/stockwatcher.swf にある SWF ファイルが portfolio という名前の共有オブジェクトを作成した場合、この共有オブジェクトは、www.yourCompany.com/photoshoot.swf にある SWF ファイルが作成した portfolio という別のオブジェクトとは競合しません。これは、この 2 つの SWF ファイルが異なるディレクトリに置かれているからです。

localPath パラメーターはオプションですが、慎重に使用する必要があります。特に、他の SWF ファイルが共有オブジェクトにアクセスしなければならない場合には注意してください。共有オブジェクトのデータが、別の場所に移動されない 1 つの SWF ファイルに固有のものである場合は、デフォルト値を使用することをお勧めします。他の SWF ファイルが共有オブジェクトにアクセスする必要がある場合、または共有オブジェクトを作成する SWF ファイルを後で移動する場合には、このパラメーターの値により、共有オブジェクトへのアクセスに影響が生じます。例えば、localPath をデフォルト値である SWF ファイルの完全パスに設定して共有オブジェクトを作成すると、他の SWF ファイルはその共有オブジェクトにアクセスできません。元の SWF ファイルを後で別の場所に移動すると、その SWF ファイルからも、共有オブジェクトに格納されているデータにアクセスできなくなります。

共有オブジェクトへのアクセスを誤って制限してしまうのを避けるには、localpath パラメーターを使用します。最も制限の緩やかな方法は、localPath/(スラッシュ)に設定する方法です。ドメインのすべての SWF ファイルが共有オブジェクトを利用できますが、ドメイン内の他の共有オブジェクトとの名前のコンフリクトが起こりやすくなります。より制限の厳しい方法は、localPath に SWF ファイルへの完全パス内のフォルダー名を付加する方法です。例えば、www.myCompany.com/apps/stockwatcher.swf にある SWF ファイルで作成された portfolio 共有オブジェクトの場合は、localPath パラメーターを //apps、または /apps/stockwatcher.swf に設定できます。アプリケーションに最適な柔軟性を提供できる方法がどれかを判断する必要があります。

このメソッドを使用するときは、次のセキュリティモデルを考慮してください。

  • サンドボックスの境界を越えて共有オブジェクトにアクセスすることはできません。
  • Flash Player の設定ダイアログボックスまたは設定マネージャーを使用して、共有オブジェクトへのアクセスを制限できます。デフォルトでは、アプリケーションでドメインごとに最大 100 KB の共有オブジェクトを作成できます。管理者および一般ユーザーは、ファイルシステムへの書き込み機能に制限を適用することもできます。

ローカルファイル(ローカルにインストールされた SWF ファイルまたは EXE ファイル)として再生する SWF ファイルコンテンツをパブリッシュし、複数のローカル SWF ファイルから特定の共有オブジェクトにアクセスする必要があるとします。この状況では、ローカルファイルでは共有オブジェクトの保存に 2 つの異なる場所が使用されることがあるので注意してください。使用されるドメインは、共有オブジェクトを作成したローカルファイルに付与されるセキュリティ許可によって変わります。ローカルファイルには、次の 3 つの異なる許可レベルを設定できます。

  1. ローカルファイルシステムのみに対するアクセス
  2. ネットワークのみに対するアクセス
  3. ネットワークとローカルファイルシステムの両方に対するアクセス

ローカルファイルシステムへのアクセス権を持つローカルファイル(レベル 1 または 3)は、共有オブジェクトを 1 つの場所に格納します。ローカルファイルシステムへのアクセス権を持たないローカルファイル(レベル 2)は、共有オブジェクトを別の場所に格納します。

SWF ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含んでいる HTML ページに allowNetworking パラメーター(object タグおよび embed タグのパラメーター)を設定します。

詳細については、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

getRemote 複数のクライアントがアクセスできる、Flash Media Server 上の共有オブジェクトへの参照が返されます。Flash Player は、共有オブジェクトを作成できません、または見つけられません。これは、remotePath パラメーターと persistence パラメーターに、存在しないパスが指定されていると起こることがあります。 ErrorError複数クライアントでの共有ができるオブジェクトへの参照です。 flash.net:SharedObjectnameStringリモート共有オブジェクトの名前です。名前にはスラッシュ(/)を含めることができます。例えば、work/addresses は有効な名前です。共有オブジェクト名にスペース、および以下の文字を含めることはできません。
    ~ % & \ ; :  " ' , > ? ? #
remotePathStringnull共有オブジェクトが保存されるサーバーの URIです。この URI は、connect() メソッドに渡された NetConnection オブジェクトの URI と同一である必要があります。 persistenceObjectfalse共有オブジェクトのデータプロパティの属性が、どこで永続的になっているか(ローカル、リモート、またはその両方)を指定します。このパラメーターでは、共有オブジェクトをローカルで保存する場合の場所も指定できます。有効な値は次のとおりです。
  • false 値は、共有オブジェクトがクライアントまたはサーバーで永続的ではないことを指定します。
  • true 値は、共有オブジェクトがサーバー上のみで永続的であることを指定します。
  • 共有オブジェクトへのローカルの完全パスまたは部分パスは、共有オブジェクトがクライアントとサーバー上で永続的であることを示します。クライアントでは、共有オブジェクトは指定されたパスに保存されます。サーバー上では、アプリケーションディレクトリ内のサブディレクトリに保存されます。

注意:ユーザーがこのドメイン用のローカル記憶域を許可していない場合は、永続性のローカルパスが指定されていても、オブジェクトはローカルに保存されません。詳細については、クラスの説明を参照してください。

secureBooleanfalseこの共有オブジェクトへのアクセスが HTTPS 接続経由で配布された SWF ファイルに限定されているかどうかを判別します。詳細については、secure パラメーター(getLocal メソッドエントリ)の説明を参照してください。
複数のクライアントがアクセスできる、Flash Media Server 上の共有オブジェクトへの参照が返されます。リモート共有オブジェクトがまだ存在しない場合は、このメソッドにより作成されます。

次に示すように、リモート共有オブジェクトを作成するために getRemote() を呼び出し、connect() を呼び出してリモート共有オブジェクトをサーバーに接続します。

var nc:NetConnection = new NetConnection(); nc.connect("rtmp://somedomain.com/applicationName"); var myRemoteSO:SharedObject = SharedObject.getRemote("mo", nc.uri, false); myRemoteSO.connect(nc);

共有オブジェクトのローカルおよびリモートコピーを同期させるには、sync イベントを監視して処理します。このオブジェクトを共有するすべてのクライアントは、name パラメーターと remotePath パラメーターに同じ値を渡す必要があります。

現在のクライアントでのみ利用できる共有オブジェクトを作成するには、SharedObject.getLocal() を使用します。

connect()getLocal()
send リモート共有オブジェクトに接続しているすべてのクライアント(メッセージを送信したクライアントも含む)に、メッセージをブロードキャストします。arguments複数の引数:メッセージを識別するストリング、共有オブジェクトに割り当てる複数のハンドラー関数名、および任意のデータ型のオプションのパラメーターです。ハンドラー名の深さは 1 レベルのみで(つまり、親子形式を取ることができません)、共有オブジェクトに相対します。引数は直列化され、接続を介して送信されます。受信側のハンドラーは同じ順番でそれらの引数を受け取ります。パラメーターが循環オブジェクト(循環するリンクされたリストなど)である場合、シリアライザは参照を正しく処理します。

注意:関数名には予約語を使用しないでください。例えば、myRemoteSO.send("close") は失敗します。

リモート共有オブジェクトに接続しているすべてのクライアント(メッセージを送信したクライアントも含む)に、メッセージをブロードキャストします。メッセージを処理して応答するには、共有オブジェクトに関連付けるコールバック関数を作成します。
setDirty 共有オブジェクトのプロパティの値が変更されたことをサーバーに通知します。propertyNameString変更されたプロパティの名前です。 共有オブジェクトのプロパティの値が変更されたことをサーバーに通知します。このメソッドは、変更されたことを示す dirty としてプロパティをマークします。

SharedObject.setProperty() を呼び出して、共有オブジェクトのプロパティを作成します。

SharedObject.setProperty() メソッドは、setDirty() を実装します。ほとんどの場合、例えばプロパティの値がストリングや数値のようなプリミティブ型のときは、setProperty() を呼び出すことが可能で、setDirty() を呼び出す必要はありません。ただし、プロパティの値が独自のプロパティを持つオブジェクトである場合は、setDirty() を呼び出してオブジェクト内の値が変更された日時を示します。

SharedObject.data(クライアント側プロパティ)setProperty()
setProperty 共有オブジェクトのプロパティの値を更新し、プロパティの値が変更されたことをサーバーに通知します。propertyNameString共有オブジェクトのプロパティの名前です。 valueObjectnullプロパティの値(ActionScript オブジェクト)です。プロパティを削除する場合は null を指定します。 共有オブジェクトのプロパティの値を更新し、プロパティの値が変更されたことをサーバーに通知します。setProperty() メソッドは、プロパティを changed または dirty として明示的にマークします。

リモート共有オブジェクトの詳細については、Flash Media Server のマニュアルを参照してください。

注意:SharedObject.setProperty() メソッドには、setDirty() メソッドが実装されています。ほとんどの場合、例えばプロパティの値がストリングや数値のようなプリミティブ型のときは、setProperty() を使用し、setDirty を使用することはありません。ただし、プロパティの値が独自のプロパティを持つオブジェクトである場合は、setDirty() を使用してオブジェクト内の値が変更された日時を示します。一般的には、setProperty() を呼び出して、setDirty() は使用しないことをお勧めします。setProperty() は値が変更されたときだけプロパティ値を更新しますが、setDirty() はサブスクライブしているすべてのクライアントを強制的に同期させるからです。

SharedObject.data(クライアント側プロパティ)
client コールバックメソッドが呼び出されるオブジェクトを示します。Objectclient プロパティは、null 以外のオブジェクトに設定する必要があります。 TypeErrorTypeError コールバックメソッドが呼び出されるオブジェクトを示します。デフォルトのオブジェクトは this です。client プロパティを別のオブジェクトに設定し、コールバックメソッドをその別のオブジェクトで呼び出すことができます。 data オブジェクトの data プロパティに割り当てられた属性のコレクションです。これらの属性は共有および保存することができます。Object オブジェクトの data プロパティに割り当てられた属性のコレクションです。これらの属性は共有および保存することができます。それぞれの属性は、ActionScript または JavaScript タイプのオブジェクトです。例えば、Array、Number、Boolean、ByteArray、XML などです。次のコードでは、共有オブジェクトの各種属性に値を割り当てています。 var items_array:Array = new Array(101, 346, 483); var currentUserIsAdmin:Boolean = true; var currentUserName:String = "Ramona"; var my_so:SharedObject = SharedObject.getLocal("superfoo"); my_so.data.itemNumbers = items_array; my_so.data.adminPrivileges = currentUserIsAdmin; my_so.data.userName = currentUserName; for (var prop in my_so.data) { trace(prop+": "+my_so.data[prop]); }

永続的なオブジェクトの場合は、共有オブジェクトの data プロパティのすべての属性が保存されます。また共有オブジェクトには次の情報が含まれています。

userName: Ramona adminPrivileges: true itemNumbers: 101,346,483

注意:共有オブジェクトの data プロパティに、so.data = someValue のように値を直接割り当てないようにしてください。このような割り当ては無視されます。

ローカル共有オブジェクトの属性を削除するには、delete so.data.attributeName というコードを使用します。ローカル共有オブジェクトの属性を null または undefined に設定しても、属性は削除されません。

共有オブジェクトのプライベート値(オブジェクトの使用中にそのクライアントインスタンスでのみ利用でき、閉じるときにオブジェクトと共に保存されない値)を作成するには、data 以外の名前のプロパティを作成して、その値を保存します。次に例を示します。

var my_so:SharedObject = SharedObject.getLocal("superfoo"); my_so.favoriteColor = "blue"; my_so.favoriteNightClub = "The Bluenote Tavern"; my_so.favoriteSong = "My World is Blue"; for (var prop in my_so) { trace(prop+": "+my_so[prop]); }

共有オブジェクトには次のデータが含まれます。

favoriteSong: My World is Blue favoriteNightClub: The Bluenote Tavern favoriteColor: blue data: [object Object]

サーバーで使用されるリモート共有オブジェクトの場合、共有オブジェクトに接続しているすべてのクライアントが data プロパティのすべての属性を利用可能で、そのオブジェクトが永続化されている場合、すべての属性が保存されます。あるクライアントが属性の値を変更すると、すべてのクライアントに新しい値が表示されます。

getLocal()
defaultObjectEncoding SWF ファイルで作成されたすべてのローカル共有オブジェクトのデフォルトのオブジェクトエンコード(AMF バージョン)です。uint SWF ファイルで作成されたすべてのローカル共有オブジェクトのデフォルトのオブジェクトエンコード(AMF バージョン)です。ローカル共有オブジェクトがディスクに書き込まれるとき、SharedObject.defaultObjectEncoding プロパティは、使用する必要のある Action Message Format バージョンを示します。ActionScript 3.0 フォーマット(AMF3)または ActionScript 1.0 または 2.0 フォーマット(AMF0)です。

ローカル共有オブジェクトとリモート共有オブジェクトのエンコードの違いを含む、オブジェクトエンコードの詳細については、objectEncoding プロパティの説明を参照してください。

SharedObject.defaultObjectEncoding のデフォルト値は、ActionScript 3.0 フォーマット AMF3 を使用するように設定されています。ActionScript 2.0 または 1.0 SWF ファイルで読み込めるローカル共有オブジェクトの書き込みが必要な場合は、ローカル共有オブジェクトを作成する前に、スクリプトの先頭部分で SharedObject.defaultObjectEncoding を設定して、ActionScript 1.0 または ActionScript 2.0 フォーマット flash.net.ObjectEncoding.AMF0 を使用するようにします。それ以降に作成されるすべてのローカル共有オブジェクトで、AMF0 エンコーディングが使用され、古いコンテンツとやり取りできるようになります。ローカル共有オブジェクトを作成した後は、既存のローカル共有オブジェクトの objectEncoding 値を SharedObject.defaultObjectEncoding を設定して変更することはできません。

SWF ファイルで作成したすべての共有オブジェクトに対してではなく、オブジェクトごとにオブジェクトエンコードを設定するには、ローカル共有オブジェクトの objectEncoding プロパティを設定します。

objectEncoding プロパティObjectEncoding クラス
objectEncoding この共有オブジェクトのオブジェクトエンコード(AMF バージョン)です。uintリモート共有オブジェクトの objectEncoding プロパティの値を設定しようとしました。このプロパティは、関連付けられた NetConnection インスタンスにより値が決定されるため、リモート共有オブジェクトでは読み取り専用になります。 ReferenceErrorReferenceError この共有オブジェクトのオブジェクトエンコード(AMF バージョン)です。ローカル共有オブジェクトがディスクに書き込まれるとき、objectEncoding プロパティは、使用する必要のある Action Message Format バージョンを示します。ActionScript 3.0 フォーマット(AMF3)または ActionScript 1.0 または 2.0 フォーマット(AMF0)です。

オブジェクトエンコードは、共有オブジェクトがローカルかリモートかによって、処理方法が異なります。

  • ローカル共有オブジェクト。ローカル共有オブジェクトの objectEncoding プロパティの値を取得または設定できます。objectEncoding の値は、このローカル共有オブジェクトの書き込み に使用されるフォーマットに影響します。このローカル共有オブジェクトを ActionScript 2.0 または 1.0 SWF ファイルで読み込めなければならない場合は、objectEncodingObjectEncoding.AMF0 に設定します。オブジェクトエンコードが AMF3 を書き込むように設定されていても、Flash Player で AMF0 ローカル共有オブジェクトを読み込むことができます。つまり、このプロパティのデフォルト値(ObjectEncoding.AMF3)を使用すれば、ActionScript 2.0 または 1.0 SWF ファイルで作成した共有オブジェクトも引き続き SWF ファイルで読み込むことができます。
  • リモート共有オブジェクト。サーバーに接続されているときは、リモート共有オブジェクトは、関連付けられた NetConnection インスタンス(リモート共有オブジェクトへの接続に使用されるインスタンス)の objectEncoding 設定を継承します。サーバーに接続されていないときは、リモート共有オブジェクトは、関連付けされた NetConnection インスタンスから defaultObjectEncoding 設定を継承します。リモート共有オブジェクトの objectEncoding プロパティの値は NetConnection インスタンスにより決定されるため、このプロパティはリモート共有オブジェクトでは読み取り専用になります。
defaultObjectEncodingflash.net.ObjectEncoding
size 共有オブジェクトの現在のサイズ(バイト数)です。uint 共有オブジェクトの現在のサイズ(バイト数)です。

すべてのデータプロパティを順に確認することによって、共有オブジェクトのサイズが計算されます。オブジェクトが持つデータプロパティが多いほど、サイズの計算に時間がかかります。オブジェクトのサイズを調べる処理は非常に時間がかかる場合があるので、特に必要がない限り、このメソッドの使用は避けてください。

次のコードは、ID "thehobbit" を使用して SharedObject オブジェクトを作成します。username というプロパティが、SharedObject オブジェクトのデータプロパティに追加されます。次に size プロパティがトレースされ、示されている値が返されます。 import flash.net.SharedObject; // if these get copied or not var mySo:SharedObject = SharedObject.getLocal("thehobbit"); mySo.data.username = "bilbobaggins"; trace(mySo.size); // 55
fps 共有オブジェクトに対するクライアントの変更がサーバーに送信される回数(1 秒あたり)を指定します。Number 共有オブジェクトに対するクライアントの変更がサーバーに送信される回数(1 秒あたり)を指定します。

クライアントとサーバー間のトラフィック量を制限する場合に、このメソッドを使用します。例えば、クライアントとサーバー間の接続が比較的遅い場合は、fps を小さめの値に設定するとよいでしょう。逆に、クライアントが、タイミングが重要なマルチユーザーアプリケーションに接続している場合は、fps をやや大きめの値に設定できます。

fps を設定すると、sync イベントがトリガーされ、サーバーに対するすべての変更が更新されるようになります。サーバーを手動のみで更新する場合は、fps を 0 に設定します。

sync イベントが送出されるまで、サーバーに変更は送信されません。つまり、サーバーからの応答時間が遅い場合、更新がサーバーに送られる頻度は、このプロパティに指定した値よりも少なくなる可能性があります。

NetGroupInfo NetGroupInfo クラスは、NetGroup オブジェクトの基盤となる RTMFP ピアーツーピアーデータ転送に関する多様なサービス品質(QoS)を指定します。Object NetGroupInfo クラスは、NetGroup オブジェクトの基盤となる RTMFP ピアーツーピアーデータ転送に関する多様なサービス品質(QoS)を指定します。NetGroup.info プロパティは、NetGroupInfo オブジェクトを返します。これは現在の QoS 状態です。 flash.net.NetGroup.infoflash.net.NetGroup.post()flash.net.NetGroup.sendToNearest()flash.net.NetGroup.sendToNeighbor()flash.net.NetGroup.sendToAllNeighbors()flash.net.NetGroup.addWantObjects()flash.net.NetGroup.writeRequestedObject()toString NetGroupInfo オブジェクトのプロパティの値を含むストリングを返します。NetGroupInfo オブジェクトのプロパティの値を含むストリング。 Stringこの NetGroupInfo オブジェクトのプロパティを列挙するテキスト値を返します。 NetGroupInfo オブジェクトのプロパティの値を含むストリングを返します。 objectReplicationReceiveBytesPerSecond ローカルノードが Object Replication システム経由でピアーからオブジェクトを受信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードが Object Replication システム経由でピアーからオブジェクトを受信するレート(1 秒あたりのバイト数)を指定します。 flash.net.NetGroup.writeRequestedObject()objectReplicationSendBytesPerSecond Object Replication システムによって、オブジェクトがローカルノードからピアーに複製されるレート(1 秒あたりのバイト数)を指定します。Number Object Replication システムによって、オブジェクトがローカルノードからピアーに複製されるレート(1 秒あたりのバイト数)を指定します。 flash.net.NetGroup.writeRequestedObject()postingReceiveControlBytesPerSecond ローカルノードがピアーからアップロード制御オーバーヘッドメッセージを受信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがピアーからアップロード制御オーバーヘッドメッセージを受信するレート(1 秒あたりのバイト数)を指定します。 flash.net.NetGroup.post()postingReceiveDataBytesPerSecond ローカルノードがピアーからアップロードデータを受信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがピアーからアップロードデータを受信するレート(1 秒あたりのバイト数)を指定します。 flash.net.NetGroup.post()postingSendControlBytesPerSecond ローカルノードがピアーにアップロード制御オーバーヘッドメッセージを送信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがピアーにアップロード制御オーバーヘッドメッセージを送信するレート(1 秒あたりのバイト数)を指定します。 flash.net.NetGroup.post()postingSendDataBytesPerSecond ローカルノードがピアーにアップロードデータを送信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがピアーにアップロードデータを送信するレート(1 秒あたりのバイト数)を指定します。 flash.net.NetGroup.post()routingReceiveBytesPerSecond ローカルノードがピアーから転送メッセージを受信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがピアーから転送メッセージを受信するレート(1 秒あたりのバイト数)を指定します。 flash.net.NetGroup.sendToNearest()flash.net.NetGroup.sendToNeighbor()flash.net.NetGroup.sendToAllNeighbors()routingSendBytesPerSecond ローカルノードがピアーに転送メッセージを送信するレート(1 秒あたりのバイト数)を指定します。Number ローカルノードがピアーに転送メッセージを送信するレート(1 秒あたりのバイト数)を指定します。 flash.net.NetGroup.sendToNearest()flash.net.NetGroup.sendToNeighbor()flash.net.NetGroup.sendToAllNeighbors()URLLoaderDataFormat URLLoaderDataFormat クラスは、ダウンロードされるデータの受信方法を指定する値を提供します。Object URLLoaderDataFormat クラスは、ダウンロードされるデータの受信方法を指定する値を提供します。 次の例では、URLLoaderDataFormatExample クラスを使用して、実行時にロードされるファイルのデータフォーマットとステータス情報を表示します。ここでは以下の手順を実行します。
  1. クラスコンストラクターが loader という URLLoader インスタンスと、ロードされるファイルの場所と名前である request という URLRequest インスタンスを作成します。
  2. loader オブジェクトが configureListeners() メソッドに渡されます。このメソッドは、サポートされる各 URLLoader イベントのリスナーを追加します。
    • completeHandler()complete イベントをリッスンします。このイベントは "TextFile.txt" が正常にロードされた後に送出されます。
    • openHandler()open イベントをリッスンします。このイベントは "TextFile.txt" の(Flash Player への)ダウンロードの開始時に送出されます。
    • progressHandler()progress イベントをリッスンします。このイベントはダウンロード処理を実行中にデータを受信したときに送出されます。
    • securityErrorHandler()securityError イベントをリッスンします。このイベントは、ローカルでの再生に関するセキュリティを誤って設定してテキストファイルにアクセスした場合に送出されます。
    • httpStatusHandler()httpStatusHandler イベントをリッスンします。この場合は "TextFile.txt" がローカル側にあるので、このイベントは送出されません。
    • ioErrorHandler()ioError イベントをリッスンします。このイベントは、例えばファイルが存在しないなど、ファイルに関して深刻な問題がある場合のみ発生します。
  3. 次に request オブジェクトが loader.load() メソッドに渡されます。このメソッドは、DisplayObject オブジェクトを使用してテキストファイルをメモリにロードします。

注意:

  • 「ローカルでの再生に関するセキュリティ」を「ローカルファイルにのみアクセスする」に設定して SWF ファイルをコンパイルする必要があります。
  • この例では、"TextFile.txt" という名前のファイルが SWF ファイルと同じディレクトリに配置されている必要があります。この例を参照し、バイナリまたは URL エンコードデータファイルを識別する場合は、正しいデータ形式でファイルを提供し、"TextFile.txt" を新しいファイルの名前と場所に変更する必要があります。

package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLLoaderDataFormatExample extends Sprite { private var source:String = "TextFile.txt"; private var dataFormat:String = URLLoaderDataFormat.TEXT; public function URLLoaderDataFormatExample () { var loader:URLLoader = new URLLoader(); loader.dataFormat = dataFormat; configureListeners(loader); var request:URLRequest = new URLRequest(source); try { loader.load(request); } catch (error:Error) { trace("Error loading requested document: " + source); } } private function configureListeners(dispatcher:URLLoader):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); switch(loader.dataFormat) { case URLLoaderDataFormat.TEXT : trace("completeHandler (text): " + loader.data); break; case URLLoaderDataFormat.BINARY : trace("completeHandler (binary): " + loader.data); break; case URLLoaderDataFormat.VARIABLES : trace("completeHandler (variables): " + loader.data); break; } } private function httpStatusHandler(event:Event):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } } }
BINARY ダウンロードされるデータを生のバイナリデータとして受信することを指定します。binaryString ダウンロードされるデータを生のバイナリデータとして受信することを指定します。 TEXT ダウンロードされるデータをテキストとして受信することを指定します。textString ダウンロードされるデータをテキストとして受信することを指定します。 VARIABLES ダウンロードされるデータを URL エンコード形式の変数として受信することを指定します。variablesString ダウンロードされるデータを URL エンコード形式の変数として受信することを指定します。
NetStreamPlayTransitions NetStreamPlayTransitions クラスでは、NetStreamPlayOptions.transition プロパティで使用できる有効なストリングを指定します。Object NetStreamPlayTransitions クラスでは、NetStreamPlayOptions.transition プロパティで使用できる有効なストリングを指定します。これらの文字列は、使用される移行モードに応じて、新しいストリームへのトランジションやストリームの再生で用いられる動作を制御します。 NetStreamPlayOptionsNetStream.play2()APPEND_AND_WAIT 最初のストリームから再生することなく、再生リストを作成します。appendAndWaitString 最初のストリームから再生することなく、再生リストを作成します。

APPEND_AND_WAIT 移行モードは NetStream.play2() メソッドで使用されるモードで、最初のストリームから直ちに再生を開始せずに、再生リストを作成します。このモードを使用して、再生リスト内の最後の項目以外の項目をロードします。再生リストの最後の項目をロードすると、移行モードが RESUME に設定されます。この時点で、Flash Player はストリームを開始し、再生リストを再生します。

このモードを使用して、最初から再生リストを作成したり、切断された接続が回復した後に再生リストを再度作成することができます。新しい再生リストの場合、RESUME が指定された NetStream.play2() が呼び出されたときに、Flash Player は最初のストリームまたは指定された開始点からストリーミングを開始します。切断された接続を回復するために、RESUME を指定して NetStream.play2() メソッドを呼び出すと、Flash Player は、ストリームが中断された位置を特定し、その位置からストリーミングを開始するようにサーバーに指示します。その結果として、サーバーは、中断された位置に対応するストリームを再生リスト内で特定し、その時点からストリーミングを開始します。

この移行モードは、最初のストリームから直ちに再生を開始する APPEND モードとは対照的です。

APPENDRESUMENetStream.play2()
APPEND ストリームを再生リストに追加し、最初のストリームの再生を開始します。appendString ストリームを再生リストに追加し、最初のストリームの再生を開始します。このモードは、NetStream.play() メソッド(reset フラグを false に設定)と同じ機能です。

このモードでは、Flash Media Server は NetStreamPlayOptions.streamName で指定されたストリームを再生リストの最後に置き、NetStreamPlayOptions.oldStreamName パラメーターは無視します。

APPEND_AND_WAITNetStream.play()NetStream.play2()NetStreamPlayOptions.oldStreamNameNetStreamPlayOptions.streamName
RESET それまでの再生呼び出しをクリアし、指定されたストリームを直ちに再生します。resetString それまでの再生呼び出しをクリアし、指定されたストリームを直ちに再生します。このモードは、NetStream.play() メソッド(reset フラグを true に設定(NetStream.play() のデフォルト動作))と同じ機能です。

このモードでは、再生中のストリームはフラッシュされ、NetStreamPlayOptions.streamName で指定されたストリームの再生が開始されます。NetStreamPlayOptions.oldStreamName パラメーターは無視されます。

NetStream.play()NetStream.play2()NetStreamPlayOptions.oldStreamNameNetStreamPlayOptions.streamName
RESUME 前の接続が終了した時点からのデータを新しい接続に要求します。resumeString 前の接続が終了した時点からのデータを新しい接続に要求します。RESUME モードでは 2 つの接続間のストリームが整合されるので、ビデオ再生時にブロックノイズが表示されたり、シーンが飛んだりすることはありません。サーバーの問題やその他の接続の問題のせいで中断したストリームを再接続するときに、このモードを使用します。 APPEND_AND_WAITNetStream.play2()STOP 再生リストにあるストリームの再生を停止します。stopString 再生リストにあるストリームの再生を停止します。このモードは NetStream.play(false) 呼び出しと同じ機能です。再生リストを停止し、リセットします。 NetStream.play()NetStream.play2()SWAP あるコンテンツのストリームを異なるコンテンツのストリームに置き換え、再生リストの他の部分はそのまま保持します。swapString あるコンテンツのストリームを異なるコンテンツのストリームに置き換え、再生リストの他の部分はそのまま保持します。

このモードは NetStreamPlayOptions.oldStreamName で指定されたストリームを NetStreamPlayOptions.streamName で指定されたストリームに置き換えます。再生リストの他の部分はそのままです。このモードでは、Flash Media Server にはストリームのコンテンツに関する想定はなく、異なるコンテンツのように処理します。

oldStreamName が未送信の場合、サーバーはストリームの境界で切り換えを行い、最初から streamName 用のデータを送信します。サーバーが既に oldStreamName 用のデータを送信し始めている場合、streamName には切り換えず、NetStream.Play.Failed イベントを送出します。

このモードを使用するのは、切り換えるストリームが互いに無関係でコンテンツや長さが異なる場合です。 例えば、ユーザーの追跡調査およびコマーシャル視聴統計に基づいて、あるコマーシャルを別のコマーシャルに取り換える場合にこのモードを使用します。

あるストリームから、同じコンテンツの別のストリームに切り換えるには、代わりに SWITCH モードを使用します。

SWITCHNetStreamPlayOptions.oldStreamNameNetStreamPlayOptions.streamName
SWITCH あるストリームの再生から別のストリームの再生に切り替えます。通常、同じコンテンツのストリームに対して行われます。switchString あるストリームの再生から別のストリームの再生に切り替えます。通常、同じコンテンツのストリームに対して行われます。切り替えるストリームを NetStreamPlayOptions.oldStreamNameNetStreamPlayOptions.streamName で指定します。

このモードは、同じコンテンツでビットレートまたは解像度が異なるストリームに切り替えるときに使用します。例えば、アプリケーションがストリームを再生リストに置くか、特定のビットレートで単一のストリームを再生しているときにこのモードを使用すると、利用できる帯域幅または CPU 能力がストリームが必要とするより高いか低いかを判断します。すると、アプリケーションはビットレートの高いまたは低いストリームに更新することができます。

このモードで、Flash Media Server は oldStreamNamestreamName ストリーム間の関係について、ある仮定をします。Flash Media Server は、ストリームのコンテンツとキーフレーム間隔は同一だが、解像度またはビットレートが異なると想定します。

再生リストがキューに置かれ、oldStreamName が再生リスト内または現在再生中のストリームである場合、oldStreamNamestreamName で置き換えられます。

oldStreamName が null か未定義、または再生リストにない場合、サーバーは次の論理ポイントで streamName に切り替え、確実にスムースに切り換えられるようにします。

あるストリームから、コンテンツの異なる別のストリームに切り換えるには、代わりに SWAP モードを使用します。

SWAPNetStreamPlayOptions.oldStreamNameNetStreamPlayOptions.streamName
NetConnection NetConnection クラスでは、クライアントとサーバー間の双方向の接続が作成されます。flash.events:EventDispatcher NetConnection クラスでは、クライアントとサーバー間の双方向の接続が作成されます。クライアントには Flash Player または AIR アプリケーションを使用できます。サーバーには、Web サーバー、Flash Media Server、Flash Remoting を実行しているアプリケーションサーバーまたは Adobe Stratus サービスを使用できます。NetConnection.connect() を呼び出して、接続を確立します。NetStream クラスを使用して、メディアおよびデータのストリームを接続に送信します。

コンテンツとデータを Flash Player および AIR にロードする際のセキュリティ情報については、以下を参照してください。

  • コンテンツとデータを Web サーバーまたはローカルから Flash Player にロードする場合は、「Flash Player Developer Center: Security」を参照してください。
  • コンテンツとデータを Flash Media Server から Flash Player および AIR にロードする場合は、Flash Media Server のドキュメントを参照してください。
  • コンテンツとデータを AIR にロードする場合は、「Adobe AIR Developer Center」を参照してください。

このクラスのコールバックメソッドを記述するには、クラスを拡張してサブクラスでコールバックメソッドを定義するか、client プロパティをオブジェクトに割り当てて、そのオブジェクトでコールバックメソッドを定義します。

次の例では、Video オブジェクトを NetConnection クラスおよび NetStream クラスと共に使用して、FLV ファイルをロードして再生します。

この例では、Video オブジェクトと NetStream オブジェクトを作成し、Video.attachNetStream() メソッドと NetStream.play() メソッドを呼び出すコードがハンドラー関数に配置されます。ハンドラーは、NetConnection オブジェクトとの接続が成功した場合にのみ呼び出されます。つまり、netStatus イベントが返す info オブジェクトの code プロパティが成功を示しているときです。接続に成功するまで待ってから、NetStream.play() を呼び出すことをお勧めします。

package { import flash.display.Sprite; import flash.events.NetStatusEvent; import flash.events.SecurityErrorEvent; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.Event; public class NetConnectionExample extends Sprite { private var videoURL:String = "http://www.helpexamples.com/flash/video/cuepoints.flv"; private var connection:NetConnection; private var stream:NetStream; private var video:Video = new Video(); public function NetConnectionExample() { connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.connect(null); } private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": connectStream(); break; case "NetStream.Play.StreamNotFound": trace("Stream not found: " + videoURL); break; } } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function connectStream():void { var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.client = new CustomClient(); video.attachNetStream(stream); stream.play(videoURL); addChild(video); } } } class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate); } public function onCuePoint(info:Object):void { trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type); } }
clientNetStreamconnect()flash.net.RespondernetStatus NetConnection オブジェクトが、そのステータスまたはエラーの状況をレポートするときに送出されます。flash.events.NetStatusEvent.NET_STATUSflash.events.NetStatusEvent NetConnection オブジェクトが、そのステータスまたはエラーの状況をレポートするときに送出されます。netStatus イベントには info プロパティが含まれます。このプロパティは、接続試行が成功したかどうかなど、イベントに関する特定の情報を含む情報オブジェクトです。 flash.events.NetStatusEvent.infosecurityError NetConnection.call() の呼び出しによって呼び出し元のセキュリティサンドボックスの外部にあるサーバーに接続しようとすると送出されます。flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent NetConnection.call() の呼び出しによって呼び出し元のセキュリティサンドボックスの外部にあるサーバーに接続しようとすると送出されます。 NetConnection.call()ioError 入出力エラーが発生してネットワーク処理が失敗したときに送出されます。flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent 入出力エラーが発生してネットワーク処理が失敗したときに送出されます。 asyncError 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。flash.events.AsyncErrorEvent.ASYNC_ERRORflash.events.AsyncErrorEvent 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。 NetConnection NetConnection オブジェクトを作成します。 NetConnection オブジェクトを作成します。connect() メソッドを呼び出して、接続を作成します。

アプリケーションが Flash Player 9 以前にリリースされたサーバーと通信する必要がある場合は、NetConnection オブジェクトの objectEncoding プロパティを設定します。

次のコードでは、NetConnection オブジェクトを作成します。

     var nc:NetConnection = new NetConnection();
     
flash.net.NetConnection.connect()objectEncoding
addHeader コンテキストヘッダーを AMF(Action Message Format)パケット構造に追加します。operationStringヘッダーとヘッダーに関連付けられている ActionScript オブジェクトデータを指定します。 mustUnderstandBooleanfalsetrue 値は、サーバーがこのヘッダーに対応しており、次のヘッダーまたはメッセージを処理する前に、サーバーでヘッダーを処理する必要があることを示します。 paramObjectnull任意の ActionScript オブジェクトです。 コンテキストヘッダーを AMF(Action Message Format)パケット構造に追加します。このヘッダーは、将来のすべての AMF パケットと共に送信されます。同じ名前を使用して NetConnection.addHeader() を呼び出すと、既存のヘッダーが新しいヘッダーに置き換えられます。新しいヘッダーは、NetConnection オブジェクトのある間存在し続けます。ヘッダーの名前を使用して NetConnection.addHeader() を呼び出し、未定義のオブジェクトを削除して、ヘッダーを削除できます。 call Flash Media Server 上または Flash Remoting を実行しているアプリケーションサーバー上のコマンドまたはメソッドを呼び出します。commandString[オブジェクトのパス/]method という形式で指定されたメソッドです。例えば、someObject/doSomething コマンドは、clientObject.someObject.doSomething() メソッドを、省略可能なすべての ... arguments パラメーターと共に呼び出すようにリモートサーバーに対して指定します。オブジェクトのパスが見つからない場合は、リモートサーバーで clientObject.doSomething() が呼び出されます。

Flash Media Server では、command は、アプリケーションのサーバーサイドスクリプトに定義されている関数の名前です。サーバーサイドスクリプトがアプリケーションディレクトリのルートレベルに配置されている場合、command の前にオブジェクトパスを付ける必要はありません。

responderflash.net:Responderサーバーからの戻り値を処理するために使用される、省略可能なオブジェクトです。Responder オブジェクトには、返される結果を処理するための 2 つのメソッド result および status が定義されています。結果としてエラーが返された場合は status が呼び出され、それ以外の場合は result が呼び出されます。NetConnection オブジェクトが接続状態に関連したエラーに対処するものであるのに対して、Responder オブジェクトは個々の操作に関連したエラーを処理することができます。 arguments省略可能なパラメーターです。別の ActionScript オブジェクトへの参照を含む、ActionScript の任意の型を取ることができます。メソッドがリモートアプリケーションサーバーで実行されると、これらのパラメーターは command パラメーターで指定されたメソッドに渡されます。
Flash Media Server 上または Flash Remoting を実行しているアプリケーションサーバー上のコマンドまたはメソッドを呼び出します。NetConnection.call() を呼び出す前に、NetConnection.connect() を呼び出してサーバーに接続する必要があります。このメソッドに渡すには、サーバーサイド関数を作成する必要があります。

一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。

flash.net.RespondersecurityErrorflash.events:SecurityErrorEvent呼び出し元のセキュリティサンドボックスの外部にあるサーバーとの通信を試行する呼び出しです。サーバーでポリシーファイルを使用することにより、この問題を回避できます。 呼び出し元のセキュリティサンドボックスの外部にあるサーバーとの通信を試行する呼び出しです。
close ローカルで開始した接続またはサーバーへの接続を閉じ、NetConnection.Connect.Closed を code プロパティとして、netStatus イベントを送出します。 ローカルで開始した接続またはサーバーへの接続を閉じ、NetConnection.Connect.Closedcode プロパティとして、netStatus イベントを送出します。

このメソッドは、接続上で実行されているすべての NetStream オブジェクトを切断します。キューに未送信のデータはすべて破棄されます。(接続を閉じずにローカルまたはサーバーストリームを終了するには、NetStream.close() を使用します。)接続を閉じて新しい接続を作成する場合は、新しい NetConnection オブジェクトを呼び出し、connect() メソッドをもう一度呼び出す必要があります。

close() メソッドは、この接続上で実行されているすべてのリモート共有オブジェクトも切断します。ただし、再接続するために共有オブジェクトを再作成する必要はありません。SharedObject.connect() を呼び出すだけで、共有オブジェクトへの接続を再確立できます。また、共有オブジェクトへの接続が再確立されると、NetConnection.close() を発行したときにキュー内にあった共有オブジェクトのデータがすべて送信されます。

Flash Media Server では、クライアントからサーバーへの接続が不要になったときは close() を呼び出すことをお勧めします。close() を呼び出すと、使用されていない接続が最も短時間でクリーンアップされます。予備の手段として、アイドル状態の接続を自動的に閉じるようにサーバーを設定できます。詳細については、Flash Media Server の設定と管理のガイドを参照してください。

NetStreamflash.events.NetStatusEvent.info
connect Flash Media Server 上のアプリケーションまたは Flash Remoting への双方向の接続を作成するか、RTMFP ピアーツアーピアーグループ通信用に双方向のネットワークエンドポイントを作成します。command パラメーターに渡された URI は適切にフォーマットされていません。 ArgumentErrorArgumentError接続に失敗しました。これは、connect()netStatus イベントハンドラー内から呼び出すと起こることがあります。この呼び出しは許可されていません。 IOErrorflash.errors:IOErrorLocal-with-filesystem SWF ファイルはインターネットと通信できません。この問題は、SWF ファイルを local-with-networking または trusted として分類し直すことで回避できます。 SecurityErrorSecurityError一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。 SecurityErrorSecurityErrorcommandString以下の値のいずれかを command パラメーターに使用します。
  • ビデオおよび mp3 ファイルをローカルのファイルシステムまたは Web サーバーから再生するには、null を渡します。
  • Flash Remoting を実行しているアプリケーションサーバーに接続するには、http プロトコルを使用している URL を渡します。
  • (Flash Player 10.1 または AIR 2 以降) RTMFP IP マルチキャスト通信用にサーバーレスネットワークエンドポイントを作成するには、ストリング「rtmfp:」を渡します。この接続タイプを使用して、サーバーを使用せずに発行者から IP マルチキャストストリームを受信します。また、この接続タイプを使用して IP マルチキャストを使用し、同じローカルエリアネットワーク(LAN)上でピアーを検出することもできます。
  • この接続タイプには次の制限があります。

    同じ LAN 上のピアーのみが相互に検出できます。

    Flash Player は、IP マルチキャストを使用してストリームを受信できますが、送信することはできません。

    Flash Player および AIR はピアーツーピアーグループでストリームを送受信できますが、ピアーは、IP マルチキャストを使用して同じ LAN 上で検出されなければなりません。

    このテクニックは 1 対 1 の通信には使用できません。

  • Flash Media Server に接続するには、サーバー上のアプリケーションの URI を渡します。次のシンタックスを使用します。角括弧内のアイテムは省略できます。

    protocol:[//host][:port]/appname[/instanceName]

    rtmprtmpertmpsrtmptrtmpte、または rtmfp のいずれかのプロトコルを使用します。接続に成功した場合、netStatus イベントが返されます。このときの code プロパティは NetConnection.Connect.Success です。すべてのイベントコードのリストの NetStatusEvent.info プロパティを参照してください。このイベントコードは connect() の呼び出しに応答して返されます。

    サーバーがインストールされているホストからファイルが提供されている場合は、//host パラメーターを省略できます。/instanceName パラメーターを省略すると、Flash Player または AIR はアプリケーションのデフォルトインスタンスに接続します。

    (Flash Player 10.1 または AIR 2 以降)ピアーツーピアーアプリケーションを作成するには、rtmfp プロトコルを使用します。

argumentscommand で指定されたアプリケーションに渡された任意の型のパラメーターです。このパラメーターはオプションです。Flash Media Server では、アプリケーションのサーバーサイドコードの application.onConnect() イベントハンドラーに追加の引数が渡されます。onConnect() に引数を定義して処理する必要があります。
Flash Media Server 上のアプリケーションまたは Flash Remoting への双方向の接続を作成するか、RTMFP ピアーツアーピアーグループ通信用に双方向のネットワークエンドポイントを作成します。ステータスまたはエラーの状況をレポートするために、NetConnection.connect() によって netStatus イベントが送出されます。

NetConnection.connect() を呼び出して、次の操作を行います。

  • 「null」を渡して、ローカルファイルシステムまたは Web サーバーからビデオファイルと mp3 ファイルを再生します。
  • 「http」 URL を渡して、Flash Remoting を実行しているアプリケーションサーバーに接続します。NetServices クラスを使用して、NetConnection オブジェクトでアプリケーションサーバーの関数を呼び出し、アプリケーションサーバーから結果を取得します。詳細については、Flash Remoting のマニュアルを参照してください。
  • 「rtmp/e/s」 URL を渡して、Flash Media Server アプリケーションに接続します。
  • 「rtmfp」 URL を渡して、RTMFP クライアント-サーバー通信、ピアーツーピアー通信および IP マルチキャスト通信用に双方向のネットワークエンドポイントを作成します。
  • ストリング「rtmfp:」を渡して、RTMFP IP マルチキャスト通信用にサーバーレスの双方向ネットワークエンドポイントを作成します。

次のセキュリティモデルを考慮してください。

  • デフォルトでは、Flash Player または AIR でのサンドボックス間のアクセスは拒否されます。URL ポリシーファイルを使用することで、Web サイトでリソースにアクセスできるようになります。
  • アプリケーションで、サーバー上のリソースへのアクセスを拒否できます。Flash Media Server アプリケーションでは、サーバーサイド ActionScript コードを使用してアクセスを拒否します。「Flash Media Server のリソース」を参照してください。
  • 呼び出し元ファイルがローカルファイルシステムのサンドボックスに配置されている場合は、NetConnection.connect() を呼び出すことはできません。
  • 一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。
  • SWF ファイルがこのメソッドを呼び出さないようにするには、allowNetworking パラメーター(SWF コンテンツを含んでいる HTML ページの object タグおよび embed タグのパラメーター)を設定します。

ただし、Adobe AIR では、アプリケーションセキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。

セキュリティについて詳しくは、Adobe Flash Player デベロッパーセンターの「Security」を参照してください。

flash.net.NetStreamflash.events.NetStatusEvent.info
client コールバックメソッドが呼び出されるオブジェクトを示します。Objectclient プロパティは、null 以外のオブジェクトに設定する必要があります。 TypeErrorTypeError コールバックメソッドが呼び出されるオブジェクトを示します。デフォルト値はこの NetConnection インスタンスです。client プロパティを別のオブジェクトに設定すると、コールバックメソッドはそのオブジェクトで呼び出されます。 connectedProxyType Flash Media Server への正常な接続を作成するために使用するプロキシタイプ。StringNetConnection インスタンスが接続されていないときに、このプロパティにアクセスしようとしました。 ArgumentErrorArgumentError Flash Media Server への正常な接続を作成するために使用するプロキシタイプ。指定できる値は、"none""HTTP""HTTPS"、または "CONNECT" です。

トンネル接続ではない場合、またはネイティブ SSL 接続である場合、値は "none" です。

HTTP 経由のトンネル接続である場合、値は "HTTP" です。

HTTPS 経由のトンネル接続である場合、値は""HTTPS" です

プロキシサーバーを通じて CONNECT メソッドを使用するトンネル接続の場合、値は "CONNECT" です。

connected 永続的な RTMP 接続を介して(true)、またはそれ以外の方法で(false)サーバーに接続されていることを示します。Boolean 永続的な RTMP 接続を介して(true)、またはそれ以外の方法で(false)サーバーに接続されていることを示します。HTTP を介して接続された場合、このプロパティは false です。ただし、アプリケーションサーバー上の Flash Remoting サービスに接続した場合は true です。 defaultObjectEncoding NetConnection オブジェクトのデフォルトオブジェクトのエンコードです。uint NetConnection オブジェクトのデフォルトオブジェクトのエンコードです。バイナリデータにオブジェクトを書き込むかバイナリデータからオブジェクトを読み取るときに、データの直列化に使用される AMF(Action Message Format)のバージョンが defaultObjectEncoding プロパティに示されます。これらは、ActionScript 3.0 フォーマット(ObjectEncoding.AMF3)または ActionScript 1.0 および ActionScript 2.0 フォーマット(ObjectEncoding.AMF0)です。

デフォルト値は ObjectEncoding.AMF3 です。NetConnection.defaultObjectEncoding を変更しても、既存の NetConnection インスタンスには影響せず、それ以降に作成されたインスタンスにのみ影響します。

オブジェクトのエンコードを(アプリケーション全体に対してではなく)個別に設定するには、NetConnection オブジェクトの objectEncoding プロパティを設定します。

詳細については、objectEncoding プロパティの説明を参照してください。

NetConnection.objectEncodingflash.net.ObjectEncoding
farID この Flash Player インスタンスまたは Adobe AIR インスタンスが接続されている Flash Media Server インスタンスの識別子。String この Flash Player インスタンスまたは Adobe AIR インスタンスが接続されている Flash Media Server インスタンスの識別子。このプロパティは、RTMFP 接続にのみ意味があります。このプロパティの値は、RTMFP 接続が確立された後でのみ利用できます。 nearIDfarNonce 実際には Flash Media Server によって選択される値で、この接続に一意です。String 実際には Flash Media Server によって選択される値で、この接続に一意です。この値は、サーバー側では client.nearNonce 値となります。この値は、RTMFP、RTMPE および RTMPTE 接続についてのみ定義されます。 httpIdleTimeout HTTP 応答の待機時間(ミリ秒単位)です。NumberHTTP 応答の待機時間(ミリ秒単位)です。 HTTP 応答の待機時間(ミリ秒単位)です。デフォルト値は 0 です。
  • httpIdleTimeout の値は Number です。
  • HTTP 接続を使用する場合、正の値は非アクティブな接続を保持する時間をミリ秒単位で示します。
  • ゼロの値は、プラットフォームで指定されているデフォルトのネットワーキングアイドルタイムアウト値を使用することを示します。
  • 負の値を指定すると、RangeError になります。
  • httpIdleTimeout で指定した値を超過すると、netStatus イベントが送出されます。
  • このプロパティは、HTTP 接続と共に作成された NetConnection オブジェクトにのみ影響します。RTMP、RTMFP、または他の HTTP チャンネルと共に作成された NetConnection オブジェクトは、このプロパティの影響を受けません。
//Set the timeout to 5 seconds connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.httpIdleTimeout = 5000; Linux ベースのシステムでは、NetConnection を使用したタイムアウトは httpIdleTimeout 値を使用したタイムアウトに比較して長くかかることがあります。
maxPeerConnections Flash Player または Adobe AIR のこのインスタンスで可能となるピアーの受信接続と送信接続の総数。uint Flash Player または Adobe AIR のこのインスタンスで可能となるピアーの受信接続と送信接続の総数。デフォルト値は 8 です。

この値は、発行者接続とサブスクライバ接続で違いはありません。ピアー接続が存在するときにこの値を減らす場合は、その新しい値は新しい受信接続だけに影響します。既存の接続は中断されません。

nearID この NetConnection インスタンスに対する Flash Player インスタンスまたは Adobe AIR インスタンスの識別子。String この NetConnection インスタンスに対する Flash Player インスタンスまたは Adobe AIR インスタンスの識別子。このプロパティは、RTMFP 接続にのみ意味があります。

すべての NetConnection インスタンスは一意の nearID プロパティを持ちます。Flash Player インスタンス、Adobe AIR インスタンスまたは NetConnection インスタンスで同じ識別子を持つものはありません。

他の Flash Player インスタンスまたは Adobe AIR インスタンスは、このクライアントとの新しい NetStream 接続の peerID としてこの識別子を使用します。次に、この識別子は、このインスタンスに接続されているピアー NetStream の farID となります。

farID
nearNonce 実際にはこの Flash Player インスタンスまたは Adobe AIR インスタンスによって選択される値で、この接続に一意です。String 実際にはこの Flash Player インスタンスまたは Adobe AIR インスタンスによって選択される値で、この接続に一意です。この値は、サーバー側では client.farNonce 値となります。この値は、RTMFP、RTMPE および RTMPTE 接続についてのみ定義されます。 objectEncoding この NetConnection インスタンスのオブジェクトエンコードです。uintNetConnection インスタンスが接続されているときに、objectEncoding プロパティの値を設定しようとしました。 ReferenceErrorReferenceErrorこのプロパティに、ObjectEncoding.AMF0 または ObjectEncoding.AMF3 以外の値が設定されました。 ArgumentErrorArgumentError この NetConnection インスタンスのオブジェクトエンコードです。

バイナリデータにオブジェクトを書き込むかバイナリデータからオブジェクトを読み取るときに、データの直列化に使用される AMF(Action Message Format)のバージョンが defaultObjectEncoding プロパティに示されます。これらは、ActionScript 3.0 形式(ObjectEncoding.AMF3)または ActionScript 1.0 および ActionScript 2.0 形式(ObjectEncoding.AMF0)です。objectEncoding プロパティを設定することにより、NetConnection インスタンスの AMF のバージョンを設定します。

アプリケーションが Flash Player 9 以前にリリースされたサーバーと通信する必要がある場合は、このプロパティを理解することが重要です。次の 3 つのシナリオが可能です。

  • AMF3 をサポートするサーバー(例えば、Flex Data Services 2 または Flash Media Server 3)に接続します。defaultObjectEncoding のデフォルト値は ObjectEncoding.AMF3 です。この ファイルで作成された NetConnection インスタンスはすべて AMF3 直列化を使用するので、objectEncoding プロパティを設定する必要はありません。
  • AMF3 をサポートしないサーバー(例えば、Flash Media Server 2)に接続します。このシナリオでは、静的な NetConnection.defaultObjectEncoding プロパティを ObjectEncoding.AMF0 に設定します。この SWF ファイルに作成されるすべての NetConnection インスタンスでは、AMF0 直列化を使用します。objectEncoding プロパティを設定する必要はありません。
  • 異なるエンコーディングバージョンを使用する複数のサーバーに接続する場合。defaultObjectEncoding を使用せずに、各接続の objectEncoding プロパティを使用して、接続ごとにオブジェクトエンコーディングを設定します。このプロパティを ObjectEncoding.AMF0 に設定すると、AMF0 エンコーディングを使用するサーバー(Flash Media Server 2 など)に接続します。ObjectEncoding.AMF3 に設定すると、AMF3 エンコーディングを使用するサーバー(Flex Data Services 2 など)に接続します。

NetConnection インスタンスが接続されたら、その objectEncoding プロパティは読み取り専用になります。

サーバーへの接続に誤ったエンコーディングを使用した場合は、NetConnection オブジェクトにより netStatus イベントが送出されます。 NetStatusEvent.info プロパティには、code プロパティ値 NetConnection.Connect.Failed を持つ情報オブジェクトとオブジェクトエンコードが正しくないことを示す説明が含まれています。

defaultObjectEncodingflash.net.ObjectEncoding
protocol 接続の確立にプロトコルが使用されました。StringNetConnection インスタンスが接続されていないときに、このプロパティにアクセスしようとしました。 ArgumentErrorArgumentError 接続の確立にプロトコルが使用されました。Flash Media Server を使用するときは、このプロパティが適切です。有効な値は次のとおりです。
  • "rtmp":リアルタイムメッセージングプロトコル(RTMP)
  • "rtmpe":暗号化 RTMP
  • "rtmpt":HTTP トンネリング RTMP
  • "rtmpte":HTTP トンネリング暗号化 RTMP
  • "rtmps": HTTPS ベースの RTMP
  • "rtmfp":リアルタイムメディアフロープロトコル(RTMFP)
proxyType Flash Media Server への最初の接続に失敗した場合に実行する代替手段を指定します。String Flash Media Server への最初の接続に失敗した場合に実行する代替手段を指定します。proxyType プロパティを設定してから NetConnection.connect() メソッドを呼び出します。

有効な値は、"none""HTTP""CONNECT" および "best" です。デフォルト値は "non " です

ネイティブ SSL を使用するには、プロパティに "best" を設定します。プレーヤーが、デフォルトの 443 ポート経由または指定した他のポート経由でサーバーへの直接接続を作成できず、プロキシサーバーが所定の位置にある場合、プレーヤーは CONNECT メソッドの使用を試行します。この試行に失敗した場合、プレーヤーは HTTPS 経由でトンネル接続します。

プロパティが "HTTP" に設定されていて、直接接続に失敗した場合は、HTTP トンネリングが使用されます。プロパティが "CONNECT" に設定されており、直接接続に失敗した場合は、トンネリングの CONNECT メソッドが使用されます。これに失敗すると、接続は HTTP トンネリングにフォールバックされなくなります。

このプロパティは RTMP、RTMPS、または RTMPTを使用している場合にのみ適用できます。CONNECT メソッドは、プロキシサーバー経由でネットワークに接続しているユーザーにのみ適用できます。

unconnectedPeerStreams パブリッシュする NetStream オブジェクトに関連付けられていない、すべてのピアーサブスクライバ NetStream オブジェクトを保持するオブジェクトです。Array パブリッシュする NetStream オブジェクトに関連付けられていない、すべてのピアーサブスクライバ NetStream オブジェクトを保持するオブジェクトです。パブリッシュする NetStream オブジェクトに関連付けられたサブスクライバ NetStream オブジェクトは、NetStream.peerStreams 配列にあります。 NetStream.peerStreamsuri NetConnection.connect() メソッドに渡された URI。String NetConnection.connect() メソッドに渡された URI。NetConnection.connect() が呼び出されていない場合、または URI が渡されていない場合、このプロパティは undefined になります。 usingTLS HTTPS ではなく、ネイティブ TLS を使用してセキュア接続が確立されたかどうかを示します。BooleanNetConnection インスタンスが接続されていないときに、このプロパティにアクセスしようとしました。 ArgumentErrorArgumentError HTTPS ではなく、ネイティブ TLS を使用してセキュア接続が確立されたかどうかを示します。このプロパティは、NetConnection オブジェクトが接続されている場合にのみ有効です。