为什么我的AS3文档类构造函数在无限循环中被调用?

时间:2013-09-09 14:39:01

标签: actionscript-3

---------------- 1 ------------------

您好亲爱的开发者朋友,

我面临一个非常奇怪的错误:让我解释一下。

我目前正在AS3中开发一个电子学习应用程序,培训以FLA章节的形式出现,扩展了我们将其命名为“ChapterDefault”的父类。

突然今天,我没有想法,但我的一章确定他的Document类构造函数必须被无限调用(我在文档类构造函数的开头放置一个跟踪,并且它被无限激发)

更确切地说:

我有一个扩展父类的FLA(章节)(ChapterDefault.as) 所以我的文档类(chapter.as)就像:

public class Chapitre extends ChaptitreDefaut{
    public function Chapitre (){
        trace("Construct");
        super();
    }
}

结果:

Construct
Construct
Construct
Construct
...

我现在已经把头发拉了5个小时,任何线索或建议都很好。 在此先感谢,不要犹豫,向我提出更多细节。

对不起我的英语,如果它很奇怪^^

---------------- 2 ------------------

ChapterDefault是一个非常大的类(大约1.5k行),所以我不会把它放在这里^^我真的不认为它来自它'因为每一个章节都是heritatin从它没有任何问题

这是它的构造函数(它是法语):

public function ChapitreDefaut()
{
    MonsterDebugger.initialize(this);

    if(ChargeurFormation.charge){
        init();
    }
    else{
        // On récupère le fichier XML dans le cas d'une compilation isolée : 
        c_XML = new ChargeurXML();
        c_XML.addEventListener(IOErrorEvent.IO_ERROR, erreurCheminXml);
        c_XML.addEventListener(Event.COMPLETE, chargementXmlTermine);
        c_XML.charge(new URLRequest("../../../init/init.xml"));
        MonsterDebugger.trace(this, "Chargement du XML lancé", "Max", "Constructeur ChapitreDefaut", 0xFF00FF);

        c_PrefixeCheminRelatif = "../../../fla/";
    }
    // Nous sommes dans un chapitre, toutes les questions s'affichent dans un cadre :
    Question.AVEC_CADRE = true;
    // Ecoute des évènements
    this.addEventListener(CHAPITRE_PRET, lanceChapitre);
    this.addEventListener(Event.ADDED_TO_STAGE, ajoutScene);
}

如果你想要代码的另一部分,我也可以给你。

非常感谢

---------------- 3 ------------------

感谢您的回答,但我认为这不是提及的3个中的任何一个:

1)我的父/子课程拼写正确

2)无法创建新实例! “LesTypesDePression”是我的FLA,这个以前的文档类代码,所以我不能通过ctrl + enter几次调用它

3)在init()中我只是实例化Sprites / shapes等,但是在这种情况下你可以认为ChargeurFormation.charge就像一个永久的假,所以这不会发生。

PS:我试图删除super(),不会改变任何东西。

2 个答案:

答案 0 :(得分:0)

等待 - 构造函数/类的名称ChapterDefault有两种不同的语言,具体取决于您是向我们展示了ChapterDefault的构造函数还是为章节的构造函数。因此,类/构造函数在实际代码中由两个不同的拼写引用。如果这是两种情况下的真实代码,那么这就是一个错误。

在这种情况下,尝试更改Chapter的构造函数中的代码以使用法语拼写,让我们看看是否能解决问题。也许你在英语拼写的某个地方有另一个类,它的实现有问题。

如果这不起作用,那么它可能是以下两件事之一:

1 - 对象的新实例正在外部创建;请向我们展示章节对象的声明和实例化的代码。

2 - ChapitreDefault()中的init()函数要么在内部创建一个Chapter对象,要么试图通过一些奇怪的方法调用它的构造函数;请告诉我们这方面的实施情况。

答案 1 :(得分:0)

我终于解决了我的问题:

它来自我的共享库加载,我不小心将我的章节配置文件导入到我的共享库中,该库具有作为文档类的精确章节,然后在编译本章时,我的共享库可以访问他不需要的文档类。

最后没有错误,只是误用了IDE 。谢谢你的帮助。祝你有愉快的一天。