今天的项目又用到了Gaia,只不过这次用AS2.不是AS3.

去年上一次的见此。

《Flash之gaia专栏——又见Gaia  项目中用到的方法汇总》。

1 基础的基础

1 goto的值是XML的id.

2 不用复制以前的FD模板,Gaia会自动生成,用了反而混淆

3 不要用自定义的滚动条,会出现>>INTERRUPTIN<<的经典错误. 为什么呢?我推测是这样的:
1) 自定义滚动条在根上创建了空mc,作为onEnterFrame的载体
2) 这个mc和tweenMax类在根上创建的空mc相冲突,可能是覆盖.
3) 导致单独页面的onTransitionOut函数无法执行,无法调用完成事件.

2 拦截页面

比如活动页面要按步骤,1-2-3,不能直接跳到3,就要在拦截事件中判断。判断的方法可能很多,我想的很简单,就是判断上一个branch是不是,比如3之前是不是2,2之前是不是1.

if (now = step2) {
if (old=step1) {
跳到2();
}else {
退回1();
}
}
if (now = step3) {
if (old=step2) {
跳到3();
}else {
退回1();
}
} 

应该用哪个拦截事件呢?试了下,感觉onBeforeTransitionOut和onBeforeTransitionIn区别不大。
 关键代码如下:

var myListener:Function = Delegate.create(this, onBeforeTransitionOut); //加拦截事件
releaseGaia = Gaia.api.beforeTransitionOut(myListener, true); //回调事件
function onBeforeTransitionOut(event:GaiaEvent) {
var nowbranch = event.validBranch;
trace("nowbranch/"+nowbranch);
if (nowbranch == "index/nav/action/step2") {//目标分支
if ( LASTbranch == "index/nav/action/step1" && 1==Main.step[1]) {//判断旧分支是不是上一个
LASTbranch = event.validBranch;    //记录分支
releaseGaia();//跳到Step2
}else {
LASTbranch = "index/nav/action";//记录分支
Gaia.api.goto("index/nav/action");//退回Step1
}
return;
}
LASTbranch = event.validBranch; //记录分支
releaseGaia();//该去哪去哪
}

2 拦截之二

上一次是把bg.swf作为assets放到index,控制代码在。在FDT搜索assets['bg'],找到。

要等到加载完成后,再播放。

报错

branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
branch-----------------------index/nav/action/step1
在一个动作列表中,递归超过了 256 级。
这可能是一个无限循环。
已禁止在此影片中继续执行动作。

3  asset

asset可以加载swf也可以是xml。

像动画师做的东西就可以单独拿出来作为asset,这样,动画模块就和代码分离了。

<page id="index" title="Single Page Gaia" src="index.swf" depth="middle" seo="true">
<asset id="MyPreloader" src="MyPreloader.swf" />
<asset id="bg" src="swf/assets/bg.swf" />

4 测试和发布

在Page类文件加代码,文件既能单独打开看,又能在整体的时候,使用框架统一的淡入淡出。

     //在构造器中
if (this._parent != undefined) {
_alpha = 0;
}else {
my_init();
}
//在transitionIn中
if (this._parent != undefined) {
my_init();
}

5 缓动很长的背景图片

bg是一张很长的背景图片,类似横幅长卷《清明上河图》,连接6个场景。
每当要切换场景的时候,要先判断子影片是否加载完成,加载完成,让bg缓动到相应的x位置。
gaia里注册的拦截事件是afterTransitionOut:
releaseGaia = Gaia.api.afterTransitionOut(onAfterTransitionOut, true); 
在onAfterTransitionOut事件中,通过判断分支,如果是指定的场景,就让bg缓动到相应的x位置。并在onComplete完成事件中,使子影片淡入。

function onAfterTransitionOut(event:GaiaEvent):void {
var branch:String = Gaia.api.getCurrentBranch();
if(是指定的场景){
TweenLite.to(bg, 1, { x: -_posArr[id - 1],
ease:Circ.easeInOut,
onComplete:function():void {
releaseGaia();
} } );
}
}

上次经验不足,绕了个大圈子。
1)先用Flash导出BgImg.SWC
2)再写个BgAsset类实例化BgImg
3)再用BgAsset导出bg.swf.
4)最后这个swf作为assets放到indexPage下
5)最可恶的是控制bg的代码没有写在indexPage里面,而是写在mainContext.as。在FDT找了半天才找到线索。
var bg:IMovieClip = IMovieClip(Gaia.api.getPage("index").assets.bg);
要等到加载完成后,再播放。
onAfterTransitionOut事件中做缓动。

6 指定首页的加载条

