dev.convexstyle.net

2006年08月 アーカイブ

MouseEvent in ActionScript 3.0

del.icio.us hatena bookmark

数週間前からようやく最新バージョンの ActionScript 3 を個人的に勉強し始めました。
手始めに、ActionScript というよりは、Object Oriented Programming の基本概念や Java などの本をこの数週間読みこんでいた。今後も引き続きこんな日々が続くと思う。結構、面白い。

Adobe の ActionScript に対する打ち出し方は ActionScript 1, 2 は従来の Flash Designer、ActionScript 3 はプログラム重視の Flash Developer らしいですが、確かに使ってみて、ActionScript 3 はデザインや表現などと絡める場合にはあまり適さず、ActionScript 2 の方が flexibility が 高いような気がする。(少なからず、今までのところ。)もともと売りは大規模なアプリケーションを UI でリッチな形で提供したい場合とか、これまで Java などで開発してたプログラマーの人が Flex で mxml と ActionScript 3 を使用して簡単に Rich Internet Application 開発出来る様にすることだと思うので、ActionScript 3 の流れは実際、理にはかなっているのかと思う。それでも、Adobe のセミナーなどで見て Flash Player 9 の新しい Virtual Machine の処理速度がかなり向上しているようだったので、ActionScript 3 のこれからの可能性は大きく感じる。何より、新しい言語スタイルに触れることは楽しい。

当分、自分への ActionScript 3 の整理を兼ねて、blog を定期更新していこうと思う。



まずは、MouseEvent。

続きを読む "MouseEvent in ActionScript 3.0" »

E4X in ActionScript 3.0

del.icio.us hatena bookmark

従来の ActionScript 2.0 でサポートされていた XML Class は XML Document と名前を変更し flash.xml package 内に移行され、ActionScript 3.0 からは XML データを処理するために、ECMAScript for XML (E4X) specification がサポートされた。
E4X とは ECMA-357 standard の ECMA International によって標準化された XML を処理する ECMAScript 拡張言語。このクラス導入により、Flash 内での XML parse 処理が格段に容易になっただけではなく、標準化された言語仕様に基づくことで、Javascript 等の他言語へのノウハウのバイパスがスムーズになりそう。


ECMAScript for XML


今回は、現在個人制作で Flickr を使った簡単ツールを作っているため、この制作過程のものをサンプルとして使用し、Zend Framework で Flickr API から取得した情報を XML 形式で書き出し、この XML を E4X で parse する様にする。

【サンプルファイル】
http://www.convexstyle.net/samplefiles/E4X/test.xml
http://www.convexstyle.net/samplefiles/E4X/E4X.zip

続きを読む "E4X in ActionScript 3.0" »

Flickr の新着 RSS 読み込み時の crossdomain 問題回避方法

del.icio.us hatena bookmark

昔、www.flickr.com は crossdomain.xml で に設定されていた記憶があった(この記憶も定かではないですが。。。)ので、Flickr の新着アップロード写真の RSS を flash 内でダイレクトに parse して、あるアプリケーションでビジュアライズしていたのですが、自分のサーバにアプリケーションをアップロードしてテストしたら、最近は crossdomain.xml 自体が www.flickr.com のサーバにはすでに存在せず、当然の結果ですが、別サーバにある自分のアプリケーションから flickr の新着用 RSS を crossdomain のセキュリティ問題で読み込みに失敗。
今は Flickr の API Key を使えば簡単に crossdomain を回避して何でも作れるんですが、世界中の多くの人が写真をアップロードしていく Flickr の新着 RSS はタイムリーに変化していく、アプリケーションの作り手にはかなり面白いリソースであるため、どうしてもこの RSS を使用したい願望から、ソリューションはサーバ側で proxy 処理をすることにしました。

Flickr の新着 RSS 読み込み時の crossdomain 問題回避方法
Flickr の新着 RSS 読み込み時の crossdomain 問題回避方法


単純な RSS の読み込みなので reverse proxy の様な Apache レベルの設定ではなく、PHP で proxy 処理を作成。PEAR の HTTP_Request を使用して簡単に実装できました。以下が簡単な実装例の PHP スクリプトサンプルです。



<?php

require_once('HTTP/Request.php');
define('XML_URL', 'Flickr の新着写真用 RSS Feed の URL');
$cacheOut = md5(microtime());
$req =& new HTTP_Request(XML_URL.'&'.$cacheOut);

if(!PEAR::isError($req->sendRequest())) {
header('Content-type: text/xml; charset=UTF-8');
echo $req->getResponseBody();
}

?>


これを Flash 側で XML.load で読み込めば、別サーバの RSS も、crossdomain を回避してすんなり xml を読み込めます。また、ここから flash 内で parse した thumbnail は http://static.flickr.com/64/228329290_7e7fb1c681_s.jpg の様に static.flickr.com のサーバ上にあるんですが、これは何故か crossdomain を意識せずに flash 内に読み込まれました。liveHTTPheaders で http の通信を調べてみたんですが、flash 側から static サーバにアクセスした際に crossdomain を見ていないので、この点に関しては謎です。


【使用技術】
PEAR(HTTP_Request)、PHP 5、Flickr の新着 RSS、Flash 8