在Disney项目用了些新技术,主要用的是kevinCao整编的Flash网站框架——Gaia+RobertLegs+FDT。其他的还有JQuery。这里只是Gaia部分的总结。
首先得说一下,由于网站是改版,是把以前有的Flash游戏加上新的游戏,整合在一起,拼装起来。游戏有的是用AS2写的,有的是AS3。项目的关键是兼容,为了多快好省完成任务,采用取其精华去其糟粕的做法:
1 首页+各场景,用Flash做,用Gaia框架,AS3
2 游戏+提示框,用div浮层做,本来用JQuery,由于其Flash组件不兼容,就自己写JS了。
看上去就是大杂烩。

跳转游戏是打开div浮层子页有的是AS3,有的是AS2。所以AS2只有回调部分用到了Gaia,但一回调就调出了问题。

先来狠的,下面这些地雷在用Gaia时要死死记住:
1 AS2不能用getURL来调用js,必须用ExternalInterface.call("myMethod");
这是SWFAdress的bug,因为Gaia内置SWFAdress,所以乍眼一看,是Gaia的bug。这个bug很经典。详情见此。
2 如果做好全站测试时,遇到火狐浏览器的标题栏不变的问题,不用考虑解决了,这是火狐的本身bug
我用的firefox版本是3.6.18。这个版本在网页跳转新窗口时,不会改变标题栏的内容。网页尚且如此,Gaia也难以挽救。
下面这些问题比较简单,属于基础的基础,熟读API就可以知道,但是有些事不是因为简单就不去做,记下来是怕以后忘记:

1  控制父级页面内容

要在子页控制父级页面内容,比如跳到子页A,要让导航条的按钮A高亮。就要获取页面,分支作参数。

Gaia.api.getPage("index/nav");

当然,也可以用自定义事件的方式做,不过自定义事件要注意删除事件。这个直接调用,就不存在删除事件这一步了。

2   在浏览器标题栏显示中文

要让浏览器的标题跟着Flash内容变。比如跳到子页A,浏览器地址栏显示http://website.com/#/pageA,标题栏显示“子页A”。
如果是老外,只管英文,那很简单,什么都不用动,用title就行了。但我们用中文标题,用title会让浏览器转跳失效。所以用route代替。Gaia没有提供获取当前route的方法,得绕一圈来获取当前route

    var branch:String=Gaia.api.getCurrentBranch();
var route:String=Gaia.api.getPage(branch).route;
Gaia.api.setTitle(Gaia.api.getSiteTitle()+route);
Gaia.api.goto(branch);

3   调JS是用Tracking类还是ExternalInterface

Gaia调用JS,用Gaia的工具类,比如调用JS的Alert方法:

Tracking.track("alert", route);
    直接这样用会报错,因为AS3不支持在Flash里直接调用JS,只能在浏览器环境下调用JS。所以,想要单单在Flash测试而不报错,就要多做一步,加个判断:

    if(ExternalInterface.available){//只有ExternalInterface可用时才执行JS调用。
Tracking.track("alert", route);
} 

4     Flash的seo优化,实际就是指一个page.swf对一个html页面。Gaia也不例外。提供给搜索引擎搜索的文本写在html的copy节点下面。
    在AS里可以用page类的copy属性取html的copy值。
    直接在Page类里写this.copy是取不到值的,会得到null,只有site.xml的page节点的seo="true",才可以取到值。

            for (var myCopy:String in this.copy)
{
trace(this.copy[myCopy]);
}     

如果设置seo为true,而有没有这个html,Gaia会在内部报错,会反映在,Firebug里。但不影响AS执行。

5 Gaia的Page类的assets属性,会报错说assets没有属性,其实意思就是assets=null,这个时候,用hasOwnProperty都是失效的,因为根本就没有这个值,这是编译时刻报的错,不要管他。只用改成引号数组取值,即原来是assets.panel,改成assets["panel"]。编译后,就可以正常执行。

