Overriding in Flash IDE
I'm trying to override dispatchEvent(), with no success in the Flash IDE. Reviewing Adobe docs on the method, it should simply be:
override function name()
As demonstrated by Grant Skinner, this is commonly and easily performed:
override public function dispatchEvent(evt:Event):Boolean {
// code here
}
And while a thorough google search will repeat this syntax successfully used in Class files, doing so inside timeline code, natively in the Flash IDE is proving impossible. The first issue being that the use of public
throws the error 1114: The public attribute can only be used inside a package.
That was 开发者_Go百科obvious, however upon removing that, running the following (on the first frame of a new .fla file):
override function dispatchEvent(evt:Event):Boolean {
trace(evt.type);
return super.dispatchEvent(evt);
}
results in this error: 1024: Overriding a function that is not marked for override.
Documentation on this error implies that I failed to prefix the identically named function with the override
statement, but obviously that's a fallacy, and I'm left flabbergasted as to what the solution may be.
To be clear, we know a class file will work, but that's an irrelavant issue. How do we get override function dispatchEvent()
working in timeline code?
You can only override class methods of the class you extend(the base class).
This follows the rules on inheritance.
When you extend a class you inherit all of its methods. Overriding a method allows you to restructure that method. Accessing a method and overriding it are 2 different things.
public class SomethingSomething extends Event{
public function SomethingSomething ( ):void{
}
override public function dispatchEvent(evt:Event):Boolean {
trace(evt.type);
return super.dispatchEvent(evt);
}
}
dispatchEvent() is public, and your code is defualting to the default namespace. You neeed to do override function dispatchEvent(evt:Event):Boolean
1.the following is a class
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.the following use in flash IDE.Some object in library link ActionScript class(C):myClass.Then type the following code in object's MainTimeLine
function waitToOverride(){
// this will override myClass's waitToOverride method.
trace("this is overrided code of waitToOverride");
}
waitToOverride()//this is overrided code of waitToOverride
ps. juse do it,you will understand what I mean. Edit by Niauwu http://blog.yam.com/celearning/article/28409939
精彩评论