Archive for the ‘Flex’ Category

前回の記事でCocomo SDKをダウンロードしましたが、今回はそれをFlex Builder3.0にセットアップしてみます。[Flex Builder 3 plug-in]フォルダ配下に[com.adobe.cocomo]フォルダを新規作成し、ダウンロードしたzipをここに解凍しました。

ここからが、それ以降の手順になります。

※ Cocomo Developer Guideの12ページから14ページを参考にしました。

まずはFlex Builderを起動し、新規プロジェクトを作成します。


続きを読む »

Adobeもいよいよクラウドに進出か!ということで、11月16日~19日に開催されていたAdobe MAX 2008 USで注目に値する新たな発表がありました。中でも個人的に興味のあるCocomo βを早速つかってみました。

“Cocomo” Developer PortalにあるHelp(英文)を訳しながら進めたので、せっかくですから今回はその翻訳をメモしておきます。

※ こちらのHelpはLoginした後のポータルサイトのトップページからリンクされていますので、URLの公開は控えさせていただきます。
続きを読む »

flashcast:フリーで働くITエンジニア集団のブログ: google翻訳APIの翻訳結果JSONを読み込むswfのソースを公開しますでは、google翻訳APIをHTTPServiceを継承したクラスから呼び出しています。Internetの世界では、何かとクロスドメインの制約がつき物ですが、Flash Playerも例外ではありません。クロスドメインのアクセスには制限があります。つまり、WebサーバA上にあるswfファイルからWebサーバB上にあるリソース(API、テキスト、html、画像にかかわらず)にアクセスすることは基本的にはできません。これは開発ツールがFlex BuilderであろうがFlash CS3 Professionalであろうが関係ありません。Flash Playerのセキュリティなのです。

これを可能にするのがクロスドメインポリシーファイルです。
Adobe – デベロッパーセンター : クロスドメインポリシーファイルの仕様

<?xml version="1.0" ?>
<!DOCTYPE cross-domain-policy (View Source for full doctype...)>
<cross-domain-policy>
 <allow-access-from domain="許可するサイトのドメイン名" />
</cross-domain-policy>

Webサーバ上のルートディレクトリにcrossdomain.xmlが配置されている場合、allow-access-fromで許可されたサイト上にあるswfファイルからのアクセスが可能になります。allow-access-fromタグは繰り返しで、許可するサイトを複数指定することができます。google翻訳APIの翻訳結果JSONを読み込むswfでコールしているgoogle翻訳APIのURLはhttp://ajax.googleapis.com/ajax/services/language/translateですが、この結果を取得できているのはajax.googleapis.comのルートディレクトリにcrossdomain.xmlがあるからなのです。
続きを読む »

SQLiteに接続する際に、テーブルが存在していなかったらファイルをcreateするAIRアプリを作成する場合、以下のコードのようなコードを書いてしまうと、アンインストールしてもファイルは削除されません。

package
{
 import flash.data.SQLResult;
 import flash.data.SQLStatement;
 import flash.events.SQLEvent;
 import flash.filesystem.File;

 public class TestManager
 {
  private var _connection:ConnectionManager;
  private var arr:Object;

  public function TestManager()
  {
  }

  public function initTest():void {
   var file:File = File.applicationStorageDirectory.resolvePath("test.db");
   var str:String = "CREATE TABLE IF NOT EXISTS test (" +
    "id INTEGER PRIMARY KEY, " +
    "original VARCHAR(10));"

   _connection = new ConnectionManager();
   _connection.initConnection(file);
   _connection.execute(str, initTestHandler)
  }

  private function initTestHandler(event:SQLEvent):void {
   _connection.execute(
    "SELECT * FROM test " +
    "ORDER BY id desc;",
    selectHandler);
  }

  private function selectHandler(event:SQLEvent):void {
   var stmt:SQLStatement = event.currentTarget as SQLStatement;
   stmt.removeEventListener(SQLEvent.RESULT, arguments.callee);

   var result:SQLResult = stmt.getResult();

   if (result.data != null) {
    arr = result.data;
   }
  }

  public function load():Object {
   return arr;
  }
 }
}

続きを読む »

ActionScript3.0でJSON読み込む方法の続きです。たいしたことはやっていないのですが、google翻訳APIの翻訳結果JSONを読み込むswfのソースを公開します。ダウンロードはこちらから。

ポイントをいくつか。

1.一応MVCパターンで構成されています。WEB+DB PRESS Vol.46|gihyo.jp … 技術評論社の特集を参考にしました。

2.Web APIコール部分はHTTPServiceクラスを継承し、google翻訳APIコール部分をラップしている点でしょうか・・・

public class TranslateService extends HTTPService
{
public function TranslateService(rootURL:String=null, destination:String=null)
{
super(rootURL, destination);
}

public function initService():void {
this.method = "post";
this.url = "http://ajax.googleapis.com/ajax/services/language/translate";
this.addEventListener(ResultEvent.RESULT, onResult);
this.addEventListener(FaultEvent.FAULT, onFault);
}

private function Translate(v:String, q:String, languageFrom:String, languageTo:String):void {
var forms:URLVariables = new URLVariables();
forms.v = v;
forms.q = q;
forms.langpair = languageFrom + "|" + languageTo;
this.request = forms;
this.send();
}
}

続きを読む »

業務アプリ、Webサービス問わずデータ交換する場面っていろいろありますよね。XML、YAML、JSON、・・・、CSVなどなど。なかでもJSONは軽量でECMA-262, revision3(ECMAScript)準拠のJavaScriptをベースとしているので、JavaScriptで簡単に読み込むことが可能で、Ajax分野で広く普及しているデータ記述言語です。

今回はJSONをActionScript3.0で読み込む方法をご紹介します。

※ 開発にはFlexBuilder3.0を使用しています。

as3corelibを使うと本当に簡単に実装できちゃいます。
as3corelib – Google Code

このライブラリはJSON読込以外にもいろいろできるのですが、その他の使い方は後日ということで。
続きを読む »

NativeApplication.nativeApplication.startAtLogin = true;

の1行でスタートアップメニューにAIRアプリのショートカットが作成されるようになります。サンプルソースは以下の通り。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
<mx:Script>
<![CDATA[
private function initApp():void {
NativeApplication.nativeApplication.startAtLogin = true;
}
]]>
</mx:Script>
</mx:WindowedApplication>

但し、この値をfalseにしたからといってこのショートカットが削除されるわけではありません。

現在のユーザーがログインしたときは常にこのアプリケーションを自動的に起動するかどうかを指定します。
startAtLoginプロパティは、ユーザーがログインしたときにアプリケーションが自動的に起動することを指定するための、オペレーティングシステムで定義されるメカニズム のステータスを反映します。ユーザーは、オペレーティングシステムのユーザーインターフェイスを使用して、手動でステータスを変更できます。このプロパ ティは、ステータスを最後に変更したのが AIR アプリケーションとオペレーティングシステムのどちらであるかを示す現在のステータスを反映します。

NativeApplication – ActionScript 3.0 言語およびコンポーネントリファレンスガイドより引用。
続きを読む »