私はこのクラスを取得しました。それをクラスと呼びましょう。
クラスKlassには、デフォルト値がnullの配列であるコンストラクターのパラメーターがあります。
別のクラス内にクラスKlassのオブジェクトを作成し、それを「MotherClass」と呼びましょう。
オブジェクトKlassをインスタンス化した後、MotherClassのコンストラクターが終了した直後(ブレークポイントを設定し、ステップバイステップで実行)に、コンストラクターパラメーターがnullの状態で、Klassのコンストラクターが再度呼び出されます。
問題は、Klassのコンストラクターを2回呼び出しているもののスタックトレースがないことです。そのコンストラクターを再度呼び出すことができるかどうかの手がかりはありません...
何か案は?
ありがとう。
(Klassはインターフェイスを実装しており、配列を使用してインスタンスを作成していますが、それが何かに影響を与えているかどうかはわかりません)
要求に応じて追加されたコード:
これはクラスMotherKlassです:
public class Unit extends EntityVO{
public function Unit(level:int = 1)
{
//init vars and stuff
//...
//
initLevelData();
applyLevel = level;
}
private function initLevelData():void {
levelData[1] = [500, [[Spawn, this.entityToSpawn.type, this.entityToSpawn.level, 120]], "unit_level1"];
levelData[2] = [1000, [[Spawn, this.entityToSpawn.type, this.entityToSpawn.level, 90]], "unit_level2"];
levelData[3] = [2000, [[Spawn, this.entityToSpawn.type, this.entityToSpawn.level, 80]], "unit_level3"];
levelData[4] = [5000, [[Spawn, this.entityToSpawn.type, this.entityToSpawn.level, 60]], "unit_level4"];
}
override public function set applyLevel(level:int):void {
power = power / maxPower * levelData[level][0];
maxPower = levelData[level][0];
behavior = levelData[level][1];
for (var i:int = 0; i < behavior.length; i ++){
_behaviorSteps[i] = new behavior[i][0](behavior[i].slice(1));
_behaviorReqs.push(_behaviorSteps[i].req);
}
}
}
}
}
これはクラスです:
public class Spawn {
public class Spawn implements IBehavior
{
private var _entityType:String;
private var _entityLevel:int;
private var _spawnRate:int;
public function Spawn(params:Array = null){
//had to put the if because of the second weird call to the constructor with null
if(params){
_entityType = params[0];
_entityLevel = params[1];
_spawnRate = params[2];
}
}
}
}
}