2014-01-27 2 views
0

Мне нужен совет, пожалуйста. Я работаю над одним проектом - простой игрой. Это будет нечто вроде «Space Invaders». Я просто нуждался в том, чтобы угодить кораблю не мог покинуть этот район (этап). Функция, называемая «RMimoXY», не работает. Может кто-нибудь, пожалуйста, проверьте, что мне не хватает в программе?Как создать границу на этапе

Заранее благодарим за ваш совет.

import flash.events.KeyboardEvent; 
import flash.display.Sprite; 
import flash.display.DisplayObject; 
import flash.media.Sound; 
import flash.display.Stage; 

var let: Boolean = false; 
var pozadi: Stage; 
var vx:Number = 0; 
var vy:Number = 0; 

function mezernik(){ 
    var mySound: Sound = new laserFire(); 
    mySound.play(); 
    RMimoXY(); 
} 

stage.addEventListener(KeyboardEvent.KEY_DOWN, klavesnice); 

function klavesnice(e: KeyboardEvent){ 
    switch(e.keyCode){ 
     case Keyboard.LEFT: lod.x += -5; break; 
     case Keyboard.RIGHT: lod.x += 5; break; 
     case Keyboard.UP: lod.y += -5; break; 
     case Keyboard.DOWN: lod.y += 5; break; 
     case Keyboard.SPACE: mezernik(); break; 
    } 
} 

function RMimoXY(){ 
    if (lod.x > stage.stageWidth){ 
     lod.x = 0 - lod.width; 
    } 
    else if (lod.x < 0 - lod.width){ 
     lod.x = stage.stageWidth; 
    } 
    if (lod.y > stage.stageHeight){ 
     lod.y = 0 - lod.height; 
    } 
    else if (lod.y < 0 - lod.height){ 
     lod.y = stage.stageHeight; 
    } 
} 
+0

Попробуйте запустить этот метод на каждом кадре, как: 'stage.addEventListener (Event.ENTER_FRAME, RMimoXY)', и изменить его определение как 'функции RMimoXY (e: Event): void' – Cherniv

+0

Спасибо за ответ, но не работаем. – user3134756

ответ

0

Похоже, что вы вызываете только RMimoXY в свой конструктор. Вы должны называть его каждый раз, когда корабль перемещается. Поэтому добавление его в конец вашего keyhandler должен работать:

function klavesnice(e: KeyboardEvent){ 
    switch(e.keyCode){ 
     case Keyboard.LEFT: lod.x += -5; break; 
     case Keyboard.RIGHT: lod.x += 5; break; 
     case Keyboard.UP: lod.y += -5; break; 
     case Keyboard.DOWN: lod.y += 5; break; 
     case Keyboard.SPACE: mezernik(); break; 
    } 
    RMimoXY(); 
} 
Смежные вопросы