« Snippets に参加 | メイン | THE PROCESSING MATCH »

SWFAddress2をSWFObject2でつかってみる

del.icio.us it!   hatena bookmark
<追記>  200811.17
割と情報が古くなってます。
swfaddressを利用したい方はProgressionを利用することを強く強くおすすめします!!
h1_logo.png
ProgressionはFlashサイトを構築する為のフレームワークで、これを利用することで面倒なスクリプトを書かずにサイトが構築できます。
</追記>
bigchuにSWFAddress2調べとけやっ!って命令された(ウソ)ので試してみた。

せっかくなのでAS3かつSWFObject2でやってみるよ。

Asual | SWFAddress - Deep linking for Flash and Ajax
http://www.asual.com/swfaddress/
swfobject - Google Code
http://code.google.com/p/swfobject/

SWFAddress2.0の新機能については
Asual | Blog - SWFAddress 2.0
http://www.asual.com/blog/swfaddress/2007/11/16/swfaddress-2.html
日本語訳
[JS]フラッシュにパーマリンクを作成できる -SWFAddress 2 | コリス
http://coliss.com/articles/build-websites/operation/javascript/635.html

さんぷる
SWFAddress Test TOP
http://labs.un-q.net/flashcs3/swfaddress2/
flaファイル含むソースはこちら
http://labs.un-q.net/flashcs3/swfaddress2/swfaddresstest_src.zip

AS3
package {

    import flash.display.*;
    import flash.events.*;
    import SWFAddress;
    import SWFAddressEvent;

    public class SWFAddressTest extends MovieClip {
        
        private var currentPage:*;
        
        public var p1_btn:MovieClip;
        public var p2_btn:MovieClip;

        function SWFAddressTest() {

            p1_btn.buttonMode = true;
            p1_btn.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
                SWFAddress.setValue("/p1");
            });            

            p2_btn.buttonMode = true;
            p2_btn.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
                SWFAddress.setValue("/p2");
            });

            SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleSWFAddress);
                        
        }

        private function handleSWFAddress(e:SWFAddressEvent):void {

            trace("address : " + e.value);

            claerPage();
            
            switch (e.value) {

            case '/':
                SWFAddress.setTitle("SWFAddress Test TOP ");
                currentPage = addChild(new pagetop);
                break;

            case '/p1/':
                SWFAddress.setTitle("SWFAddress Test Page1 ");
                currentPage = addChild(new page1);
                break;

            case '/p2/':
                SWFAddress.setTitle("SWFAddress Test Page2 ");
                currentPage = addChild(new page2);
                break;

            default:
                trace('error page');
                SWFAddress.setTitle("SWFAddress Error Page");
                currentPage = addChild(new pageerror);
                break
            }
            
        }

        private function claerPage():void {
            if (currentPage != null) {
                removeChild(currentPage);
            }
        }
    }
}

HTML
swfのパスのあとに new Date().getTime() ってしてるのは開発中にキャッシュしないようにしてるためです。
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>SWFAddress Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript" src="js/swfobject.js"></script>
        <script type="text/javascript" src="js/swfaddress.js"></script>
        <script type="text/javascript">
            swfobject.embedSWF('swfaddresstest.swf?' + new Date().getTime(), 'swf', '300', '300', '9.0.45', 
                'swfobject/expressinstall.swf', {}, {bgcolor: '#ffffff', menu: 'false'}, {id: 'hoge'});
        </script>

    </head>
    <body>
        <div id="swf">
          Flash Playerがうんぬんかんぬん
        </div>
        
    </body>
</html>


最近あまり仕事でAS書いてないなー。
bigchuがAS3で仕事ゴリゴリやってるからそのうち何か書いてくれるでしょう。

: AS3を日和 - 酒は血液、呑んだら献血
http://d.hatena.ne.jp/bigchu/20071203/1197349366


Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編] 集合知プログラミング ビジュアライジング・データ —Processingによる情報視覚化手法 御岳百草丸 1200T

トラックバック

このエントリーのトラックバックURL:
http://un-q.net/mt-tb.cgi/246

コメントを投稿

書いたよ!