2011-12-29 1 views
0

Может кто-то помочь мне исправить ошибку:ERROR вспышка (1023: несовместимой переопределение И 1021:.. Повторяющиеся определения функции)

(1023: Incompatible override. AND 1021: Duplicate function definition)

Я новичок в флэш и Action Script 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; 
} 

ответ

0

Пути вы добавляете слушатель событий неправильно. Либо вызвать определенную функцию, как это:

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 
} 

Из двух, первая версия является лучшим способом сделать это, так как она позволяет удалить прослушиватель событий, когда вы закончите с ним (не удаляя прослушиватели событий, означает, что объекты не могут быть собраны в мусор, что означает утечку памяти)

Если у вас все еще есть проблемы, можете ли вы опубликовать полную ошибку (должна быть ошибка текст и строка, в которой проблема)

+0

я была еще одна ошибка (1013: Частный атрибут может использоваться только в определениях класса.) Вот мой модифицированный код: // скорость грифа скорость функции (событие: Event): пустота { \t SpeedBar. scaleX = sb; \t \t \t stage.addEventListener (KeyboardEvent.KEY_DOWN, this._onKeyDown); } частные функции _onKeyDown (е: KeyboardEvent): пустота {\t \t , если (e.keyCode == Keyboard.SPACE) \t { \t \t SB + = 0,0005; \t \t \t \t \t \t , если (SB> 1) \t \t { \t \t \t SB = 0; \t \t} \t}} я думаю, я сделал это неправильно ... :( также, вы можете проверить функции перемещения? .. потому что я думаю, что это источник проблемы. Появились ошибки при Я добавил, что функция .... – jcAmats

+0

Я изначально сделал эту игру в AS2, но когда я попытался преобразовать ее в AS3, это беспорядок! его намного проще, когда я сделал эту игру в AS2 ... – jcAmats

+0

это код снова .. '// бар скорости функция скорость (событие: событие): void { \t speedBar.scaleX = sb; \t \t \t stage.addEventListener (KeyboardEvent.KEY_DOWN, this._onKeyDown); } частные функции _onKeyDown (е: KeyboardEvent): пустота {\t \t , если (e.keyCode == Keyboard.SPACE) \t { \t \t SB + = 0,0005; \t \t \t \t \t \t , если (SB> 1) \t \t { \t \t \t SB = 0; \t \t} \t} } ' – jcAmats

Смежные вопросы