You are on page 1of 21

Adobe AIR Sample ActionScript3

ActionScript3によるAIR2.0新機能サンプル
(FxUG全国ツアー石川版)
Install
• Adobe AIR(実行するのに必要)
http://get.adobe.com/jp/air/

• Adobe AIR SDK(開発するのに必要)

http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk&loc=ja

• Adobe AIR日本語ページ
http://www.adobe.com/jp/products/air/

(現時点では検索はbeta2の記事が多くヒットして
探しにくい)
Install-2
• DLしたSDKを配置する
C:¥Program Files (x86)¥Adobe¥Adobe Flash Builder 4¥sdks

air2というディレクトリ(任意)を4.0.0ディレクトリからコピーして、ダウン
ロードしたSDK(AdobeAIRSDK.zip)を解凍したものを配置します
Install-3
プロジェクトの作成
Install-4
確認する
{プロジェクト名}-app.xmlファイル
NativeProcess
文字通りネイティブなアプリケーションを実行できる機能。

Windowsの.exeなどを実行することが可能になる。
DEMO:こまんどぷろんぷと
NativeProcess-1

{アプリケーション名}-app.xmlに追記

<supportedProfiles>extendedDesktop</supportedProfiles>
NativeProcess-2

NativeProcessStartupInfoクラス
[実行するプロセス情報]

NativeProcessStartupInfo.executable // 実行可能なファイルを指定
NativeProcessStartupInfo.arguments // オプション
NativeProcess-3
var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();

var file:File = new File("C:/Windows/System32/NETSTAT.EXE");

var args:Vector.<String> = new Vector.<String>();
args.push("-an");

info.arguments = args;
info.executable = file;
NativeProcess-4

NativeProcessクラス
[実行するクラス]
NativeProcess-5
this._process = new NativeProcess();

this._process.addEventListener
(NativeProcessExitEvent.EXIT, _onComplete); // 呼び出し完了

this._process.addEventListener
(ProgressEvent.STANDARD_OUTPUT_DATA, _onOutputData); // データ
受信

this._process.addEventListener
(ProgressEvent.STANDARD_ERROR_DATA, _onErrorData); // エラー

this._process.start(info);
NativeProcess-6
こんな時は・・・

メインスレッド (中断 : Error: Error #3219: The NativeProcess could not be started. 'Not
supported in current profile.')

(原因)NativeProcessとして実行できる状態ではない。
権限がない、設定で許可されていない。

{アプリ名}-app.xmlに
<supportedProfiles>extendedDesktop</supportedProfiles>
が抜けてないでしょうか?
ServerSocket-1
AIR2.0でネットワーク周辺の機能も色々強化されました。

・セキュアソケット(SSLとか?)

・データグラムソケット(UDP)

・ソケットサーバー(TCPソケットを待ち受けられる)

・ネットワークインターフェースエニュメレーションサポート
(自分のネットワーク情報が取得できる)

・DNSルックアップ
ServerSocket-2
今回はこの中からServerSocketを利用するサンプルを紹介したいと思います。
DEMO:えあ~さ~ば~
ServerSocket-3

ServerSocketクラス

・指定ポートからTPCによる接続を待ち受けるクラス

・接続が来たらServerSocketConnectEvent

・ServerSocketConnectEvent内でクライアントの接続クラスSocketを取得
ServerSocket-4
ServerSocketクラス

var server_socket:ServerSocket = new ServerSocket();
server_socket.bind(1988, "127.0.0.1");
server_socket.listen();

server_socket.addEventListener
(ServerSocketConnectEvent.CONNECT, connectEvent);

接続が来たらconnectEventがコールされる
ServerSocket-5
ServerSocketクラス

function connectEvent(event:ServerSocketConnectEvent):void
{
event.socket.addEventListener(ProgressEvent.SOCKET_DATA, socketData);

}

クライアントからのデータ送信を受け取るイベントをリッスンする
ServerSocket-6
ServerSocketクラス

function socketData(event:ProgressEvent):void
{
var client_socket:Socket = event.target as Socket;

// ソケットからのメッセージを取り出す
trce(client_socket.readUTFBytes(this._client_socket.bytesAvailable));

(以下略)
おまけ(AIR×Silverlight)

AIRからOutOfBrowserでインストールされたSilverlightを起動して
相互通信(チャットっぽいこと)を行う。

同一PCどうしでチャットする利便性は何もない・・・

FlashとSilverlightも仲良くできるよ、と言いたかっただけのサンプル