5006:ActionScript文件不能有多个外部可见定义

时间:2014-08-16 00:10:47

标签: actionscript-3 flash actionscript

所以,我在AS3上遇到这个错误。我有一个名为Inimigo2_Caique2的对象(影片剪辑),他也被称为Inimigo2_Caique2。 (我不知道为什么,但库中对象的图标是绿色而不是蓝色。)

当我尝试运行该文件时,收到此错误消息:

5006:ActionScript文件不能有多个外部可见定义:Inimigo2_Caique2,removeListeners

我有另一个名为Inimigo_Caique2的对象,另一个名为Inimigo_Caique2的对象。 (图标也是绿色。)

以下是我的Inimigo2_Caique2类的代码:

    package{
    import flash.events.Event;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    public class Inimigo2_Caique2 extends Sprite{
        private var palco:Object;
        private var yd:Number;
        private var xd:Number;
        public function Inimigo2_Caique2(){
            addEventListener(Event.ADDED_TO_STAGE,inicia2);
        }
        private function inicia2(e:Event){
            palco=MovieClip(root);
            yd=palco.aviao.y-y;
            xd=palco.aviao.x-x;
            addEventListener(Event.ENTER_FRAME,loop1);
        }
        private function loop1(e:Event){
            var angulo:Number=Math.atan2(yd,xd);
            x+=Math.cos(angulo)*10;
            y+=Math.sin(angulo)*10;
            for(var i:int = 0; i<palco.recipiente.numChildren;i++){
                var alvoBala2:Sprite = palco.recipiente.getChildAt(i);
                var ris:Number=alvoBala2.y-y;
                var run:Number=alvoBala2.x-x;
                var dis:Number=Math.sqrt(Math.pow(ris,2)+Math.pow(run,2));
                if(dis<100){
                    if(run<0){
                        x+=20;
                    }else{
                        x-=20;
                    }
                }
            }
            if(hitTestObject(alvoBala2)){
                palco.recipiente.getChildAt(i).removeListeners();
                palco.recipiente.removeChild(alvoBala2);
                palco.Som2.play();
                var boom3:MovieClip = new explosao();
                boom3.x=x;
                boom3.y=y;
                stage.addChild(boom3);
                palco.pontos+=300;
                var textopontos=String(palco.pontos);
                palco.txt_pontos.text=textopontos;
                removeEventListener(Event.ENTER_FRAME,loop1);
                palco.removeChild(this);
            }
        }
        if(hitTestObject(palco.aviao)){
            palco.Som2.play();
            var aviaoboom:MovieClip = new explosao();
            aviaoboom.x=palco.aviao.x;
            aviaoboom.y=palco.aviao.y;
            stage.addChild(aviaoboom);
            palco.gotoAndStop(2);
        }
    }
    public function removeListeners():void{
        removeEventListener(Event.ENTER_FRAME,loop1);
    }
}

我不知道为什么会这样。我已经检查了括号和所有内容,但没有任何作用。

提前致谢。这个错误让我很生气。

2 个答案:

答案 0 :(得分:2)

在以下情况中,函数myFunction是公共类Main,并由编译器解释为另一个类:

我的班级

package 
{
    import flash.display.MovieClip;

    public class Main extends MovieClip
    {

    }
    //
    public function myFunction()
        {

        }
    //
}

My Fla

myFunction(); // function invoked

出现此错误消息: 5006:ActionScript文件不能有多个外部可见定义:Main,myFunction ,因为正确的代码是:

我的班级

package 
{
    import flash.display.MovieClip;

    public class Main extends MovieClip
    {
        public function myFunction()
        {
            trace('myFunction should be here');
        }
    }
}

因此,您的错误消息表明您的功能removeListeners不属于您的班级Inimigo2_Caique2

<强>备注

正如MasterRoro所说,这个区块似乎不在你的loop1函数中:

if (hitTestObject(palco.aviao)) {
    palco.Som2.play();
    var aviaoboom:MovieClip = new explosao();
    aviaoboom.x=palco.aviao.x;
    aviaoboom.y=palco.aviao.y;
    stage.addChild(aviaoboom);
    palco.gotoAndStop(2);
}

答案 1 :(得分:0)

似乎是你的阻止:

    if(hitTestObject(palco.aviao)){
        palco.Som2.play();
        var aviaoboom:MovieClip = new explosao();
        aviaoboom.x=palco.aviao.x;
        aviaoboom.y=palco.aviao.y;
        stage.addChild(aviaoboom);
        palco.gotoAndStop(2);
    }
} //Extra curly brace

应该进入你的loop1(e:Event)功能。你使用2个大括号终止了loop1函数,然后在所述块中的额外大括号终止了你的类定义,这就是编译器抛出该错误的原因。

尝试在loop1()函数中移动此块并在末尾移除额外的大括号。