2009 April 10

サムネイルクリックで画像を表示させるFlash。

桜は散り際がいちばんいいです。ツノッチです。

Flashのスライドショーみたいなので、
サムネイルをクリックしたら大きい画像を読み込んで表示する
作品をよく見かけるので、簡単なサンプルを作ってみました。

写真素材がなかったので、サンプル画像になってますけど、
XMLで管理してるので、写真に切り替えたりするのは
簡単にできるようにしてます。

画像の管理はXMLが便利

最近はFlashとXMLの連携を中心に勉強することがおおいです。
実際サイトを運営したりすると、更新の手間など汎用性があるものが
求められると思うので、そんなときXMLは便利です。

今回のFlashの概要
XML thumb.xml
<?xml version="1.0" encoding="utf-8"?>

  
    
img/sample01.png
img/thumb01.png
img/sample02.png
img/thumb02.png
img/sample03.png
img/thumb03.png
img/sample04.png
img/thumb04.png

AcrionScriptは以下のような感じです。

/*************************************
基本情報
*************************************/
import fl.transitions.Tween;
import fl.transitions.easing.*;
var myXML:XML;
var xmlPath:String = "thumb.xml";
var xmlLoader:URLLoader = new URLLoader(new URLRequest(xmlPath));
var loader:Loader;
var imgNum:uint = 4;
/*************************************
配列
*************************************/
var mainFld:Array = new Array();
var thumbFld:Array = new Array();
xmlLoader.addEventListener(Event.COMPLETE, setXmlLoad);
function setXmlLoad(event:Event):void{
    myXML = new XML(event.target.data);
    startThumb();
    startMain();
}
function startThumb():void{
    for(var i:uint = 0; i <= imgNum - 1; i++){
        loader = new Loader();
        thumbFld.push(loader);
        thumbFld[i].load(new URLRequest(myXML.item[i].thumb));
    }
    setThumbImg();
}
function startMain():void{
    for(var i:uint = 0; i <= imgNum - 1; i++){
        loader = new Loader();
        mainFld.push(loader);
    }
}
function setThumbImg():void{
    for(var i:uint = 0; i <= imgNum - 1; i++){
        this["thumb" + (i + 1)].addChild(thumbFld[i]);
        this["thumb" + (i + 1)].buttonMode = true;
        this["thumb" + (i + 1)].mouseChildren = false;
        this["thumb" + (i + 1)].addEventListener(MouseEvent.CLICK, setThumbClick);
    }
}
function setThumbClick(event:MouseEvent):void{
    setAction(event.target);
}
function setAction(obj:Object):void{
    var targetNum:uint = obj.name.substr(-1, 1) ;
    var targetMain:String = "load0" + targetNum;
    mainFld[targetNum - 1].load(new URLRequest(myXML.item[targetNum - 1].main));
    var myTween:Tween = new Tween(load_mc.getChildByName(targetMain), "alpha", None.easeOut, 0, 1, 0.3, true);
    load_mc.setChildIndex(load_mc.getChildByName(targetMain), (load_mc.numChildren - 1));
    this["load_mc"]["load0" + targetNum].addChild(mainFld[targetNum - 1]);
}

サムネイルクリックで画像表示Flashサンプル»

関連する記事

TAGS

TRACK BACK URI

http://www.dear-webdesign.com/mt/mt-tb.cgi/38

POST YOUR COMMENTS

Tag Cloud