Flash 闪存中出错(1023:不兼容的覆盖。1021:重复的函数定义。)

Flash 闪存中出错(1023:不兼容的覆盖。1021:重复的函数定义。),flash,actionscript-3,Flash,Actionscript 3,有人能帮我修复错误吗: (1023:不兼容的覆盖。和1021:重复的函数定义) 我不熟悉Flash和动作脚本3,所以我真的不知道如何解决这个问题 我正在创建一个这样的游戏: 如果我按ENTER键,“pamato”应该位于“mouse2”所在的位置。它应该遵循鼠标2的方向。它还必须有摩擦力和速度 这两个错误的来源是函数速度 这是我到目前为止所做的代码 var sb:Number = 0; var friction:Number = 0.0085; var speed:Number = .002;

有人能帮我修复错误吗:

(1023:不兼容的覆盖。和1021:重复的函数定义)

我不熟悉Flash和动作脚本3,所以我真的不知道如何解决这个问题

我正在创建一个这样的游戏:
如果我按ENTER键,“pamato”应该位于“mouse2”所在的位置。它应该遵循鼠标2的方向。它还必须有摩擦力和速度

这两个错误的来源是函数速度

这是我到目前为止所做的代码

var sb:Number = 0;
var friction:Number = 0.0085;
var speed:Number = .002;
var path:Shape = new Shape();
addChild(path);

pamato.addEventListener(MouseEvent.MOUSE_DOWN, t_startDrag);
pamato.addEventListener(MouseEvent.MOUSE_UP, t_stopDrag);
position.addEventListener(MouseEvent.MOUSE_UP, b_position);
mouse.addEventListener(MouseEvent.MOUSE_UP, drawPath);
speedBar.addEventListener(Event.ENTER_FRAME, speed);
pamato.addEventListener(Event.ENTER_FRAME, moving);

// dragging the pamato to its position
function t_startDrag(event:Event):void 
{
     pamato.startDrag();
}

function t_stopDrag(event:Event):void 
{
     pamato.stopDrag();

     if(pamato.hitTestObject(circle))
     {
         pamato.x = 605;
         pamato.y = 570;
     }
}

// position button
function b_position(event:Event):void 
{
     mouse.addEventListener(Event.ENTER_FRAME, cursor)
     {
            function cursor(e:Event):void
        {
            mouse.alpha = 9;
            mouse.x = mouseX;
            mouse.y = mouseY;
        }
     }
}

// path && mouse2
function drawPath(event:Event):void 
{
     mouse2.x = mouse.x;
     mouse2.y = mouse.y;
     mouse2.alpha = 10;

     path.graphics.clear();
     path.graphics.lineStyle(1,0xFFFFFF,100);
     path.graphics.moveTo(pamato.x, pamato.y); 
     path.graphics.lineTo(mouse2.x, mouse2.y);
}

// speed bar
function speed(event:Event):void
{
     speedBar.scaleX = sb;

     stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown)
     {
         function myKeyDown(e:KeyboardEvent):void
         {  
             if (e.keyCode == Keyboard.SPACE)
             {
                  sb += .0005;

                 if (sb > 1)
                 {
                     sb = 0;
                 }
              } 
         }   
      } 
}

// moving the pamato
function moving(event:Event):void
{
     stage.addEventListener(KeyboardEvent.KEY_DOWN, enterKey)
     {
             if (e.keyCode == Keyboard.ENTER)
             {
                 var myRadians:Number = Math.atan2(mouse2.y-pamato.y, mouse2.x-pamato.x);
                 var myDegrees:Number = Math.round((myRadians*180/Math.PI));
                 var yChange:Number = Math.round(mouse2.y-pamato.y);
                 var xChange:Number = Math.round(mouse2.y-pamato.y);
                 var yMove:Number = Math.round(yChange/20);
                 var xMove:Number = Math.round(xChange/20);
                 var yspeed:Number = yspeed + yMove;
                 var xspeed:Number = xspeed + xMove;

                 removeChild(holder);
                 mouse2.alpha = 0;
                 mouse.alpha = 0;
                 sb = 0;
             }

      }

     xspeed *= friction;
     yspeed *= friction;
     y += yspeed;
     x += xspeed;
}

添加事件侦听器的方式是错误的。调用以下特定函数之一:

function speed(event:Event):void
{
    stage.addEventListener(KeyboardEvent.KEY_DOWN, this._onKeyDown );
}

private function _onKeyDown( e:KeyboardEvent ):void
{
    // do something
}
function speed( event:Event ):void
{
    stage.addEventListener( KeyboardEvent.KEY_DOWN, function( e:KeyboardEvent )
        {
            // this is the function block for the anon function
            // do something
        } ); // end of add listener
}
或者像这样的匿名函数:

function speed(event:Event):void
{
    stage.addEventListener(KeyboardEvent.KEY_DOWN, this._onKeyDown );
}

private function _onKeyDown( e:KeyboardEvent ):void
{
    // do something
}
function speed( event:Event ):void
{
    stage.addEventListener( KeyboardEvent.KEY_DOWN, function( e:KeyboardEvent )
        {
            // this is the function block for the anon function
            // do something
        } ); // end of add listener
}
在这两个版本中,第一个版本是最好的方法,因为它允许您在使用完事件侦听器后删除它(不删除事件侦听器意味着对象不能被垃圾收集,这意味着内存泄漏)


如果您仍然有问题,您可以发布完整的错误(应该有错误文本和问题所在的行)

我有另一个错误(1013:private属性只能用于类属性定义)。下面是我修改的代码://speed bar function speed(event:event):void{speedBar.scaleX=sb;stage.addEventListener(KeyboardEvent.KEY_DOWN,this._onKeyDown)}私有函数_onKeyDown(e:KeyboardEvent):void{if(e.keyCode==Keyboard.SPACE){sb+=0.0005;if(sb>1){sb=0;}}}我想我做错了(另外,你能检查一下函数的移动吗?。因为我认为,这是问题的根源。当我添加该函数时出现了错误…我最初在AS2中制作了该游戏,但当我试图将其转换为AS3时..真是一团糟!当我在AS2中制作该游戏时更容易了…这是代码..
//速度栏函数速度(event:event):void{speedBar.scaleX=sb;stage.addEventListener(KeyboardEvent.KEY\u DOWN,this.\u onKeyDown);}私有函数{u onKeyDown(e:KeyboardEvent):void{if(e.keyCode==Keyboard.SPACE){sb+=0.0005;if(sb>1){sb=0;}}
所有这些代码都在一个类中,还是只是复制到一个.as文件中?如果它在一个类中,您可以使用
public
private
protected
来控制对变量和函数等的访问。在我给您的示例中,我假设它在一个类中,因此如果它不只是删除
private
定义f对于函数
moving()
,您再次声明您的
addEventListener()
错误。只需遵循与答案相同的语法即可