flashide中的重写
我试图覆盖dispatchEvent(),但在Flash IDE中没有成功。回顾该方法,它应该是:flashide中的重写,flash,actionscript-3,overriding,timeline,dispatchevent,Flash,Actionscript 3,Overriding,Timeline,Dispatchevent,我试图覆盖dispatchEvent(),但在Flash IDE中没有成功。回顾该方法,它应该是: override function name() 如所示,这是一种常见且容易执行的操作: override public function dispatchEvent(evt:Event):Boolean { // code here } 虽然彻底的谷歌搜索将在类文件中成功地重复使用这种语法,但在时间线代码中这样做,而在flashide中本机使用是不可能的。第一个问题是使用public
override function name()
如所示,这是一种常见且容易执行的操作:
override public function dispatchEvent(evt:Event):Boolean {
// code here
}
虽然彻底的谷歌搜索将在类文件中成功地重复使用这种语法,但在时间线代码中这样做,而在flashide中本机使用是不可能的。第一个问题是使用public
会引发错误1114:public属性只能在包内使用。
这是显而易见的,但是在删除它之后,运行以下命令(在新的.fla文件的第一帧上):
导致此错误:1024:重写未标记为重写的函数。
这意味着我没有用override
语句作为同名函数的前缀,但显然这是一个谬误,我对解决方案感到震惊
要清楚,我们知道类文件可以工作,但这是一个不相干的问题。如何让重写函数dispatchEvent()
在时间线代码中工作?dispatchEvent()是公共的,并且您的代码正在解除到默认命名空间。你需要做什么
重写函数dispatchEvent(evt:Event):布尔值您只能重写所扩展类(基类)的类方法。
这遵循继承规则。
当您扩展一个类时,您将继承它的所有方法。重写方法允许您重新构造该方法。访问一个方法和重写它是两件不同的事情
public class SomethingSomething extends Event{
public function SomethingSomething ( ):void{
}
override public function dispatchEvent(evt:Event):Boolean {
trace(evt.type);
return super.dispatchEvent(evt);
}
}
下面是一节课
package{
import flash.display.MovieClip
public class myClass{
public function myClass(){
// constructor code
trace("this is constructor")
waitToOverride()//trace this is overrided code of waitToOverride
}
static function waitToOverride(){
//wait to override
trace("this is original code of waitToOverride")
}
}
}
2.flash IDE中的以下用法。库中的某些对象链接ActionScript类(C):myClass。然后在对象的MainTimeLine中键入以下代码
function waitToOverride(){
// this will override myClass's waitToOverride method.
trace("this is overrided code of waitToOverride");
}
waitToOverride()//this is overrided code of waitToOverride
附言:只要你去做,你就会明白我的意思。
鸟屋编辑
Epsdz:我假设您的回复被意外地缩短了,但我理解名称空间应该是相同的。正如“任何定义为公共的东西都可以被任何东西访问。”无论如何,可以肯定的是,尝试
使用namespace public文档开头的code>并不能解决问题,正如人们可能认为的那样。您可能无法通过时间线代码来解决问题。您可能需要从时间线代码切换到一个“文档类”来扩展MovieClip,后者反过来扩展EventDispatcher,因此有一个dispatchEvent函数要覆盖。哇。。。我只是假设FLA文档是一个MainTimeline类,我还假设它是从中继承的。那么文档类是空白画布吗?如果是真的,这肯定可以解释这个问题。当然是真的。但是,您可以创建一个主类,并将其用于您的文档类,并对其进行扩展。归根结底,您需要创建一个类来重写另一个类的函数。
function waitToOverride(){
// this will override myClass's waitToOverride method.
trace("this is overrided code of waitToOverride");
}
waitToOverride()//this is overrided code of waitToOverride