|
}
6.2 因为按钮到现在还没创建,所以大家可能不明白上面的代码有些到底是用来干啥的。 现在笔者就给大家讲述如何先创建一个按钮。 在库里右键—新建元件,命名为button,类型为mc,打开“高级”对话框,点中“为动作脚本导出”和“在第一帧导出”。 在该元件里,创建两个图层。

其中,按钮图层放一个按钮,添加代码:
on(release){ _parent._parent.lastIndex=_parent._parent.thisIndex //让新图片放到旧图片所在的地方 _parent._parent.thisIndex=(index-1) //获得新图片的索引 _parent._parent.gotoAndPlay(43) //跳转到43帧,从而跳过42帧的自动切换代码 }
文字图层放一动态文本,变量名为index 现在,测试一下,基本效果就出来了,但是还有一个小Bug,就是当图片切换效果动画还没完成的时候,马上切换下一个图,动画效果的过渡就不自然,解决的办法有两个,第一个很简单,就是把44帧的代码拖后一点,但是不能从根本上解决问题,第二个办法相对复杂,将在下一帖再作介绍。
6.3 从根本上解决上述的小Bug: 新浪的新闻图片轮换里,如果遮罩效果运行的时候,点了别的图片的话,Flash会等效果运行结束,就马上切换到所点到的图像。因此,在这里,我们应该让控制主时间轴帧跳转的代码gotoAndPlay(43)放在效果运行结束以后。 那么,效果运行结束之后,怎么知道之前点了按钮呢?这个很好处理,只要设一个布尔变量havePressed=true就可以了。动画效果结束以后,检查havePressed的值就可以了。因此,我们还需要在开始切换图片的时候,要让havePressed变回false,否则即使下次不点按钮,也会在遮罩效果结束后,马上切换到下一图。 但是,这样又会有新的问题。如果在遮罩效果运行结束后,已经检查了havePressed,再点切换按钮的话,检查havePressed的操作就不能再在点击按钮时进行。导致立即切换图片的操作失败。 由此可见,效果运行时和效果运行结束两种状态需要分别处理。故还需要定义一个布尔变量,存放当前的效果运行状态是运行时还是运行结束。在遮罩效果开始时,设置running=true,运行结束,让running=false。 于是,要修改代码的地方就比较多了。 首先,按钮代码需要改为:
on (release) { _parent._parent.lastIndex = _parent._parent.thisIndex; //让新图片放到旧图片所在的地方 _parent._parent.thisIndex = (index-1); //获得新图片的索引 if (_parent._parent.running) { //如果遮罩效果正在运行 _parent._parent.havePressed = true; //主时间轴不能直接跳转,而要等到效果运行结束后,检查到havePressed=true时才可以 } else { _parent._parent.gotoAndPlay(43); //跳转到43帧,从而跳过42帧的自动切换代码 } }
主时间轴的第三帧声明两个布尔变量:
var running:Boolean; var havePressed:Boolean;
主时间轴第四帧为切换周期的开始,遮罩效果处于运行时状态,而还没点击过按钮。故追加:
running=true;
上一篇:flash 多图动态载入
下一篇:ShareObject 实现flash数据存储
|