2013-06-04 2 views
1

Невозможно выяснить, что не так с моим кодом. Пожалуйста помоги.Ошибка кодирования - Adobe Flash

Ошибки:

Сцена 1, слой 'Действия', рама 3, линия 120 1180: Обращение к возможно неопределенному методу rad2deg. Сцена 1, «Действия» слоя, рамка 3, строка 121 1180: вызов возможно неопределенного метода rad2deg. Сцена 1, «Действия» слоя, рамка 3, строка 129 1180: вызов возможно неопределенного метода rad2deg.

Код:

import flash.utils.Timer; 
import flash.events.TimerEvent; 

var upPressed:Boolean = false; 
var downPressed:Boolean = false; 
var leftPressed:Boolean = false; 
var rightPressed:Boolean = false; 
var missile:Array = new Array(); 
var timer: Timer = new Timer(1000); 
timer.addEventListener(TimerEvent.TIMER, addMissile); 
timer.start(); 

plane.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey_2); 
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed_2); 
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed_2); 
stage.addEventListener(Event.ENTER_FRAME, moveObjects); 

function fl_MoveInDirectionOfKey_2(event:Event) 
{ 
    if (upPressed) 
    { 
     plane.y -= 8; 
    } 
    if (downPressed) 
    { 
     plane.y += 8; 
    } 
    if (leftPressed) 
    { 
     plane.x -= 8; 
    } 
    if (rightPressed) 
    { 
     plane.x += 8; 
    } 
} 

function fl_SetKeyPressed_2(event:KeyboardEvent):void 
{ 
    switch (event.keyCode) 
    { 
     case Keyboard.UP: 
     { 
      upPressed = true; 
      break; 
     } 
     case Keyboard.DOWN: 
     { 
      downPressed = true; 
      break; 
     } 
     case Keyboard.LEFT: 
     { 
      leftPressed = true; 
      break; 
     } 
     case Keyboard.RIGHT: 
     { 
      rightPressed = true; 
      break; 
     } 
    } 
} 

function fl_UnsetKeyPressed_2(event:KeyboardEvent):void 
{ 
    switch (event.keyCode) 
    { 
     case Keyboard.UP: 
     { 
      upPressed = false; 
      break; 
     } 
     case Keyboard.DOWN: 
     { 
      downPressed = false; 
      break; 
     } 
     case Keyboard.LEFT: 
     { 
      leftPressed = false; 
      break; 
     } 
     case Keyboard.RIGHT: 
     { 
      rightPressed = false; 
      break; 
     } 
    } 
} 

function addMissile(evt:TimerEvent):void { 
    var missile:Missile = new Missile(); 
    var side:Number = Math.ceil(Math.random() * 4); 
    if (side == 1) { 
     missile.x = Math.random() * stage.stageWidth; 
     missile.y = - missile.height; 
    } else if (side == 2) { 
     missile.x = stage.stageWidth + missile.width; 
     missile.y = Math.random() * stage.stageHeight; 
    } else if (side == 3) { 
     missile.x = Math.random() * stage.stageWidth; 
     missile.y = stage.stageHeight + missile.height; 
    } else if (side == 4) { 
     missile.x = - missile.width 
     missile.y = Math.random() * stage.stageHeight; 
    } 
    missile.angle = getAngle(missile.x, missile.y, plane.x, plane.y); 
    missile.speed = Math.ceil(Math.random() * 15); 
    addChild(missile); 
    missile.push(missile); 
} 

function moveObjects(evt:Event):void { 
    moveMissile(); 
} 

function moveMissile():void { 
    for (var i:int = 0; i < missile.length; i++) { 
     var dx = Math.cos(rad2deg(missile[i].angle)) * missile[i].speed; 
     var dy = Math.sin(rad2deg(missile[i].angle)) * missile[i].speed; 
     missile[i].x += dx; 
     missile[i].y += dy; 
    } 
} 

function getAngle(x1:Number, y1:Number, x2:Number, y2:Number):Number { 
    var radians:Number = Math.atan2(y2 - y1, x2 - x1); 
    return rad2deg(radians); 
} 
+1

Либо добавьте функцию rad2deg, либо прекратите называть ее ...? –

ответ

0

Я думаю, что у меня есть ответ. попробуйте добавить это в свой код:

deg2rad = Math.PI/180; 
rad2deg = 180/Math.PI; 

Сообщите мне, если это работает.

+0

Не работает :( – user2449910

0

Не похоже, что вы определили функцию rad2deg()?

Добавить это где-то:

function rad2deg(radians:Number):Number 
{ 
    return radians * 180/Math.PI; 
} 

Важно отметить, что единственное место, где вы найдете градусов полезные в Flash, является установка rotation в виде DisplayObject.

Эта строка из вашего кода, например, не будет работать должным образом - Math.cos() и так далее нужны радианы.

Math.cos(rad2deg(missile[i].angle))