6 AS2时代,调试用FireFox的trace插件。AS3时代,调试用monstaer,不要用自定义的调试面板来调试,不管是Gaia项目,还是别的框架,这样给自己很大的负担,做无用功。这样路径会很麻烦。

7 放在Page上的assets,有2种做法:
1)用Flash软件生成swf,作为Assets加载。像disney项目的logo,开场动画。它不用在FDT里执行复杂操作。的发布设置。我觉得这种形式用在没有交互的情况,比如FLV影片。
2)用FDT编译swf,分2步,先在Flash软件做好Flash动画,发布成SWC,再用FDT直接导入SWC,编写代码时能够直接找到这个类。像Disney的各个场景,各个面板模块。这样一来,就可以用RobotLegs来编写AS。在代码工整和维护上进步不少。
补充:assets可以继承Page,Kevincao的代码是支持的。
注意:作为Assets直接加载在Page的SWF资源,如果只有一帧,如果是动画,要在第一帧写Stop(),或者确保回到第一帧。

下面这些地方,有问题:
8     Gaia的JS控制浏览器地址栏转跳,可以分解成这样几步:
1 我调用Gaia.api.goto(branch)
2 Gaia调用swfAddress
3 swfAddress的JS改href参数
4 浏览器解释JS,改变地址栏
如果是单个Flash,这个功能没有问题。
但我遇到的情况是,FlashA调用JS,JS调用FlashB,FlashB执行地址栏转跳,就有问题了。
我输出,没有得到地址栏,这怎么解释?

应该是浏览器在解释JS上出了问题。像这种死在胡同的事,真让人抓狂。
Disney项目充分的说明了不要把宝押在JS上,JS很不稳定,在浏览器的兼容上。

9 单帧

10 Gaia的asset再读XML的时候,已经使用了随机参数,就是说,你每访问一次这个页面下的asset,他就能重新加载。这就不用自己写XML加载解析代码了。

此外,还存在下面问题:
1
Disney HAL项目的功能小结
这些都是可以单独拎出来的各个独立的功能模块。
1 深度链接(deeplink)
2 site.xml结构
    这次用Gaia的结构是默认的main/home/nav,其实,nav和home可以合在一起。deeplink的跳转写在nav的里面。
    onDeeplink。
Less is More,文件越小,结构越小,越不会犯错。这要看我自己的取舍了。
3     JS加载条
    JS加载条有2种做法。一是用GIF图片,二是用Flash。
    GIF动画,我测试过,GIF动画要要针对背景颜色,因为GIF的透明图片边缘有锯齿,锯齿的颜色必须和背景色一样,比如Adobe的下载Flex时,会弹出一个下载框,其实就是调用了一张GIF图片,注意这个GIF的周围是有白色马赛克的。单独制作,我尝试过在Flash里做动画,再用软件转成GIF,但没有得到完美的GIF,所以HAL用的仍旧是Flash。,使用工具是。
这一次就是的。

附录

官网

范例1 在单个swf中切换深度链接,

