所以,我在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);
}
}
我不知道为什么会这样。我已经检查了括号和所有内容,但没有任何作用。
提前致谢。这个错误让我很生气。
答案 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()函数中移动此块并在末尾移除额外的大括号。