请教一个问题。flash as3.0捕获当前帧的问题具体如下:
我的目的是点击back,会后退60帧。back是我定义的一个库剪辑,我想给他绑定一个类,在类中注册了侦听器,下面是相关事件处理编函写如下语句:privatefunctio...
我的目的是点击back,会后退60帧。back是我定义的一个库剪辑,我想给他绑定一个类,在类中注册了侦听器,下面是相关事件处理编函写如下语句:
private function backhandle(evt:MouseEvent) {
stage.gotoAndPlay(stage.currentFrame()-60);
}
为何显示出错:未定义的方法 展开
private function backhandle(evt:MouseEvent) {
stage.gotoAndPlay(stage.currentFrame()-60);
}
为何显示出错:未定义的方法 展开
2个回答
展开全部
将stage换成
1.this
2.Object(root)
试试,gotoAndPlay和currentFrame是MovieClip的方法和属性,Stage是没有的,你可以在绑定类中用this来引用自身
1.this
2.Object(root)
试试,gotoAndPlay和currentFrame是MovieClip的方法和属性,Stage是没有的,你可以在绑定类中用this来引用自身
更多追问追答
追问
this在back的绑定类中引用访问back剪辑自身时间轴,我想在让访问舞台播放后退啊,怎么办啊
追答
package {
import flash.display.*;
import flash.events.*;
public class MyMC extends MovieClip {
private var ifBackward:Boolean=false;//自动倒放模式下,如果播放头在第一帧则值设为false,表示影片将正放,如果播放头经过最后一帧,则设为true,表示影片将倒放
private var model:Boolean=true;//true则自动正放-倒放循环,false时回退60帧并停止播放
private var locationF:int=1;//奇数次点击时,动画跳转的目标帧
public function MyMC() {
this.addEventListener(Event.ENTER_FRAME,onEnter);
this.addEventListener(MouseEvent.CLICK,onClick);
}
private function onEnter(e:Event):void {
if (this.model) {
if (this.currentFrame==1) {
this.ifBackward=false;
} else if (this.currentFrame==this.totalFrames) {
this.ifBackward=true;
}
if (this.ifBackward) {
this.prevFrame();
} else {
this.nextFrame();
}
}
}//onEnter
private function onClick(e:MouseEvent):void {
if (this.model) {
this.locationF=this.currentFrame-60;
if (this.locationF<1) {
this.locationF=1;
}
this.removeEventListener(Event.ENTER_FRAME,onEnter)
this.gotoAndStop(this.locationF)
this.model=!this.model
}else{
this.addEventListener(Event.ENTER_FRAME,onEnter)
this.model=!this.model
}
}
}//class
}//package
这段代码是库一个MC的链接类.把这个链接类添加到舞台上后,点击第一次,此影片将回退60帧,并停留在该帧,如果点击时,当前帧小于60,则停在第一帧.点击第二次时,影片从重新从当前位置开始播放,播放在最后一帧时,将自动倒退,倒退至第一帧时又将继续正放,如此反复.
主时间轴或文档类中代码:
import MyMC;
var myDisplay:MyMC=new MyMC();
addChild(myDisplay);
以上代码在FLASH CS4中测试通过.未经优化,但大致原理应该差不多了
stage和root的区别:stage位于显示列表的最底层,一般来说,stage的第一个子显示对象就是root.
既然你是在back的链接类中引用back,用this引用自身就可以了.
展开全部
private function backhandle(evt:MouseEvent) {
var target:MovieClip = (evt.currentTarget).parent as MovieClip;
target.gotoAndPlay(target.currentFrame-60);
}
var target:MovieClip = (evt.currentTarget).parent as MovieClip;
target.gotoAndPlay(target.currentFrame-60);
}
追问
哦 stage和root有何区别呢?我的文档类是继承的MovieClip为何不能调用gotoAndPlay()和currentFrame()呢
追答
stage是Stage类,没有gotoAndPlay的方法和currentFrame的属性;
root是DisplayObject类的一个属性,是显示清单树状部分的最上层显示物件;
如果root的指向不是MovieClip类,则也没有gotoAndPlay的方法和currentFrame的属性;
文档类继承的MovieClip,且有对应帧数,是可以响应gotoAndPlay的方法和currentFrame的属性;
不能响应的话,你应该检查出程序中target.gotoAndPlay(...)的target是否是MovieClip类。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询