Flash整站项目Gaia框架总结(1)AS3部分相关推荐

  1. Flash整站项目Gaia框架总结(3)项目管理

    1 程序员和动画师--时间与分工 这一次我承认没做好分工,自己做了绝大部分的工作量,很辛苦.很多工作量可以分给凳子完成. 1)首先,flash页面与页面之间就可以拆开.非程序页面在第1天就分给凳子.凳 ...

  2. Flash整站项目Gaia框架总结(2)AS2部分

    今天的项目又用到了Gaia,只不过这次用AS2.不是AS3. 去年上一次的见此. <Flash之gaia专栏--又见Gaia  项目中用到的方法汇总>. 1 基础的基础 1 goto的值是 ...

  3. FLASH整站技术点分析和实践-第一期建站集体学习序

    在2010年10月23日这个平凡却不平静的晚上,在UI设计与展示版主:阿咪宝贝的主持下,紧张而又愉快的进行,最后达成共识,整理学习大纲如下: 一.逐个知识点突破(相关内容请关注近期论坛flash建站) ...

  4. 精品素材:20个精美的免费Flash整站模板下载

    Flash 网站模板对于不熟悉程序编码的设计师来说非常宝贵,这些模板主要做少量的修改就可以用于实际项目,可以节省大量的时间和精力.今天,我收集了20款高品质的,由知名公司和经验丰富的设计师分享的免费 ...

  5. flash php个人站_PHP Flash整站系统

    PHP Flash整站系统[PHP Flash CMS]是一套功能强大的Flash整站系统,前台采用Flash + XML + CSS构建的Style Portfolio Template 2模板,后 ...

  6. FLASH整站技术点分析和实践-第一期建站集体学习之一loadding

    1.Loadding--FLASH网站得以生存的根本. 是的,你没看错,如果没有loadding那么flash网站不会得到用户认可,一个不知道多长时间可以加载完的swf文件,客户很少会停留几秒在这个一 ...

  7. 扒整站项目--IDM工具

    在电脑管家-软件管理里下载 Internet Download Manager工具 傻瓜式安装好后,选择上图所示[站点抓取],填写要扒的网站地址和把方案模板改成"整个网站" 然后按 ...

  8. 分享74个ASP整站程序源码,总有一款适合您

    分享74个ASP整站程序源码,总有一款适合您 74个ASP整站程序源码下载链接:https://pan.baidu.com/s/12WvL3Z7LhmCwzhTPgxVZTA  提取码:g64j Py ...

  9. 分享119个ASP整站程序源码,总有一款适合您

    分享119个ASP整站程序源码,总有一款适合您 119个ASP整站程序源码下载链接:https://pan.baidu.com/s/17KlFihL6Ljkhmg3aJHftlw?pwd=ox4l  ...

最新文章

  1. 数据通信技术_华为数据通信创新峰会在长春圆满举行
  2. 测试多个线程调用同一静态方法(无静态变量)时是否有线程安全问题
  3. Ubuntu apt-get 源详解
  4. ASP.NET MVC 使用Log4Net记录系统运行中问题
  5. Python实例讲解 -- wxpython 基本的控件 (按钮)
  6. ensp中小型企业网配置_如何构建1000人规模的网络,详细配置?
  7. [转]NopCommerce 多数据库方案
  8. python中len和range函数_for循环len函数和range函数的运用
  9. [linux]centOS 7.6重新分配Home目录的大小
  10. 一个不错的下载ABAP程序和表格的程序
  11. 单端口和双端口的优势_哪种适合您,三种常见组网方式比较
  12. iis反向代理tomcat
  13. aspen怎么做灵敏度分析_灵敏度分析 aspen
  14. 计算机桌面文档全丢,电脑重启后桌面文件全部丢失怎么办
  15. 淘宝客搜索链接组成详解
  16. 清理电脑C盘的方法汇总
  17. Dev-C++ 一直提示源文件未编译,原因及解决办法
  18. Linux cat命令
  19. ES冷热分离架构设计:一招让你的ELK日志系统节省 50% 的硬盘成本
  20. SIGIR2022 | 基于Prompt的用户自选公平性推荐算法

热门文章

  1. 隔行扫描与逐行扫描的区别
  2. php获取伪静态参数,伪静态规则中RewriteCond如何获取多个参数?
  3. Android单元测试学习之 Junit4
  4. 为何女性经期前后的情绪变化会特别大?怎么才能缓解?
  5. 2022 需求工程材料分析题【太原理工大学】
  6. 退休码农包饺子解馋,竟然有bug
  7. OSPF的几种网络类型
  8. 数据分析---常用业务模型
  9. 【数据压缩】WAV文件格式
  10. 怎样简单的创建一个vector类?(干货 ! ! !详细 ! ! ! ! !)