Flash整站项目Gaia框架总结(1)AS3部分
在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。,使用工具是。
这一次就是的。
附录
Flash整站项目Gaia框架总结(1)AS3部分相关推荐
- Flash整站项目Gaia框架总结(3)项目管理
1 程序员和动画师--时间与分工 这一次我承认没做好分工,自己做了绝大部分的工作量,很辛苦.很多工作量可以分给凳子完成. 1)首先,flash页面与页面之间就可以拆开.非程序页面在第1天就分给凳子.凳 ...
- Flash整站项目Gaia框架总结(2)AS2部分
今天的项目又用到了Gaia,只不过这次用AS2.不是AS3. 去年上一次的见此. <Flash之gaia专栏--又见Gaia 项目中用到的方法汇总>. 1 基础的基础 1 goto的值是 ...
- FLASH整站技术点分析和实践-第一期建站集体学习序
在2010年10月23日这个平凡却不平静的晚上,在UI设计与展示版主:阿咪宝贝的主持下,紧张而又愉快的进行,最后达成共识,整理学习大纲如下: 一.逐个知识点突破(相关内容请关注近期论坛flash建站) ...
- 精品素材:20个精美的免费Flash整站模板下载
Flash 网站模板对于不熟悉程序编码的设计师来说非常宝贵,这些模板主要做少量的修改就可以用于实际项目,可以节省大量的时间和精力.今天,我收集了20款高品质的,由知名公司和经验丰富的设计师分享的免费 ...
- flash php个人站_PHP Flash整站系统
PHP Flash整站系统[PHP Flash CMS]是一套功能强大的Flash整站系统,前台采用Flash + XML + CSS构建的Style Portfolio Template 2模板,后 ...
- FLASH整站技术点分析和实践-第一期建站集体学习之一loadding
1.Loadding--FLASH网站得以生存的根本. 是的,你没看错,如果没有loadding那么flash网站不会得到用户认可,一个不知道多长时间可以加载完的swf文件,客户很少会停留几秒在这个一 ...
- 扒整站项目--IDM工具
在电脑管家-软件管理里下载 Internet Download Manager工具 傻瓜式安装好后,选择上图所示[站点抓取],填写要扒的网站地址和把方案模板改成"整个网站" 然后按 ...
- 分享74个ASP整站程序源码,总有一款适合您
分享74个ASP整站程序源码,总有一款适合您 74个ASP整站程序源码下载链接:https://pan.baidu.com/s/12WvL3Z7LhmCwzhTPgxVZTA 提取码:g64j Py ...
- 分享119个ASP整站程序源码,总有一款适合您
分享119个ASP整站程序源码,总有一款适合您 119个ASP整站程序源码下载链接:https://pan.baidu.com/s/17KlFihL6Ljkhmg3aJHftlw?pwd=ox4l ...
最新文章
- 数据通信技术_华为数据通信创新峰会在长春圆满举行
- 测试多个线程调用同一静态方法(无静态变量)时是否有线程安全问题
- Ubuntu apt-get 源详解
- ASP.NET MVC 使用Log4Net记录系统运行中问题
- Python实例讲解 -- wxpython 基本的控件 (按钮)
- ensp中小型企业网配置_如何构建1000人规模的网络,详细配置?
- [转]NopCommerce 多数据库方案
- python中len和range函数_for循环len函数和range函数的运用
- [linux]centOS 7.6重新分配Home目录的大小
- 一个不错的下载ABAP程序和表格的程序
- 单端口和双端口的优势_哪种适合您,三种常见组网方式比较
- iis反向代理tomcat
- aspen怎么做灵敏度分析_灵敏度分析 aspen
- 计算机桌面文档全丢,电脑重启后桌面文件全部丢失怎么办
- 淘宝客搜索链接组成详解
- 清理电脑C盘的方法汇总
- Dev-C++ 一直提示源文件未编译,原因及解决办法
- Linux cat命令
- ES冷热分离架构设计:一招让你的ELK日志系统节省 50% 的硬盘成本
- SIGIR2022 | 基于Prompt的用户自选公平性推荐算法