麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 辦公 > Flash > 正文

AS3.0 通過(guò)類來(lái)實(shí)現(xiàn)一個(gè)gallery

2024-09-12 17:50:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
通過(guò)類來(lái)實(shí)現(xiàn)一個(gè)gallery

說(shuō)明:一個(gè)比較簡(jiǎn)單的相冊(cè),通過(guò)類來(lái)實(shí)現(xiàn)。

演示:http://www.live-my-life-with-yuyi.com/as3_cases/gallery_class/

準(zhǔn)備工作:打開源文件class_final.fla,點(diǎn)擊屬性里的發(fā)布設(shè)置,點(diǎn)擊Actionscript3旁邊的設(shè)置,在最下面的classpath里,引入classes_final的文件夾的路徑,然后點(diǎn)擊確定,前期工作就準(zhǔn)備完了。

代碼:

唯一的一個(gè)類文件:ImageGallery.as

復(fù)制代碼 代碼如下:

package interactive.gallery 

    import flash.display.*; 
    import flash.events.*; 
    import fl.transitions.*; 
    import fl.transitions.easing.*; 
    import flash.filters.*; 
    import flash.net.*; 
    public class ImageGallery extends MovieClip 
    { 
        var xml:XML; 
        var xmlList:XMLList; 
        var xmlLoader:URLLoader = new URLLoader(); 
        var container:MovieClip = new MovieClip(); 
        var imageLoader:Loader; 
        var segments:Number; 
        var currentSegment:int; 
        var fullLoader:Loader = new Loader(); 
        var xmlPath:String; 
        var thumbAtt:String; 
        var fullAtt:String 
        public function ImageGallery(path:String,thumb:String, full:String) 
        { 
            section1 
        } 
        function xmlLoaded(event:Event):void 
        { 
            section2 
        } 
        function changeThumb(event:MouseEvent):void 
        { 
            section3 
        } 
        function showPicture(event:MouseEvent):void 
        { 
            section4 
        } 
    } 


section1代碼:

復(fù)制代碼 代碼如下:

xmlPath = path; 
thumbAtt = thumb; 
fullAtt = full; 
container.x = 25; 
container.y = 25; 
fullLoader.x = 200; 
fullLoader.y = 25; 
container.addEventListener(MouseEvent.MOUSE_MOVE, changeThumb); 
container.addEventListener(MouseEvent.CLICK, showPicture); 
xmlLoader.load(new URLRequest(xmlPath)); 
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded); 
container.filters = [new DropShadowFilter()]; 
addChild(container); 
addChild(fullLoader); 

這段代碼的功能就是在初始化類時(shí),給一些以后會(huì)用到的變量賦值,因?yàn)檫@些變量是全局變量,所以后面的function都能用。
對(duì)container添加了監(jiān)聽事件,監(jiān)聽鼠標(biāo)移動(dòng)和點(diǎn)擊。
然后載入xml文件,當(dāng)xml載入完成后,執(zhí)行xmlLoaded函數(shù)
然后對(duì)container應(yīng)用了陰影濾鏡,這個(gè)container就是將來(lái)我們要載入圖片的mc。
然后將container和fullLaoder放到舞臺(tái)上,fullLoader將來(lái)會(huì)載入大圖。

section2

xml = XML(event.target.data);
xmlList = xml.children();
for (var i:int = 0; i < xmlList.length(); i++)
{
    imageLoader = new Loader();
    imageLoader.load(new URLRequest(xmlList[i].attribute(thumbAtt)));
    container.addChild(imageLoader);
}
當(dāng)xml載入完成后就會(huì)執(zhí)行這個(gè)函數(shù),先是獲取xml對(duì)象列表,然后獲取xml的子元素。這個(gè)在前面的教程提及過(guò)。
遍歷子元素,然后通過(guò)Loader載入圖片,并將imageLoader添加到container里。

section3

復(fù)制代碼 代碼如下:

segments = container.width / container.numChildren; 
currentSegment = Math.floor(container.mouseX / segments); 
if (currentSegment <= container.numChildren - 1) 

    for (var j:int = 0; j < container.numChildren; j++) 
    { 
        container.getChildAt(j).visible = false; 
    } 
container.getChildAt(currentSegment).visible = true; 


這個(gè)函數(shù)是響應(yīng)鼠標(biāo)在縮略圖上移動(dòng)的事件,有一個(gè)算法在里面。
將mc的寬除以載入的縮略圖的數(shù)量,得到一個(gè)平均數(shù)。
然后將當(dāng)前鼠標(biāo)的x位移除以剛剛得到的平均數(shù)就得到了當(dāng)前鼠標(biāo)所在的圖片(聽著有點(diǎn)別扭)
然后先將所有container里的child隱藏起來(lái),再顯示當(dāng)前的圖片。

