flash as3如何将flash中的多帧上面的代码用外部的as文件中控制
flashas3如何将flash中的多帧上面的代码用外部的as文件来控制我把上面两帧上面的代码剪切到as文件里面说什么未定义比如第一帧上面写的代码只跟第一帧上面有关第二针...
flash as3如何将flash中的多帧上面的代码用外部的as文件来控制
我把上面两帧上面的代码剪切到as文件里面说什么 未定义
比如 第一帧上面写的代码 只跟第一帧上面有关 第二针上面写的代码跟第二针有关 但是 如果第一帧第二针上面的代码都写在第一帧 就会报错 说什么未定义
但是用外部文件as 的时候 因为as文件只有一个
只能写在一起 那么永远都会报错 说什么未定义
如果写在外部 能解决吗
比如说 在某帧的时候 就只执行某些代码 当跳帧 或者触发事件的时候才执行另一些代码 这样可以实现吗
说简单点就是用外部as文件来控制flash的运行 展开
我把上面两帧上面的代码剪切到as文件里面说什么 未定义
比如 第一帧上面写的代码 只跟第一帧上面有关 第二针上面写的代码跟第二针有关 但是 如果第一帧第二针上面的代码都写在第一帧 就会报错 说什么未定义
但是用外部文件as 的时候 因为as文件只有一个
只能写在一起 那么永远都会报错 说什么未定义
如果写在外部 能解决吗
比如说 在某帧的时候 就只执行某些代码 当跳帧 或者触发事件的时候才执行另一些代码 这样可以实现吗
说简单点就是用外部as文件来控制flash的运行 展开
2个回答
展开全部
比如说你原来的影片剪辑有10帧,第1帧上写了 trace("HELLO") ,第5帧写了trace(123),第10帧写了
stop(),然后你为它写了一个外部as脚本类,并且是确认两者之间的链接无误的话……
实现方法有2种:
上策是在原来有代码的各关键帧上写事件派发(dispatchEvent),每播放到该关键帧就会对外发送一次事件通知;在外部脚本类中写侦听,根据对应的事件通知来执行原来的代码。
在影片剪辑的第1帧上写
dispatchEvent(new Event("Frame1_Event"));
在影片剪辑的第5帧上写
dispatchEvent(new Event("Frame5_Event"));
在影片剪辑的第10帧上写
dispatchEvent(new Event("Frame10_Event"));
然后在外部as的构造函数中写
this.addEventListener("Frame1_Event",onFrame1);
this.addEventListener("Frame5_Event",onFrame5);
this.addEventListener("Frame10_Event",onFrame10);
再在构造函数的外面,class的里面写
private function onFrame1)(e:EVent):void
{
trace("HELLO");
}
private function onFrame5(e:EVent):void
{
trace(123);
}
private function onFrame10(e:EVent):void
{
stop();
}
这种方法最节省cpu和内存的消耗。
比较小白的方法:在外部监听帧事件(就是Event.ENTER_FRAME),判断当前时间轴播放到第几帧,然后执行对应方法。
你在外部类的构造函数里面写
this.addEventListener(Event.ENTER_FRAME,enterFrame);
然后再在构造函数的外部,class的内部写
private function enterFrame(e:Event):void
{
switch(this.currentFrame)
{
case 1:
trace("HELLO");
break;
case 2:
trace(123);
break;
case 10:
stop();
break;
}
}
这可是比较占资源的,不需要的时候记得移除事件侦听
this.removeEventListener(Event.ENTER_FRAME,enterFrame);
stop(),然后你为它写了一个外部as脚本类,并且是确认两者之间的链接无误的话……
实现方法有2种:
上策是在原来有代码的各关键帧上写事件派发(dispatchEvent),每播放到该关键帧就会对外发送一次事件通知;在外部脚本类中写侦听,根据对应的事件通知来执行原来的代码。
在影片剪辑的第1帧上写
dispatchEvent(new Event("Frame1_Event"));
在影片剪辑的第5帧上写
dispatchEvent(new Event("Frame5_Event"));
在影片剪辑的第10帧上写
dispatchEvent(new Event("Frame10_Event"));
然后在外部as的构造函数中写
this.addEventListener("Frame1_Event",onFrame1);
this.addEventListener("Frame5_Event",onFrame5);
this.addEventListener("Frame10_Event",onFrame10);
再在构造函数的外面,class的里面写
private function onFrame1)(e:EVent):void
{
trace("HELLO");
}
private function onFrame5(e:EVent):void
{
trace(123);
}
private function onFrame10(e:EVent):void
{
stop();
}
这种方法最节省cpu和内存的消耗。
比较小白的方法:在外部监听帧事件(就是Event.ENTER_FRAME),判断当前时间轴播放到第几帧,然后执行对应方法。
你在外部类的构造函数里面写
this.addEventListener(Event.ENTER_FRAME,enterFrame);
然后再在构造函数的外部,class的内部写
private function enterFrame(e:Event):void
{
switch(this.currentFrame)
{
case 1:
trace("HELLO");
break;
case 2:
trace(123);
break;
case 10:
stop();
break;
}
}
这可是比较占资源的,不需要的时候记得移除事件侦听
this.removeEventListener(Event.ENTER_FRAME,enterFrame);
追问
这个问题我在看的你的回答之前就已经解决了 用的我自己发明的一种方法 不过看你的回答很专业的 就选你为满意答案吧 你还能回答我一个问题吗 就是 如何掩藏鼠标 我在flash里面掩藏的时候没有问题 我用外部as文件来掩藏的时候 说什么 未定义
追答
隐藏鼠标要导入鼠标类。
import flash.ui.Mouse
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询