Flash 错误 #1010,与类有关

Posted

技术标签:

【中文标题】Flash 错误 #1010,与类有关【英文标题】:Flash Error #1010, related to a class 【发布时间】:2013-02-27 04:22:07 【问题描述】:

我正在制作一个 Flash AS3 平台游戏,但实际上在一个新的类系统中添加了“子弹”(镜头)之后(直到那时我才使用类),我遇到了一个我无法解决的错误完全没有:TypeError: Error #1010: A term is undefined and has no properties.

现在,我知道这是一个暗示变量值的常见错误,但我真的不知道它来自哪里。

当我将此添加到我的主时间线代码时,问题出现了:

function Shoot():void 
    var directionPerso:String;
    if(perso.scaleX < 0)
        directionPerso = "gauche";
     else if(perso.scaleX > 0)
        directionPerso = "droite";
    

    var tir:rayon = new rayon(perso.x - scrollX, perso.y - scrollY, directionPerso);
    stage.addChild(tir);
    

这个是我的类文件:

package  
        import flash.display.MovieClip;
        import flash.events.Event;
        import flash.display.Sprite;

        public class rayon extends MovieClip

        private var vitesse:int = 10; //Vitesse du déplacement du rayon, fonction privée car tout le programme n'a pas besoin de connaitre cette valeur

        private var xInitial:int;

        public function effacer():void
        
            removeEventListener(Event.ENTER_FRAME, loop); 
            this.parent.removeChild(this); 
        

        public function rayon(persoX:int, persoY:int, directionPerso:String) 
    // constructor code
            if(directionPerso == "gauche")  //Ce qui se passe si la direction du joueur est "gauche", la balle part de la position du joueur, à gauche

            vitesse = -10;
            x = persoX - 25;

         

            else if(directionPerso == "droite")  //Ce qui se passe si la direction du joueur est "droite", la balle part de la position du joueur, à droite

            vitesse = 10;
            x = persoX + 25
    
            y = persoY - 75;
            xInitial = x;
    addEventListener(Event.ENTER_FRAME, loop); //Toujours pour avoir un programme bien plus fluide


        public function loop(e:Event):void //Dans une nouvelle fonction publique je crée le mouvement du rayon, relatif à la variable de vitesse créée plus haut
                x += vitesse;
                if(vitesse > 0)  //Si le rayon va vers la droite
                if(x > xInitial + 450)  //Le tir disparait au bout de 450px
                    effacer();
                                                                            
             else  
                if(x < xInitial - 450)  //Quand la cartouche va vers la gauche...
                    effacer(); //Elle disparait au bout de 450px
                
            
        

有人可以帮我解决这个问题吗?谢谢!

【问题讨论】:

【参考方案1】:

解决此问题的最佳方法是转到“发布设置”并选中“允许调试”选项。这会将发生错误的行号附加到输出中,以便您更轻松地跟踪它。

但是,如果不了解设置的更多信息,我的猜测是您没有定义变量“perso”或“scrollX/scrollY”。

【讨论】:

我激活了调试和TADA!它只是告诉我它来自哪里,它来自代码的整个其他区域......我觉得有点愚蠢,但非常感谢! 是的,调试器非常宝贵,奇怪的是很多人似乎并不知道它的存在。很高兴它成功了!

以上是关于Flash 错误 #1010,与类有关的主要内容,如果未能解决你的问题,请参考以下文章

与类有关的各种初始化方法及问题

与类有关的各种初始化方法及问题

与类有关的各种初始化方法及问题

与类有关的各种初始化方法及问题

bzoj1010

Falsh ANE有关Flash中与Java调用时候注意的一些事项