Flash Liteについて
クライアントの依頼で最近携帯(ドコモ)向けのFlash Liteというのをやっている。
このFlashLiteではJPEG画像があまり何個も使えないという事が判明。
解決策としては、GIF画像にしてみる事。
--------
クライアントの依頼で最近携帯(ドコモ)向けのFlash Liteというのをやっている。
このFlashLiteではJPEG画像があまり何個も使えないという事が判明。
解決策としては、GIF画像にしてみる事。
--------
ひとつのFlashファイルで構成されているサイトのシーン別とかでアクセス解析をしたい場合、そのままだとログにはそのひとつのFlashファイルにアクセスしたといったログしか残らず、そのファイル内のどのシーンにアクセスして、どのシーンにはアクセスしてないなどのことは分らない。
しかし、Flashファイルからサーバにシーンが変わるたびにあるファイルを呼び出させてやるとそれはログが残りますので解析出来るようになる。
具体的には・・・
flashcount.swf(名前に決まり無し)といった何にもない外部SWFファイル用意して、解析したいSWF(Flashファイル)から読込ませるようにする。
各シーンの1フレーム目のフレームスクリプトで
loadMovieNum("http://○○○.com/flashcount.swf?page=image", 100);
というAction Scriptを仕込む。
「?」以下の「page」が変数名で「image」が値。
このシーンが「image」シーンなので「image」にした。変数名も任意だが、ログを解析する際に分かり易い名前にする。
最後の「100」はレベル値。レベルとはレイヤーみたいなものらしい。
100番目のレイヤーに「flashcount.swf?page=image」を読込んでることになる。影響のなさそうな「レベル」にしておけばいくらでもいいと思う。
※ちなみに影響ありそうなのは、「0」とか、「1」かな。
後はログを解析する。
「flashcount.swf?page=image」で検索すれば見つかるだろう。
「movie」シーンに移動したなら
「flashcount.swf?page=movie」で検索すれば見つかるだろう。
それらを集計すればどのシーンにどれだけアクセスがあったかとか、
どういう遷移で移動したかがわかる。
--------
Flash5からXMLが扱えるようになっても、なかなか使う機会の無いXML。でも仕事の関連でちょっと勉強することに・・・。それで整理してみました。
---[基本的なXMLファイルの読み込みActionScript]----------------------
myxml = new XML();
myxml.load("dealers.xml");
myxml.onLoad = LoadXML;
function LoadXML(success) {
if (success == true) {
rootNode = myxml.firstChild;
totalNode = rootNode.childNodes.length;
secondNode = rootNode.firstChild.nextSibling;
Zokusei = secondNode.attributes.URL;
Atai = secondNode.firstChild.firstChild.nodeValue;
}
}
myxml.ignoreWhite = true;
------------------------------------------------------------------------------
---[dealer.xmlファイル]---------------------------------------------------
<dealers>
<dealer URL="http://www.hogehoge.com/taiwan">
<name>台湾</name>
<details>台湾の代理店について</details>
</dealer>
<dealer URL="http://www.hogehoge.com/singapore">
<name>シンガポール</name>
<details>シンガポールの代理店について</details>
</dealer>
<dealer URL="http://www.hogehoge.com/newzea">
<name>ニュージーランド</name>
<details>ニュージーランドの代理店について</details>
</dealer>
</dealers>
------------------------------------------------------------------------------
上のAction Scriptはだいたいメイン1フレーム目に仕込んでおきます。
その下の「dealer.xml」というXMLファイルを読み込んでいます。
「LoadXML」というカスタムコマンドでXMLファイルから取得した値を各変数に入れています。
その他変数をダイナミックテキストで表示させてやると分かりやすいです。
最後の「myxml.ignoreWhite = true;」はちゃんとXMLを読み込むためのおまじない。何故かFlashでは空白や改行をノードと考えてしまうらしいので、それをしない為の文言です。
[FlashでのXMLコマンド?解説]
1.firstChild:最初の子供(そのままやん)
上の例でいえば・・・
rootNode.firstChildというのは、
<dealer URL="http://www.hogehoge.com/taiwan">
<name>台湾</name>
<details>台湾の代理店について</details>
</dealer>
を表します。
2.childNodes:子供ノード
rootNode.childNodesとは、
台湾、シンガポール、ニュージーそれぞれの<dealer>~</dealer>を表し、
rootNode.childNodes.lengthとは、
<dealer>~</dealer>がいくつ存在するのかを表します。今回の例で言えば、台湾、シンガポール、ニュージーの3つなので返す値は「3」となります。
3.nextSibling:その次のノード
rootNode.firstChild.nextSiblingであれば、
firstChild...台湾の次なのでシンガポール、
<dealer URL="http://www.hogehoge.com/singapore">
<name>シンガポール</name>
<details>シンガポールの代理店について</details>
</dealer>
を表します。ちなみに戻る場合は[previousSibling]です。
4.attributes.[属性名](今回では attributes.URL)で属性値を返します。
secondNode.attributes.URLであれば、「http://www.hogehoge.com/singapore」を返します。
5.nodeValue:ノードの値です。
secondNode.firstChild.firstChild.nodeValueであれば、シンガポールの最初の子供ノード「<dealer>」のさらに最初の子供ノード「<name>」の値、つまり「シンガポール」を返します。
[変数について]
rootNode:一番上の階層のタグ(ルート)ここでは、<dealers>~</dealers>。
totalNode:rootNodeの子供ノード、ここでは<dealer>~</dealer>の数。3店舗分なので「3」。
secondNode:rootNodeの最初の子供ノード(台湾代理店)の次のノード、つまりシンガポール代理店分の<dealer>~</dealer>までを表します。
Zokusei:secondNodeの属性「URL」の属性値。
Atai:secondNodeの最初の子供ノードのそのまた最初の子供ノード、ここでは<name>タグの値。
参考URL:マクロメディア
--------
クライアントさんのサイトでFlashによる代理店表示というのをやってまして、
現状のままだと更新が大変になってきているので、
いっちょ、代理店データをXMLで管理して更新を簡素化しようと思いました。
以前のエントリでもFlashでXMLについて書いたんですが、本格的に仕事でやるのは初めて。実際、やってみるとこれが結構大変でしたが、何とか完成しました!
例を挙げて説明すると・・・
最近 HotWiredJapan の WebMonkeyで良さげな記事を発見。
FlashオブジェクトをHTMLにembedする際に、よくFlashのパブリッシュ機能を使ってするんだが、
これがウェブ標準に沿っていないHTMLを吐き出し、HTMLファイル全体のソースも長くなってしまい、かなり編集しにくい。
それを外部Javascriptを使う事ですっきりさせてしまおう。というものだ。
「ウェブ標準のフラッシュ・オブジェクト自在術:救世主JavaScript参上」
Flashをembedしたい部分をDIVタグでid名を指定してやり、そこにJavascriptでFlashオブジェクトを読み込んでやるというもの。Flashのバージョンチェックもやってくれる優れものです。DIVタグ内にFlashやJavascriptに未対応なユーザー向けのコメントや画像も入れれる!
前回では、「MovableTypeのテンプレートを編集する」でフリーのプラグイン「Compare」とか使いましたが、
今回は「MP3プレーヤーをFlashで作成する」です。分かればこっちの方が簡単なんですけど、いろいろ試行錯誤したためにこっちの方が、時間かかりました。
今回はFlashなので、もちろんソフトもFlash?を使います。今回使用したFlashバージョン8Professionalです。多分、MX2004でも出来ると思います。