SWFAddressでFash内ページにURL付けてみる(2)

前回の記事のflaファイルについての説明。(説明するほどのものでもないですが…)
使用しているメソッドは基本的に以下の2つ。

SWFAddress.setValue()

URLを変更するときに使用。
例えばSWFAddress.setValue("about")とすると、URLが
http://~flashを置いてるURL#about
というように変わる。
単にURLを変えたいだけなら、これひとつでどうにかなります。ボタンを押したタイミングや、あるフレームに飛んだタイミングなど、URLを変更したいところでSWFAddress.setValue("なになに")と書くだけ。

SWFAddress.setTitle()

ページタイトルを変更するときに使用。
例えばSWFAddress.setTitle("blog | about")とすると、ページタイトルが
blog | about
に変わります。

以上2点を踏まえてflaファイルのスクリプトの解説。
 

ACTIONSCRIPT:
  1. var title_obj:Object = {top:"", about:" | 会社概要", works:" | 制作実績", recruit:" | 採用情報"};
  2. /////////////////////////////
  3. function makeTitle(ttl:String):String {
  4.  if (title_obj[ttl] == undefined) {
  5.   return "SWFAddressテストサイト";
  6.  } else {
  7.   return "SWFAddressテストサイト"+title_obj[ttl];
  8.   }
  9. }

3行目~11行目
ページタイトルを取得するためのスクリプト。
SWFaddressのサンプルファイルではだいたいページタイトルをsetValueで指定したvalue値をそのまま使っていますが、日本人なのでページタイトルには日本語を使いたい。でもsetValueで日本語は使えないので最初にtitle_objというオブジェクト作って、その中で全タイトルを指定しています。
 
13行目のSWFAddress.setStrict(false);はおまじないみたいなものでこれがないとちゃんと動きません。
 

ACTIONSCRIPT:
  1. SWFAddress.onChange = function() {
  2. var value = SWFAddress.getValue();
  3. if (_currentframe == 1 && value == "") {
  4. play();
  5. } else {
  6. gotoAndPlay("$"+value);
  7. }
  8. SWFAddress.setTitle(makeTitle(value));
  9. };

14行目~23行目
setValueしたときは同時にflash内の同じ名前のフレームラベルの場所に飛びたい。ページのタイトルも変えたい。それらをいちいちボタンやフレームに書くのは面倒なので、onChangeイベントにまとめて書いておきます。onChangeイベントはsetValueを使ったときや、こんなふうにディープリンクへ直接飛んだときにも呼び出されるので便利です。
 
24行目以降は省略しますが、ボタンを押したらsetValueするように指定しています。

ドルマークについて

このflaファイルはSWFAddressのサンプルsamples/adobeフォルダ内のflaファイルを参考に作ったものです。ファイルの中のフレームラベルの名前は最初にドルマークがついたものになっており、わざわざ
gotoAndPlay("$"+value)
とこのような書き方でドルマークつきのフレームラベルへ飛ぶようになってます。なぜわざわざドルマークを使っているのでしょうか。
ドルマークを使わないとこのようになります。(flaファイル)一見ちゃんと動いているようですが、こんなかんじでディープリンクへ直接飛ぶと、ナビゲーションボタンが効かなくなっています。1フレーム目で指定したボタンへのイベント指定が飛ばされてしまっているようです。
ドルマークを使った場合はディープリンクへ直接飛んでもちゃんとナビゲーションボタンが効きます。なぜこうなるのかasファイルとかjsファイルをちゃんと読めばわかるのかもしれませんが、それは…、また今度がんばろうと思います。

COMMENTS [2]

  1. 名古屋・岐阜のホームページ制作 :

    いろいろとSWFAddressが説明してあるサイトを見たのですが、
    一番わかりやすかったです!
    ありがとうございました。

    6 月 8th, 2009 at 19:29:59
  2. ぽこ :

    すごくわかりやすい!!
    ありがとうございます*参考にFLASH制作頑張ってみます。

    7 月 15th, 2010 at 1:10:03

トラックバック URL :