이 클래스를 가져 왔습니다. Klass.아무 이유없이 생성자가 호출되고 있습니다.
클래스 Klass에는 생성자에 대한 매개 변수가 있으며 기본값은 null입니다.
다른 클래스 안에 클래스 Klass의 객체를 만들고, 그것을 "MotherClass"라고 부를 수 있습니다.
이제 인스턴스가 Klass 객체를 인스턴스화 한 후 Klass의 생성자가 다시 호출됩니다. 즉, MotherClass의 생성자가 끝난 직후 (중단 점을 배치하고 단계별로 따라갔습니다), null과 함께 생성자 매개 변수.
것은이고, 나는 두 번째로 다시 생성자를 호출 할 수있는 어떤 단서 클라스의 생성자를 호출하지 않습니다 아무것도 스택 추적 ...
어떤 아이디어를 가지고 있지 않은거야?
감사합니다.
는(클라스는 인터페이스를 구현하고, 나는 그것이 영향을 미치는 어떤 경우, 확실하지 않은 배열을 사용하여 인스턴스를 만들고 있어요)의 요청에 따라
코드를 추가 :
:이 클래스의 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];
}
}
}
}
}
MotherClass 및 Klass에 대한 클래스 정의의 매우 단순화 된 버전을 게시 할 수 있습니까? – inhan
중단 점에서 스택 추적을 볼 수없는 것은 비동기 메커니즘을 통해 그 지점에 도착한 신호가 될 수 있습니다. 어쩌면 다른 이유가있을 수 있습니다. 그러나 그것은 나의 추측 일 것이다. 그리고 그게 우리가 할 수있는 모든 코드를보고 밖으로/ –
또 다른 야생 추측 - 당신의 Klass는 DisplayObject의 자손이고, 그 인스턴스는 Adobe Flash CS 내 무대에 배치됩니다. 이렇게하면 이러한 인스턴스가 기본값으로 인스턴스화되므로 감지 한 생성자 호출을 수신하게됩니다. – Vesper