AS3.0中,使用按钮侦听事件,如何使播放头达到主时间轴的某帧时停止?
在主时间轴上制作了许多帧的动画,想用多个按钮控制它(按钮实例名称分别为a、b、c),当点击按钮a时,跳转到第10帧并播放,若播放到20帧时停止。按钮b也是类似的功能。当点...
在主时间轴上制作了许多帧的动画,想用多个按钮控制它(按钮实例名称分别为a、b、c),当点击按钮a时,跳转到第10帧并播放,若播放到20帧时停止。按钮b也是类似的功能。当点击按钮c时,就从头开始到结尾一直播放,就与没有添加代码那样播放。我用到了侦听器、跳转到某帧并播放(停止)、获取帧编号(currentFrame)等代码,但始终要报错,或达不到预想的效果。还请高手指教。
请注意,版本是3.0,我并不是在某帧写停止代码,而是只写在第一帧上,因为那样点击按钮c时也会停止在那里。只要能达到上述要求,复制别人的答案也可以,请给出完整的代码。
下面是我写在第一帧的代码,肯定有错,a、b、c是舞台的三个按钮的实例名。要实现的效果是:点击a时就从第10帧播放到60帧停止;点击b就从第61帧播放到100帧而停止;当点击c时就一直从开头到结尾播放。
this.addEventLisener(Event.ENTER_FRAME ,zheng)
function zheng(evt:Event){
this.currentFrame
}
a.addEventListener(MouseEvent.CLICK,A);
function A(evt:MouseEvent):void {
gotoAndPlay(10)
if (this.currentFrame==60) {
stop();
}
b.addEventListener(MouseEvent.CLICK,B);
function B(evt:MouseEvent):void {
gotoAndPlay(61)
if (this.currentFrame==100) {
stop();
}
c.addEventListener(MouseEvent.CLICK,C);
function C(evt:MouseEvent):void {
Play()
} 展开
请注意,版本是3.0,我并不是在某帧写停止代码,而是只写在第一帧上,因为那样点击按钮c时也会停止在那里。只要能达到上述要求,复制别人的答案也可以,请给出完整的代码。
下面是我写在第一帧的代码,肯定有错,a、b、c是舞台的三个按钮的实例名。要实现的效果是:点击a时就从第10帧播放到60帧停止;点击b就从第61帧播放到100帧而停止;当点击c时就一直从开头到结尾播放。
this.addEventLisener(Event.ENTER_FRAME ,zheng)
function zheng(evt:Event){
this.currentFrame
}
a.addEventListener(MouseEvent.CLICK,A);
function A(evt:MouseEvent):void {
gotoAndPlay(10)
if (this.currentFrame==60) {
stop();
}
b.addEventListener(MouseEvent.CLICK,B);
function B(evt:MouseEvent):void {
gotoAndPlay(61)
if (this.currentFrame==100) {
stop();
}
c.addEventListener(MouseEvent.CLICK,C);
function C(evt:MouseEvent):void {
Play()
} 展开
2个回答
展开全部
/*定义一个变量来判断点击了哪个按钮,在EnterFrame事件中控制动画的停止,而不是在鼠标点击事件的响应函数中,因为那个函数只有在点鼠标的瞬间执行一次而已,当时不在你要停的帧,你写的if语句就不会执行*/
var k:int = 0;
this.addEventLisener(Event.ENTER_FRAME ,zheng)
function zheng(evt:Event){
if(k == 1 && currentFrame == 60)
stop();
if(k == 2 && currentFrame == 100)
stop();
}
a.addEventListener(MouseEvent.CLICK,A);
function A(evt:MouseEvent):void {
gotoAndPlay(10);
k = 1;
}
b.addEventListener(MouseEvent.CLICK,B);
function B(evt:MouseEvent):void {
gotoAndPlay(61);
k = 2;
}
c.addEventListener(MouseEvent.CLICK,C);
function C(evt:MouseEvent):void {
gotoAndPlay(1);
k = 0;
}
var k:int = 0;
this.addEventLisener(Event.ENTER_FRAME ,zheng)
function zheng(evt:Event){
if(k == 1 && currentFrame == 60)
stop();
if(k == 2 && currentFrame == 100)
stop();
}
a.addEventListener(MouseEvent.CLICK,A);
function A(evt:MouseEvent):void {
gotoAndPlay(10);
k = 1;
}
b.addEventListener(MouseEvent.CLICK,B);
function B(evt:MouseEvent):void {
gotoAndPlay(61);
k = 2;
}
c.addEventListener(MouseEvent.CLICK,C);
function C(evt:MouseEvent):void {
gotoAndPlay(1);
k = 0;
}
追问
好的,高!我决定追加分采纳您的答案。上述按钮实际有6个。还有个小请求:想再加一个按钮,点击时继续播放,同时外观显示为“暂停”;再点击时停止,同时外观显示为“继续”。还得请您帮我实现这个效果。愿意吗?
追答
你那个按钮(实例名先假设为btn),用影片剪辑去做,第一帧做成“暂停”外观,第二帧做成“继续”外观。
先设置属性btn.buttonMode = true;使鼠标移上去后显示手型。
其次定义一个变量var isPause:Boolean = false;
然后btn.addEventListener(MouseEvent.CLICK,onClick);
function onClick(e:MouseEvent):void
{
if(isPause == true)
{
btn.gotoAndStop(1);
isPause = false;
//对于其他实例的控制,也可以在这写
}
else
{
btn.gotoAndStop(2);
isPause = true;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你还是贴代码出来改错吧.
var bt:String;
this.addEventListiner(Event.ENTER_FRAME ,zheng)
function zheng(evt:Event){
if (this.currentFrame==60&&bt =="A") {
stop();
}
if (this.currentFrame==100&&bt =="B") {
stop();
}
}
a.addEventListener(MouseEvent.CLICK,A);
function A(evt:MouseEvent):void {
gotoAndPlay(10)
bt ="A";
}
b.addEventListener(MouseEvent.CLICK,B);
function B(evt:MouseEvent):void {
gotoAndPlay(61)
bt ="B"
}
c.addEventListener(MouseEvent.CLICK,C);
function C(evt:MouseEvent):void {
Play();
bt = "C";
}
var bt:String;
this.addEventListiner(Event.ENTER_FRAME ,zheng)
function zheng(evt:Event){
if (this.currentFrame==60&&bt =="A") {
stop();
}
if (this.currentFrame==100&&bt =="B") {
stop();
}
}
a.addEventListener(MouseEvent.CLICK,A);
function A(evt:MouseEvent):void {
gotoAndPlay(10)
bt ="A";
}
b.addEventListener(MouseEvent.CLICK,B);
function B(evt:MouseEvent):void {
gotoAndPlay(61)
bt ="B"
}
c.addEventListener(MouseEvent.CLICK,C);
function C(evt:MouseEvent):void {
Play();
bt = "C";
}
追问
非常感谢你,但是不行啊朋友!你随便制作一个动画,在舞台上添加几个按钮,然后在第一帧写代码,试试看能不能实现我说的那样的效果。拜托了。
追答
第二句, addEventListener 拼写有错误.
倒数第三行的play();这句要小写.
复制你写的东西我没注意这些.
其他很正常.完全可以实现
看你跟楼下的人说的话 我愁了. 他写的思路不就是我写出来的这些么..
算了随便你吧.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询