2013-06-05 61 views
0

我正在製作一款遊戲,其中您的飛機是試圖躲避來襲的導彈。我試圖讓我的壞蛋產生並從舞臺的頂部移動到底部。目前沒有錯誤,壞人產卵但不移動。請幫忙。Objects not moving - Actionscript

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 baddies:Array = new Array(); 
var baddieSpeed:int = 15; 
var timer: Timer = new Timer(1000); 
timer.addEventListener(TimerEvent.TIMER, addBaddie); 
timer.start(); 

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

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



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; 
     } 
    } 
} 

timer.addEventListener(TimerEvent.TIMER, addBaddie); 
timer.start(); 
function addBaddie(evt:TimerEvent):void { 
    var baddie:Baddie = new Baddie(); 
    baddie.x = - baddie.width 
    baddie.y = Math.random() * stage.stageHeight; 
    baddie.angle = getAngle(baddie.x, baddie.y, target.x, target.y); 
    baddie.rotation = getAngle(baddie.x, baddie.y, target.x, target.y); 
    baddie.speed = baddieSpeed 
    addChild(baddie); 
    baddies.push(baddie); 
    } 


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


function deg2rad(deg:Number):Number { 
    return deg * (Math.PI/180); 
} 

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



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

你在哪裏調用函數moveBaddies()? – pravid

回答

0

它看起來像你調用這個兩次:

timer.addEventListener(TimerEvent.TIMER, addBaddie);

我建議你創建一個專用於移動的敵人定時器:

var baddieMover:Timer = new Timer(40); 
baddieMover.addEventListener(TimerEvent.TIMER, moveBaddies); 
baddieMover.start(); 
var counter:int = 0; 
function moveBaddies(evt:TimerEvent):void { 
    for (var i:int = 0; i < baddies.length; i++) { 
     var dx = Math.cos(deg2rad(baddies[i].angle)) * baddies[i].speed; 
     var dy = Math.sin(deg2rad(baddies[i].angle)) * baddies[i].speed; 
     baddies[i].x += dx; 
     baddies[i].y += dy; 
    } 
} 
0

我相信你已經忘了調用Movebaddies函數。正如EgoAnt所說 - 爲了保持整潔,我建議你爲這個功能製作一個新的Listener。

+0

當我添加監聽器: stage.addEventListener(Event.ENTER_FRAME,moveBaddies); 我現在收到錯誤: ArgumentError:錯誤#1063:對GameNew2_fla :: MainTimeline/moveBaddies()的參數計數不匹配。預計0,得到1. – user2449910

+0

functiom movebaddies(e:Event) – Engine