在site.xml的site节点加上属性 preloader="MyPreloader.swf"
并在index page节点加上 <asset id="MyPreloader" src="MyPreloader.swf"/>
以前的做法是
1)Flash把素材导出成LoadingBar.SWC.
2)把Gaia默认的Preloader.as复制成MyPreloader.as.
3)用FDT写MyPreloader.as,在transitionIn中实例化SWC的LoadingBar类,加到舞台,淡入缓动。
4)在onProgress中操作进度条和文本框。
5)上一次首页还有个进入按钮,Gaia是直接进入内页。此时,内页内容已经在舞台上,只能让他们不显示,如果是动画

,就停在第一帧。点按钮后,再让其显示,并播放动画。

if(event.perc==1){ //加载完成
btn.onRelease=function(){
发送事件,显示内页。
}
}

7  指定接口路径

项目中像链接,后台路径都是不固定的,基本上不到最后一天,AE是给不到上线地址了。所以要给自己留条活路,不要在Flash里写死,要留出接口。我一般就在Gaia的site.xml里加自已的节点,就加在page节点之后。

    <my nocache="no" alertJS="yes" >
<BTsend_for_gift href="http://localhost/h/app/send_for_gift.aspx" nocache="yes" />

8 跳转博客平台

用下面的测试,xxx,yyy换成想要的内容

<a href="http://v.t.sina.com.cn/share/share.php?url=yyy&title=xxx" window="_blank">新浪</a>
<br />
<a href="http://www.kaixin001.com/repaste/share.php?rurl=yyy&rcontent=yyy&rtitle=xxx" window="_blank" >开心</a>
<br />
<a href="http://share.renren.com/share/buttonshare.do?link=yyy&title=xxx"  window="_blank">人人网</a>
<br />
<a href="http://www.douban.com/recommend/?url=yyy&title=xxx" window="_blank" >豆瓣</a>

参考 js 几个网站的分享链接

http://blog.csdn.net/ypb137154098/article/details/6590515

9 访问Assets

在AS3中访问assets要加个判断,以免以后在xml删asset节点,flash报错。

         if(this.assets.hasOwnProperty("AsearchBar")){this.assets["AsearchBar"].visible = true;}

AS2就不用这一步了。

参考

http://www.sqflash.com/Flashwenti/aswenti/2010-07-25/150.html

如何给动态类动态添加属性和方法【Flash AS3.0】

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

  1. Flash整站项目Gaia框架总结(1)AS3部分

    在Disney项目用了些新技术,主要用的是kevinCao整编的Flash网站框架--Gaia+RobertLegs+FDT.其他的还有JQuery.这里只是Gaia部分的总结. 首先得说一下,由于网 ...

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

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

  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. [mysql] MySQL Order By Rand()效率【转载】
  2. 检测到你的手机处于root环境_选择群控系统的注意事项!繁星云手机盒子会比群控更合适好用吗!...
  3. iOS中的两种主要架构及其优缺点
  4. 阿里达摩院员工业余打造“论文知识图谱”工具:极速搜索,完全可视化
  5. 【hdu 1573 X问题】【 hdu3579 Hello Kiki 】【poj 2891】
  6. Numpy中的array
  7. 1.0Nvm环境配置
  8. 使用Hibernate-Validator优雅的验证RESTful Web Services的参数
  9. java 代码执行el,专属于java的漏洞——EL表达式注入
  10. 如何在Ubuntu中屏蔽一个网站
  11. python将对象放入列表根据某个属性排升序_对python 对象列表根据某个属性排序的方法...
  12. 坐地起价?三星首款折叠屏手机 1.3 万起!
  13. vue怎么实现右键二级菜单_vue中如何自定义右键菜单详解
  14. JVM内存模型(通俗易懂)
  15. 【数据分析软件】【Weka】第一课:超easy安装教程
  16. 利用邮件合并批量制作带照片的准考证
  17. 结构体定义的几种方式
  18. 打开本地html加载网页慢,浏览器打开网页很慢怎么回事_浏览器打开网页很慢如何解决...
  19. 常见的Web服务器、应用服务器(Apache、tomcat、jetty、Nginx)简介及优缺点总结
  20. 考研英语 词根词缀单词71-80

热门文章

  1. Git详解:Git内部原理
  2. OpenGL编译着色器
  3. 亿 图 思维导图软件 E draw Mind Master Pro 8.0.102
  4. 长途通信线路的技术发展历程与工程标准化
  5. 使用计算机能佩戴老花镜,昆明老花眼能做多焦点晶体植入术治疗吗
  6. 73、基于STM32单片机录音机录音笔语音存储回放播放器TF卡TFT屏系统设计
  7. 软件赋能智造——第五届“设计+运维”国产工业软件研讨会圆满召开
  8. 【指标体系构建】标准化处理+熵权法
  9. 续航整理 JAVA SE
  10. 我们程序员真的如此不堪吗?