<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sugo

    Goof off ? no way: never
    posts - 20, comments - 8, trackbacks - 73, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    實現自己的"雅虎幻燈片"

    Posted on 2006-12-31 20:28 sugo 閱讀(791) 評論(1)  編輯  收藏

    ? ? 幻燈片大家都非常熟悉了,我以雅虎幻燈片為靈感,開發了自己的幻燈片。
    ?? ?首先,這個幻燈片程序是在我的jsp圖片查看器上加上去的,算是滿足自己的需求吧,哈。因為有時候看幻燈片對我來說是一種享受。。。嗯
    ??? 首先是做一個基本的圖片自動播放的程序,這個純javascript就可以實現,實現需要的javascript方法也很簡單,代碼如下:
    ???? function rotateBanner(frameNumber,interval){
    ????? document.banner.src=fn[frameNumber].src;//為頁面中的id為banner的圖片標記動態定義圖片的鏈接地址
    ????? var imageChoice=frameNumber+1;
    ???? ?if(imageChoice==fn.length){
    ???????? imageChoice=0;
    ????? }
    ????? player=window.setTimeout("rotateBanner("+imageChoice+","+inv+")",inv);
    ?? }
    ?? 其中frameNumber為圖片路徑數組的下標,interval為顯示下一幅圖片的間隔時間。
    ?? 首先,我們要定義一個全局數組,數組各個元素的值為圖片的url。(一般我們都把一類的圖片放在一個目錄中,這種情況可以通過動態生成的方法來動態的為這個全局數組的各個元素賦值)
    ?? js方法的使用也很簡單,在這個頁面的body標簽加入onload=“rotateBanner(0,5000)”即可,在這里0為數組的第一個元素下標,5000為播放的間隔時間5秒。
    ?? 一個不能被我們控制的幻燈片頁面就產生了。下面我們就要開始對其進行控制了,首先,我們實現讓幻燈片停止滾動播放圖片。這個很簡單,上面的js方法我們定義了一個定時器player變量,這個player是個全局的,當不停的遞歸調用的時候,都是它自己在不停的被賦值。停止它我們只需把這個定時器去處即可。在頁面中加上一個超鏈接,在它的onclick事件中觸發一個js方法,不妨我們再寫一個方法,代碼為:
    ?? function stop(){
    ?????? window.clearTimeout(player);
    ?? }
    ??? 這樣就把圖片循環顯示的player定時器去除了。
    ??? 有停止就要有開始,開始就容易了,在開始超鏈接的onclick事件調用rotateBanner()方法就行了,但這里有個問題,這個一會再說。
    ??? 我們再添加上一幅,下一幅超鏈接,我們可以通過手工點擊來顯示下一頁,這里就要又要定義一個全局變量了,它用來記錄顯示圖片的數組下標。代碼如下:其中的firstno變量我們后面再說它的作用
    ?? function previous(){
    ??? if(imgno==0)
    ?????? imgno=fn.length;
    ?????? imgno=imgno-1;
    ?????? firstno=imgno;
    ?????? document.banner.src=fn[imgno].src;
    ? }
    ?? function next(){
    ??? ?if(imgno==fn.length-1)
    ?????? imgno=-1;
    ?????? imgno=imgno+1;
    ?????? firstno=imgno;
    ????? document.banner.src=fn[imgno].src;
    }
    ? imgno就是我們定義的全局變量,來記錄當前圖片的數組下標。但這樣有個問題,那就是imgno的初值為多少?現在的代碼中并沒初始化。好,我們分析一下,從頁面打開開始,onload事件調用rotateBanner方法,這是最初的入口,下一幅上一幅按鈕也是當執行了這個事件后才會有作用,所以我們需要在rotateBanner方法中記錄圖片的下標。其實也可以在聲明的時候初始化為0。
    ?? 所以我們在點擊開始的時候,rotateBanner(firstno,firstclock)函數里面的參數要傳入當前圖片的下標,不然我們點開始后幻燈片是開始幻燈顯示了,但它又從0開始了,不會從我們停止定時器時候的顯示的圖片的位置開始。在此firstno全局變量也是起到記錄的作用,但注意它和imgno變量的不同,它記錄的是目前顯示的圖片的下標,而imgno在previous和next方法中已經不是當前圖片的下標。firstclock是下面我要說明的內容。
    ?? 要控制每張圖片顯示間隔的時間,通過一個下拉選擇框來操作,取得每個選項相應的值很簡單。當選項改動時觸發一個事件,我們取名為setclock()方法,firstclock就是來獲得間隔時間的,代碼為:
    ?? function setclock(clock){
    ???? ?firstclock=clock;
    ????? rotateBanner1(imgno,clock);
    ?? }
    ?? rotateBanner1()的代碼為:
    ?? function rotateBanner1(frameNumber,interval){
    ???? window.clearTimeout(player);
    ??? ?document.banner.src=fn[frameNumber].src;
    ???? var inv=interval;
    ?????var imageChoice=frameNumber+1;
    ???? ?if(imageChoice==fn.length){
    ??????? ?imageChoice=0;
    ???? }
    ???? imgno=frameNumber;
    ???? firstno=imgno;
    ???? player1=window.setTimeout("rotateBanner("+imageChoice+","+inv+")",inv);
    ?? }
    ?? 通過代碼可以看出,rotateBanner1方法其實在下拉框選項改變觸發的時候只執行了一次,因為最后一行調用的還是原來的rotateBanner()方法,這個代碼的當時寫的時候很有戲劇性,嘻嘻。
    ?? 其實這個幻燈片還是很簡單的,大家只要動動腦,不難寫出來。。。那天看一個人物傳記,sun公司的前任首席科學家Bill Joy,一天編程能編14個小時。。。。:)。。。腦子越用越靈活,啥也不說了,向他學習,學習,再學習。
    ?? 哈哈,明年再接著blog了。。。。。


    評論

    # re: 實現自己的"雅虎幻燈片"  回復  更多評論   

    2007-04-28 16:04 by jihkl
    b,

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲人成网站在线观看青青| 亚洲国产另类久久久精品| 一级特黄特色的免费大片视频| 中文字幕无码精品亚洲资源网| 99在线观看视频免费| 国产精品无码亚洲一区二区三区| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 免费一看一级毛片| 精品四虎免费观看国产高清午夜| 国产精品亚洲片夜色在线| 亚洲国产精品一区二区第一页免| 99热精品在线免费观看| 一级黄色片免费观看| 亚洲mv国产精品mv日本mv| 亚洲免费日韩无码系列 | 日本三级2019在线观看免费| 黄页网站在线视频免费| 亚洲激情校园春色| 亚洲人成无码www久久久| 一二三四影视在线看片免费| 91免费福利视频| jzzijzzij在线观看亚洲熟妇| 亚洲国产成人久久综合一| vvvv99日韩精品亚洲| 韩国免费一级成人毛片| 免费国产成人午夜在线观看| 看成年女人免费午夜视频| 亚洲一级毛片视频| 久久久久久a亚洲欧洲AV| 亚洲精品国产精品国自产观看| 在线天堂免费观看.WWW| 国内少妇偷人精品视频免费| 在线91精品亚洲网站精品成人| 亚洲人成网站日本片| 亚洲av不卡一区二区三区| 亚洲综合另类小说色区| 无码国产亚洲日韩国精品视频一区二区三区 | 亚洲国产精品高清久久久| 亚洲&#228;v永久无码精品天堂久久 | 久久WWW免费人成人片| 最刺激黄a大片免费网站|