Flexフレームワークで変わるRIA開発の現場
連載インデックスへ
第4回

Flex開発の超便利ライブラリとスキン機能-3つのSWC


taiga.jp
廣畑 大雅
2010/8/5


as3corelibを使う際の注意点

 ここで注意しなければならないことがあります。それは、Flexフレームワークには、as3corelibが提供するクラスと同名のクラスがいくつか存在する(JPEGEncoderやPNGEncoder、ArrayUtil、StringUtilなど)ということです。

 それぞれ微妙に実装されている機能が異なるので、使用するときには気を付けてください。

図5 プロジェクト内に同名のクラスが存在するとき、コードヒントに候補が並ぶ
図5 プロジェクト内に同名のクラスが存在するとき、コードヒントに候補が並ぶ

as3corelibを使うためのコード例

 実際の使用例を紹介します。

  コード1 MD5ハッシュ文字列生成(Flex 4)
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx = "http://ns.adobe.com/mxml/2009"
xmlns:s = "library://ns.adobe.com/flex/spark"
xmlns:mx = "library://ns.adobe.com/flex/mx"
>

<fx:Script>
<![CDATA[
import com.adobe.crypto.MD5;
private function init():void {
trace( MD5.hash("taiga") ); //出力 : ea0fdc44dffd8440bde0c30b43869097
}
]]>
</fx:Script>

<s:applicationComplete>
<![CDATA[
init();
]]>
</s:applicationComplete>

</s:Application>

  コード2 ArrayUtilを使用して重複する要素を省いて配列をコピー(Flex 4)
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx = "http://ns.adobe.com/mxml/2009"
xmlns:s = "library://ns.adobe.com/flex/spark"
xmlns:mx = "library://ns.adobe.com/flex/mx"
>

<fx:Script>
<![CDATA[
import com.adobe.utils.ArrayUtil;
private function init():void {
var a :Array = [1, 1, 2, 2, 3, 4, 5];
var result :Array = ArrayUtil.createUniqueCopy(a);
trace(result); //出力 : 1,2,3,4,5
}
]]>
</fx:Script>

<s:applicationComplete>
<![CDATA[
init();
]]>
</s:applicationComplete>

</s:Application>

 いかがでしょうか。ものすごく地味でシンプルですが、しっかり仕事してくれていることが分かると思います。

【2】日本語文字コード変換ライブラリ「as3jcode」とは

 「as3jcode」は、Lyo Kato氏によって作成されたActionScript 3用の日本語文字コード変換ライブラリです。GitHub上でソースコードも含めてMIT Licenseに基付いて公開されています。

 as3jcodeは、以下の文字コード間の変換をサポートしています。

  • UTF-8
  • UTF-16
  • EUC-JP
  • ISO-2022-JP
  • Shift_JIS

Flash Player 6以降はデフォルトの文字列エンコーディングは「UTF-8」

 Flash Player 6以降では、明示的に以下のように定義しない限り、文字列のエンコーディングを「UTF-8」として処理します。

System.useCodepage = true;

 必然的にFlexアプリケーションも、この条件に該当します(参考:Macromedia Flash Player 6 以降でのエンコーディングについて)。ですが、外部サービスとの連携するときにUTF-8以外を使用しなければならない場合があります。

 さらにActionScriptのByteArrayクラスには、readMultiByte()やwriteMultiByte()などのメソッドがあります。これらを使用すれば、文字コードを変換することも可能なのですが、動作環境によって良からぬ結果を返すことがあります。

 as3jcodeは、これらの問題を解決してくれます。

as3jcodeを使うには

 これらのクラスを利用したい場合、ZIPファイルをダウンロードして、「lib」フォルダにあるas3jcodeのSWCファイルを使用します。

図6 as3jcodeのダウンロード
図6 as3jcodeのダウンロード

図7 Flexプロジェクト内libsフォルダにas3jcodeのSWCファイルを置く
図7 Flexプロジェクト内libsフォルダにas3jcodeのSWCファイルを置く

as3jcodeを使うためのコード例

 実際の使用例を紹介します。

  コード3 文字列をEUC-JPに変換
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx = "http://ns.adobe.com/mxml/2009"
xmlns:s = "library://ns.adobe.com/flex/spark"
xmlns:mx = "library://ns.adobe.com/flex/mx"
>
<fx:Script>
<![CDATA[
import org.coderepos.text.encoding.Jcode;
private function init():void {
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes("日本語の文字列(UTF-8)");
var eucBytes:ByteArray = Jcode.utf8_euc(bytes);
}
]]>
</fx:Script>

<s:applicationComplete>
<![CDATA[
init();
]]>
</s:applicationComplete>

</s:Application>

 ほかにも、UTF-8を軸にしたクラスメソッドJcode.to_euc()、Jcode.to_jis()、Jcode.to_sjis()や、ほかの文字コードのバイト列からUTF-8の文字列変換を行うクラスメソッドJcode.from_euc()、Jcode.from_jis()、Jcode.from_sjis()などが用意されています。

 機能が充実したライブラリなので、文字コードで悩んでいる方はぜひ試してみてはいかがでしょうか。

1-2-3

 INDEX
Flexフレームワークで変わるRIA開発の現場(4)
Flex開発の超便利ライブラリとスキン機能-3つのSWC
  Page1
3つのSWCファイルにまつわるTips
【1】業務用で超便利なライブラリ「as3Corelib」とは
Page2
【2】日本語文字コード変換ライブラリ「as3jcode」とは
  Page3
【3】デザインツールの拡張機能でスキンSWC作成
地味だがFlex業務アプリ開発には欠かせない


リッチクライアント&帳票 全記事一覧へ



HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間