这完全是胡说八道,而且是非常糟糕的做法。你应该避免这种编码方式!!!
这真的不是 OOP,让我想到糟糕的 AS1 /2 和 3 组合!!!
但是,如果您在 Document 属性中没有将类定义为主类,则这是可能的。
例如:在文件夹“com”中,ObjectOnStage.as 类:
package com {
import flash.display.Stage;
import flash.display.Sprite;
import flash.events.Event;
public class ObjectOnStage extends Sprite{
public function ObjectOnStage() {
this.addEventListener(Event.ADDED_TO_STAGE,onAddedToStage,false,0,false);
this.addEventListener(Event.ACTIVATED,onActivate,false,0,false);
}
public function onAddedToStage(e:Event):void{
// will output null for both
trace("\n added " + e.target + "\n");
trace(e.target.parent["nonSense"]);
trace(e.target.parent["nonsense"]);
}
public function onActivate(e:Event):void{
// will output the values.
trace("\n added " + e.target + "\n");
trace(e.target.parent["nonSense"]);
trace(e.target.parent["nonsense"]);
}
}
}
在时间轴的第一帧:
import com.ObjectOnStage;
var nonSense:int = 1;
var nonsense:String = "This is a nonsense";
var oos:ObjectOnStage = new ObjectOnStage();
this.addChild(oos);
你最好改变整个剧本!
Adobe 应该消除在时间轴上编写脚本的可能性,因为导出设置设置为 AS3,并且严格模式应始终设置为严格模式开启。也欢迎私人构造函数,以允许使用
MyClass.getInstance();
这将允许类似:
package com {
public class MyMainObject {
private static var instanceOfMainObject;
private function MyMainObject(args:Vector.<String>){
// or MyMainObject(...args)
trace("new Instance of MyMainObject created with " + args.toString());
}
public static function main(args:Vector.<String>):void{
instanceOfMainObject = MyMainObject.getInstance(args);
trace("arguments.length = " + args.length);
for(var i:int = 0 ; i < args.length ; i++){
trace( i + " = " + args[i]);
}
}
public static function getInstance(args:Vector.<String>):MyMainObject{
var instance:MyMainObject = new MyMainObject(args);
return instance;
}
}
}
现在,此代码引发错误:
1153: A constructor can only be declared public.
也许这将是 AS4 中的情况???
如果我通过您的评论理解它,您必须将声明变量的 DisplayObjectContainer 作为参数传递给类。
示例:在 MyClass.as
package com {
import flash.display.DisplayObjectContainer;
import flash.events.EventDispatcher;
public class MyClass extends EventDispatcher{
public function MyClass(doc:DisplayObjectContainer) {
trace(doc["nonSense"]);
trace(doc["nonsense"]);
// but this is again not OOP even if you use the "class" KEYWORD.
}
}
}
在时间线上:var nonSense:int = 1; var nonsense:String = "这是胡说八道"; var mclss:MyClass = new MyClass(this);
关于 EventDispatcher,您还可以在此处阅读我对 EventDispatcher 的回答