时髦的Back Button

作者: egoldy

性质: 翻译

阅读次数: 21397

发表时间: 2004-12-26 12:58:43


在观看演示时当你点击完FLASH中的按钮后,你会发现点击浏览器中的返回按钮可以返回,当然前进按钮也同样.


本文出处:http://xodus31.com/index.php?categoryid=11
            http://www.robertpenner.com/experiments/backbutton/backbutton.html
            http://www.flash99good.com/

演示地址:
本站演示:http://www.webstudio.com.cn/tutorial/tuts/backbutton/index.html
             http://www.tm5150.com/.
成功应用的案例:
             http://www.fantasy-interactive.com/

介绍:

backbutton字面意思是返回按钮,一般大多数浏览者在浏览网页时都或多或少有一个习惯性的动作就不断点击返回按钮或前进按钮。可是当他们 发现一旦无法返回时,可能就会产生一种不安全的感觉。然而对于一个全FLASH站点来说,点击浏览器上返回按钮是无法返回刚刚看过的内容页面的。因此使用 BACKBUTTON对于FLASH 设计和开发人员来说就会显得比较重要。同时它也会体现你的页面具有更方便更友好的导航。
FLASH 和 BACKBUTTON

因为web浏览器不会自动跟踪FLASH网站上用户的操作,所以也不会记录下用户的操作历史。这是因为FLASH元素是以一个单一的影片格式嵌入 在HTML中的,所有的调用操作都在FLASH中完成,表面上看一个最简单的解决方法是将你的FALSH分成多个部分分别嵌在不同的HTML页中。但是, 这是不推荐使用的方法,因为FLASH会失去它的连续性同样使用FLASH也无意义可言了。

我们需要为FLASH寻找一种方法来触发页面的改变,以使浏览器可记录用户的操作历史,那么我们怎么做呢,幸运的是非常有才气的Robert Penner已经开发了一种用户工作环境可以在FLASH和Javascript之前通讯。它工作的很好。可是只有一点就是只能在IE5+和PC上使用。 虽然有一大部分用户在使用IE,但仍有大约30%的用户在使用其它的浏览器。

我们暂且先不说在其它浏览器上的情况,我们先看一下在IE上我们如何实现它。
上文说到WEB浏览器不会自动记录FLASH用户的浏览历史,所以我们要自已动手为它生成一个,在FLASH这一方的实现使用的方法实际上就是帧标签的应用。如果你还不太熟帧标签可以查一些相关的资料。

具体方法:
1.我们先建一个FLASH文件,如下图所示



在图中的这些东西都非常的简易,当然我们只是为了说明问题,其中上方的f1,f2……f6都是帧标签,当播放头播到哪一个帧标签时就会切换成不同的内容。
2.要想让FLASH与IE通讯,我们必须设置一个变量,这里的名为page,也就是上图的navigator层的navigator影片剪辑,进入到navigator影片剪辑中在其第一帧中加入代码:

 

function checkPage(){
newPage=_root.page;
if(oldpage!=newpage){
_root.gotoAndStop(“f”+newPage);
}
oldPage=newPage;
} 


这段代码是用来定义一个检测函数,page的变化是否为最新的值,
到现在为止我们还没有正式使用它。
切换到主场景中,选中navigator影片剪辑,按F9加入实例代码:

 

onClipEvent(enterFrame){
this.checkPage();
}


3.其次就是在你的场景布局中加入按钮代码:
比如我在的演示影片中加的“关于我们”加入代码:

 

on(press){
getURL(“2,html”,”historyframe”);
_root.page=2;
}
on(release,releaseOutside){
_root.gotoAndStop(“f2”);
}


其中我们注意到上面的代码,2.html其实是我们手动建立的保存我们浏览历史的页面,而historyframe则指明这个页面在historframe帧框架中打开。
其它的按钮同上,不过记得_root.page=和_root.gotoAndStop()的值是不同的。是你想让它显示的地方。最后,我们可以将影片导出至一个目录中如BACKBUTTON中。
3.打开DW,新建军一个文件名为index.html,加入框架,将其分成上下两个,这里我们只是为了看效果,可以将下面的框架缩的很小,分别 命名为flashfram,和historyframe, 在flashfram中链接flashpage,在historyframe中链接第一个历史页面1.html,当然你可能要建多个空白的历史页面。本例 中使用的6段内容,所以有6个页面。分别为1.html,2.html…….6.html.在flashpage.html中嵌入你的FLASH影片。
4.加入javascript代码:在dw中打开flashpage.html加入js代码:

 

<script language="JavaScript">

function setPage(newPage) {

    //检查FLASH对象是否存在
    if (window.document.mymovie) {
        //设置page变量给FLASH影片时间轴_root.page
        window.document.mymovie.SetVariable("page", newPage);
    }
}
</script>


找到嵌入FLASH影片的那一段代码:

 

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0"
WIDTH=550 HEIGHT=623 id="mymovie">
    <PARAM NAME=movie VALUE="webstudio.swf">
    <PARAM NAME=quality VALUE=high>
    <PARAM NAME=menu VALUE=false>
    <PARAM NAME=bgcolor VALUE=#0099FF>
    <EMBED src="webstudio.swf" quality=high bgcolor=#999999  width=550 height=623 NAME=mymovie
swLiveConnect=true
TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</EMBED> 


我们注意到在<object标签的最后有一行加入了id=”mymovie,这是我们为FLASH起的一个唯一名称,以使 JAVASCRIPT可以找到它,但现在还不能通讯,在<embed的标签height=623后面我们发现增加了NAME=mymovie,注意 这个名字必须和id的名称相同,到现在为止,javascript可以和flash通讯了。

5.我们还有最后一步,上面我们只是设置了javascript的一个函数,并没有调用它。我们需要打开你自已创建的历史页面。加入javascript代码:
如我打开的是1.html则加入如下代码:

 

<script language="JavaScript">
    parent.flashframe.setPage(1);
  </script>


如果你打开的是2.html则要加入:

 

<script language="JavaScript">
    parent.flashframe.setPage(2);
  </script>


依次类推。把所有的历史页面都加上。
Ok,现在就可以测试了。

如果你不想要下面的帧框架可以将它隐藏起来.


最后:
到目前为止它只能在IE中运行,不能在MAC机上运行,如果你正在使用mac机型,请你参考以下教程.
    http://xodus31.com/index.php?categoryid=11
    可以在所有浏览器上运行的教程

    http://www.skaggivara.com/code/view_thing.php?thingID=7
    使用localconnection方式运行的backbutton.


讨论和源文件下载在这里:
http://www.webstudio.com.cn/forum/showthread.php?t=37

服务项目_SERVICE

关于我们

万博思图(北京)信息技术有限公司,专业的flash,flex开发团队,5年经验。公司致力于互联网上的业务的开展,对于互动网站行销,互联网应用程序开发有成熟的解决方案。我们关注互联网市场动态,关注新技术,更注重在新的领域不断探索发现。
万博思图业务内容主要包括企业品牌Flash网站开发,企业形象宣传Flash设计,动画,多媒体演示,Flex企业级应用程序开发,拥有众多成功案例,欢迎来电咨询。
 
COPYRIGHT BY WEBSTUDIO INTERACTIVE DESIGN Co.,Ltd. ALL RIGHTS RESERVED.
公司地址: 北京市朝阳区朝外SOHO D 座727室 邮编: 100026 EMAIL: WEBSTUDIO@WEBSTUDIO.COM.CN
电话: 010-59070059 / 010-86390986-802  手机: 13693660520 传真: 010-59070059-801
京公网安备:110108006741      京ICP备08002333号-4
王先生