AS3S.ORG

ACTIONSCRIPT 3.0 SOURCES

GoogleとYahoo!がFlash検索を改善

AdobeがFlashの検索インデックス化技術をGoogleとYahoo!に提供することでFlashコンテンツが検索されやすくなるそうです。
具体的な技術は明らかにされていませんがWebmaster Central blogのQ&Aから気になる点をまとめると、

Q: What about non-textual content, such as images?
At present, we are only discovering and indexing textual content in Flash files.
Also note that we do not index FLV files, such as the videos that play on YouTube, because these files contain no text elements.

インデックスされるのはSWF内のテキスト情報のみ。
画像やFLVファイルはインデックスされない。

Q: What are the current technical limitations of Google’s ability to index Flash?
1. Googlebot does not execute some types of JavaScript. So if your web page loads a Flash file via JavaScript, Google may not be aware of that Flash file, in which case it will not be indexed.

JavaScriptでSWFをロードしているとインデックスされない場合あり。

2. We currently do not attach content from external resources that are loaded by your Flash files. If your Flash file loads an HTML file, an XML file, another SWF file, etc., Google will separately index that resource, but it will not yet be considered to be part of the content in your Flash file.

外部ファイルは個別にインデックスされるが、元のSWFファイルの一部とはみなされない。

とのこと。
まだ開発中とのことですが、逆にJavaScriptや外部ファイルに中途半端に対応されるよりも、HTMLにはインデックスされたいコンテンツを記述して、SWFObjectなどJavaScriptでSWFコンテンツに置き換えられる方がありがたい気もしますが。。。

Written by admin

July 1st, 2008 at 10:48 pm

Posted in misc.

getter/setterを利用してイベントリスナーを動的に切り替える

AS2では

Mouse.addListener(this);

とすることで、MouseDown時に、this.onMouseDownメソッドが呼ばれるようになります。

function onMouseDown() {
    trace("default");
}
function test() {
    trace("test");
}
Mouse.addListener(this);
this.onMouseDown = test;

などとすることで、addListenerした後でもonMouseDownメソッドを動的に切り替えることができます。

AS3で採用されたイベントモデルでは、addEventLisntener時にイベントリスナーの参照を引数として指定するようになり、また、ほかのモダンな言語と同様、参照渡し(call by reference)ができないため、以下のようなコードではAS2に相当する動的なリスナーの切り替えができません。

function onMouseDown(event:MouseEvent):void {
    trace("default");
}
function test(event:MouseEvent):void {
    trace("test");
}
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
onMouseDown = test; //意味なし

上記の例では、addEventListenerで渡されるのは、その時点でのonMouseDownの値なので、その後にonMouseDownの値を変えても意味がありません。
【参考】AS3では関数の引数はすべて値渡し(call by value)である

そこで、下記のようにgetter/setterメソッドを利用することで同じような動作が実現できます。
この例では、最初のMouseDownと2回目以降のMouseDownで呼ばれるリスナー関数が切り替わります。

Read the rest of this entry »

Written by admin

February 11th, 2008 at 11:10 pm

Posted in misc.

複数の非同期処理の完了を通知するQueueクラス

複数のファイルを読み込む場合など、複数の非同期処理の進行状況とすべてが完了したタイミングをイベントとして受け取ることができるQueueクラスを公開しました。

org.as3s.Queue

サンプルのダウンロードはこちらから。

クラスを公開するというほど大げさなものではありませんが、なるべく標準的なイベントモデルには変更を加えずに、複数イベントの完了を通知することができます。
仕組みはいたって単純で、各イベントを受け取るリスナーを Queue(待ち行列)に追加し、イベントが呼ばれたらQueueから削除しているだけです。
Queueが削除されたタイミングとQueueがなくなったタイミングでイベントが発生し、
queue.length / queue.totalで進行状況を知ることができます。

また、エラー発生時にもリスナーをQueueから削除するようにしておけば、ファイルが一部取得できなかった場合にもQueueの完了イベントを受け取ることができます。

Read the rest of this entry »

Written by admin

February 3rd, 2008 at 5:54 pm

Posted in Queue

AS3で陥りがちなメモリーリーク

AS3ではガベージコレクションによるメモリ管理が導入されています。
ガベージコレクションとは、簡単に言えば「どこからも参照されなくなったオブジェクトがころあいを見計らって勝手にメモリから消去される」仕組みです。
この「どこからも参照されなくなった」という条件がクセモノで、気をつけないとすぐにメモリーリークの原因になります。

Read the rest of this entry »

Written by admin

January 26th, 2008 at 10:51 am

Posted in misc.

メソッドクロージャとバインドメソッド

「メソッドクロージャ」という用語の使われ方が混乱しているようなので詳しく調べてみました。

Read the rest of this entry »

Written by admin

January 24th, 2008 at 5:02 pm

Posted in misc.

イベントリスナーの引数のデフォルト値をnullにする

AS3で採用されたイベントモデルでは、イベントリスナーの引数として必ずEventクラス(またはそのサブクラス)のオブジェクトが渡されますが、場面によっては、イベントで呼び出されるメソッドを直接呼び出したい場合があります。

そのような場合は、引数となるEventオブジェクトのデフォルト値をnullにしておくと便利です。
下の例では、testメソッドを直接実行したり、Timerを使って1秒後に呼び出したりしています。

Read the rest of this entry »

Written by admin

January 22nd, 2008 at 10:11 pm

Posted in misc.

eclipseでタブのスタイルを変更する

eclipse+Flex Builder plug-inの場合、
タブの形がeclipse標準のものになりますが、これがちょっと独特な形をしています。

「設定」→「一般」→「外観」で、
「トラディショナル・スタイルのタブを表示」をチェック
すると、すっきりします。

Written by admin

January 22nd, 2008 at 11:58 am

Posted in Environment

Flex Builder 3(eclipse)のワークスペースの管理

開発環境の全体像を掴むことは、気持ちよくプログラムを書くためにも重要です。

Flex Builderは、eclipseベースで作られているため、
ワークスペース、ワークベンチ、ワーキングセット、パースペクティブなど、
eclipseの様々な用語に戸惑います。

以下、それぞれの用語の概念とポイントをご紹介します。

Read the rest of this entry »

Written by admin

January 15th, 2008 at 2:11 am

Posted in Environment

Flex Builder 3 beta 3(Eclipse Plugin)のインストール

Flex Builder 3 beta 3 は Adobe Labs からダウンロードすることができます。

手順は以下の通り。

Read the rest of this entry »

Written by admin

January 15th, 2008 at 1:42 am

Posted in Environment

Embedタグを用いたFlash CS3とFlex Builderの連携

これまでは、あくまでFlex BuilderをFlash CS3のエディタとして利用する(デバッグ&ビルドはFlash CS3で行う)方法を紹介してきましたが、できればFlex Builderでデバッグ&ビルドまで行える、もしくはFlash CS3でもFlex Builderでも同じものをビルドできるのが理想的と言えます。

いくつかの方法を試してみた中で発見した、今のところ最も理想に近い方法を紹介します。
ポイントはFlex BuilderでSWFを読み込むためのEmbedタグを利用することです。

Read the rest of this entry »

Written by admin

January 7th, 2008 at 1:25 am

Posted in Environment