section4

fullLoader.unload();
fullLoader.load(new URLRequest(xmlList[currentSegment].attribute(fullAtt)));
這個(gè)是響應(yīng)縮略圖點(diǎn)擊事件,當(dāng)點(diǎn)擊后先去掉先前載入的大圖,然后再去載入縮略圖對(duì)應(yīng)的大圖。
其實(shí)也不難,不是嗎?

再拉看一下完整的代碼

復(fù)制代碼 代碼如下:

package interactive.gallery 

    import flash.display.*; 
    import flash.events.*; 
    import fl.transitions.*; 
    import fl.transitions.easing.*; 
    import flash.filters.*; 
    import flash.net.*; 
    public class ImageGallery extends MovieClip 
    { 
        var xml:XML; 
        var xmlList:XMLList; 
        var xmlLoader:URLLoader = new URLLoader(); 
        var container:MovieClip = new MovieClip(); 
        var imageLoader:Loader; 
        var segments:Number; 
        var currentSegment:int; 
        var fullLoader:Loader = new Loader(); 
        var xmlPath:String; 
        var thumbAtt:String; 
        var fullAtt:String 
        public function ImageGallery(path:String,thumb:String, full:String) 
        { 
            xmlPath = path; 
            thumbAtt = thumb; 
            fullAtt = full; 
            container.x = 25; 
            container.y = 25; 
            fullLoader.x = 200; 
            fullLoader.y = 25; 
            container.addEventListener(MouseEvent.MOUSE_MOVE, changeThumb); 
            container.addEventListener(MouseEvent.CLICK, showPicture); 
            xmlLoader.load(new URLRequest(xmlPath)); 
            xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded); 
            container.filters = [new DropShadowFilter()]; 
            addChild(container); 
            addChild(fullLoader); 
        } 
        function xmlLoaded(event:Event):void 
        { 
            xml = XML(event.target.data); 
            xmlList = xml.children(); 
            for (var i:int = 0; i < xmlList.length(); i++) 
            { 
                imageLoader = new Loader(); 
                imageLoader.load(new URLRequest(xmlList[i].attribute(thumbAtt))); 
                container.addChild(imageLoader); 
            } 
        } 
        function changeThumb(event:MouseEvent):void 
        { 
            segments = container.width / container.numChildren; 
            currentSegment = Math.floor(container.mouseX / segments); 
            if (currentSegment <= container.numChildren - 1) 
            { 
                for (var j:int = 0; j < container.numChildren; j++) 
                { 
                    container.getChildAt(j).visible = false; 
                } 
                container.getChildAt(currentSegment).visible = true; 
            } 
        } 
        function showPicture(event:MouseEvent):void 
        { 
            fullLoader.unload(); 
            fullLoader.load(new URLRequest(xmlList[currentSegment].attribute(fullAtt))); 
        } 
    } 

類說(shuō)完了,接下來(lái)就來(lái)看看fla里面都是怎么寫的。
這個(gè)就簡(jiǎn)單多了

import interactive.gallery.ImageGallery;
var gallery:ImageGallery = new ImageGallery("data/images.xml","thumb","full");
addChild(gallery);
我不說(shuō)了,聰明的你一看就明白了。

案例分析到此結(jié)束。
打包下載
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产美女视频一区二区三区 | 国产精品久久久久久影视 | 高清av免费 | 澳门一级淫片免费视频 | 色综合久久久久久久久久 | 欧美毛片在线观看 | 国产毛片毛片 | 免费网址黄 | 国产成人在线观看免费 | 成人做爰高潮片免费视频美国 | 国产合集91合集久久日 | 激情亚洲一区二区三区 | 国产精品美女久久久久久不卡 | 久久精品免费网站 | 特级a欧美做爰片毛片 | 欧美 日韩 国产 在线 | 在线看成人av | 综合网天天色 | 欧美日本亚洲视频 | 在线观看国产网站 | 久久久久亚洲精品 | 亚洲一区二区三区视频免费 | 性猛交ⅹxxx乱巴西 欧美日韩1区2区3区 | 成人18免费观看 | www.精品在线 | 欧美亚洲另类在线 | 91欧美视频| 久久久一区二区三区精品 | 久久久久久麻豆 | 沉沦的校花奴性郑依婷c到失禁 | 色中色激情影院 | 精品在线观看一区 | 91精品成人福利在线播放 | 999久久国产 | 99精品视频免费 | 欧美成人精品一区二区三区 | 羞羞视频免费视频欧美 | 午夜视频你懂的 | 欧美色性| 国产jjizz一区二区三区视频 | 国产pron|