這是完全廢話和非常不好的做法。你應該避免這種編碼方式!
這實在不是面向對象,讓我想到不好的AS1/2和3結合起來!
但是,如果您沒有在文檔屬性中定義的類作爲主類,則這是可能的。
例如: 在foler 「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"]);
}
}
}
在時間軸上的第1幀:
import com.ObjectOnStage;
var nonSense:int = 1;
var nonsense:String = "This is a nonsense";
var oos:ObjectOnStage = new ObjectOnStage();
this.addChild(oos);
你最好改變整個腳本!
由於導出設置設置爲AS3,因此Adobe應該刪除在時間軸上編寫腳本的可能性,嚴格模式應始終設置爲嚴格模式ON。 也私有的構造會受到歡迎,以允許
MyClass.getInstance();
的使用這將pemit類似:
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;
}
}
}
現在,這個代碼拋出Error:
1153: A constructor can only be declared public.
也許這將是在AS4的情況下?
如果我通過你的評論瞭解它,你必須通過DisplayObjectContainer將你的變量聲明爲類的參數。
示例: in MyClass。作爲
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無義:整數= 1; var nonsense:String =「這是胡說八道」; var mclss:MyClass = new MyClass(this);
關於此事件,您還可以閱讀my answer about EventDispatcher here
爲什麼你把時間表AS3帶班AS3?我不知道很多AS3,或者完全是AS3,但這似乎是一件奇怪的事情。 – MarioDS