Flex 4の最近のブログ記事
参加された皆様、お疲れさまでした。
私が担当したセッションの発表資料をアップしましたので、下記 URL よりご覧下さい。
告知が遅れてしまいましたが、Flex 4.5 モバイル マスターシリーズと平行して連載している Flex 4.5 SDK マスターシリーズ「第 2 回」の記事を担当しました。
Flex 4.5 SDK マスターシリーズ 第 2 回 Flex Spark コンポーネント版 Form / Formatter / Image の紹介
https://www.adobe.com/jp/joc/devnet/flex/articles/flex45_sdk_02.htmlFlex 4.5 から採用された新規コンポーネント (Form, Formatter, Image) についての紹介記事です。
本日、デジタルステージさんより発売の 「 BiND for WebLiFE* 5 」 にバンドルされている Flex 4 製 AIR アプリケーション 「 SiGN for WebLiFE* 」 の開発のお手伝いをさせていただきました。

Chief Programmer: NOZOMU MIURA (TECHILIFE Inc.,)
Engine Programmer: TAIGA HIROHATA (taiga.jp)
UI Programmer: KENSHI NISHIZUKA (RHYTHN)
Support Programmer: TAKUYA ISOHI (digitalstage inc.)
UI Design: iiiflow inc.
先日のエントリーに引き続き、寄稿した Flex 4.5 モバイル関連記事が Adobe Developer Connection に掲載されたので紹介します。
Flex 4.5 モバイル マスターシリーズ 第 5 回 Flex モバイルアイテムレンダラーの紹介
http://www.adobe.com/jp/joc/devnet/flex/articles/flex_mobile_05.htmlFlex モバイルプロジェクトの List コンポーネントで使用される、アイテムレンダラーについての紹介記事です。PC 版 Flex 4 のアイテムレンダラーと異なるお作法について解説しています。興味のある方は是非ご覧ください。
先日のエントリーに引き続き、寄稿した Flex 4.5 モバイル関連記事が Adobe Developer Connection に掲載されたので紹介します。
Flex 4.5 モバイル マスターシリーズ 第 4 回 Flex モバイルスキンの紹介
http://www.adobe.com/jp/joc/devnet/flex/articles/flex_mobile_04.htmlFlex モバイルプロジェクトのコンポーネントで使用される、モバイルスキンクラスについての紹介記事です。エディタでベタ打ちした FXG が含まれたサンプルソースも公開していますので、興味のある方は是非ご覧ください。
参加された皆様、お疲れさまでした。
私が担当したセッションの発表資料と、デモで使用したサンプル Android アプリ TigerMinesweeper の Flex モバイルプロジェクトをアップしましたので、下記 URL よりご覧下さい。
告知が遅れてしまいましたが、先月より Adobe Developer Connection にて Flex 4.5 モバイル マスターシリーズの連載が始まりました。「第 1 回」の記事を担当しています。
Flex 4.5 モバイル マスターシリーズ 第 1 回 Flex モバイルプロジェクトの紹介
http://www.adobe.com/jp/joc/devnet/flex/articles/flex_mobile_01.htmlFlash Builder 4.5 から採用された「 Flex モバイルプロジェクト」についての紹介記事です。
前回のエントリの続きですが、Zend AMF を使用して画像のバイナリデータを取得するときの注意事項は、以下の 2 点です。
- AMF3 形式で通信
- Zend_Amf_Value_ByteArray API で、AS3 の ByteArray 型に変換
例 :
service.php
<?php
require_once 'Zend/Amf/Server.php';
require_once 'Zend/Amf/Value/ByteArray.php';
$server = new Zend_Amf_Server();
$server->setClass('PHPService');
$server->setClassMap('TestResultVO', 'TestResult');
$response = $server->handle();
echo $response;
class PHPService {
public function test($args) {
$filename = 'hoge.jpg';
$file = fopen($filename,'rb');
$content = fread($file, filesize($filename));
fclose($file);
$result = new TestResult();
$result->bytes = new Zend_Amf_Value_ByteArray($content);
return $result;
}
}
class TestResult {
public $bytes;
}
?>
Test.mxml
<?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"
applicationComplete = "test()"
>
<fx:Script>
<![CDATA[
protected function test():void {
var responder:Responder = new Responder(onResult, onFault);
var connection:NetConnection = new NetConnection();
connection.objectEncoding = ObjectEncoding.AMF3;
connection.connect("http://*****/service.php");
connection.call("PHPService.test", responder, []);
}
protected function onResult(result:Object):void {
var data:TestResultVO = TestResultVO(result);
image.source = data.bytes;
}
protected function onFault(fault:Object):void {
}
]]>
</fx:Script>
<s:Image id="image" />
</s:Application>
TestResultVO.as
package {
import flash.utils.ByteArray;
[RemoteClass(alias="TestResultVO")]
public class TestResultVO {
public var bytes :ByteArray;
public function TestResultVO() {}
}
}
最近、お仕事で Zend AMF と戯れる機会がありまして、ハマった事柄を備忘録として残しておきます。
ドキュメントに記されている NetConnection.call() メソッドの引数は以下の通り。
public function call(command:String, responder:Responder, ... arguments):void
NetConnection.call() メソッドを使用して、PHP のサービス ( メソッド ) を呼び出すとき、call() メソッドの第 3 引数 (arguments) に渡す値の内容によって、AMF バージョンの解釈が変わることが分かりました。
結果は以下の通りです。
環境 : Flex 4.5, Zend AMF 1.11.7
//AMF0 として解釈
nc.call("PHPService.test", responder);
//AMF0 として解釈
nc.call("PHPService.test", responder, null);
//AMF3 として解釈
nc.call("PHPService.test", responder, []);
//AMF3 として解釈
nc.call("PHPService.test", responder, ["hoge", "fuga"]);
//AMF0 として解釈
nc.call("PHPService.test", responder, "hoge");
//AMF0 として解釈
nc.call("PHPService.test", responder, 111);
//AMF0 として解釈
nc.call("PHPService.test", responder, "hoge", "fuga");
//AMF3 として解釈
nc.call("PHPService.test", responder, [], "hoge", "fuga");
//AMF3 として解釈
nc.call("PHPService.test", responder, "hoge", "fuga", []);
//AMF0 として解釈
nc.call("PHPService.test", responder, 1, 2, 3, 4);
//AMF3 として解釈
nc.call("PHPService.test", responder, {});
//AMF3 として解釈
nc.call("PHPService.test", responder, new XML());
//AMF3 として解釈
nc.call("PHPService.test", responder, new Date());
//AMF0 として解釈
nc.call("PHPService.test", responder, true);
どうやら、arguments パラメータに非プリミティブ値 ( 複合値… Array、Date、Error、Function、RegExp、XML、XMLList など ) のオブジェクトが 1 つでも含まれていれば AMF3 として解釈されるようです。以下のように、NetConnection オブジェクトのエンコードを指定しても、無視されるので注意が必要です。
NetConnection.objectEncoding = ObjectEncoding.AMF3;
画像のバイナリを ByteArray として取得しようとしたときに、どハマりして困りました。
来週 2011 年 2 月 7 日 ( 月 ) に、工学社から Flex 4 の書籍が発売されます。
タイトルは『 Flex 4 プログラミングガイド』で、初の単行本…単著になります。
内容は、Flex 4 SDK についての解説がほとんどで、新機能と Spark コンポーネントについて掘り下げて書きました。( 目次は工学社のサイトから )
Flex 4 マスターシリーズが基になっているような箇所もありますが、元々私が担当していた箇所は加筆し、担当していなかった箇所はほぼゼロから書き下ろしています。 初級~中級者をターゲットにしていますが、日ごろ業務で使いこなしている上級者も退屈しないような内容にしたつもりです。
サンプルプロジェクトの FXP を 70 点強収めた CD-ROM 付きで、価格は ¥2,415 ( 本体 ¥2,300 ) です。
同業者さまはもちろん、教育、学術系の方々も、よろしければ是非。

