Показать сообщение отдельно
Старый 07.06.2008, 00:24
Korsar Nik вне форума Посмотреть профиль Отправить личное сообщение для Korsar Nik Найти все сообщения от Korsar Nik
  № 4  
Ответить с цитированием
Korsar Nik

Регистрация: May 2006
Сообщений: 36
Kuruki,
Сейчас переписываю игру в классы и возникла новая проблема с реализацией стрельбы. Решил прибегнуть к Вашему методу (до этого реализовывал интервал проще, но топорнее, через n-ое количество фреймов, теперь делаю по уму). Так вот, если выделить добавление пуль как отдельный класс, то выстрел работает единожды. Я разобрался, что дело в переменной shoot. Если отбросить лишнее, выглядит класс так:

Код:
class Zig_game.Bul extends MovieClip {
	var shoot:Boolean;
	var shootID:Number;
	var depth:Number;
             // Конструктор
	function Bul() {
		shoot = true;
		depth = _root.getNextHighestDepth();
		Key.addListener(this);
		this.onKeyDown = function() {
			if (Key.getCode() == Key.SPACE && shoot) {
				trace(shoot);  // выдаёт true
				shoot = false;
				trace(shoot);  // выдаёт false
				shootID = setInterval(enableShoot, 1000);
				depth++;
			}
		};
	}
	function enableShoot():Void {
		shoot = true;
		trace(shoot); // выдаёт undefined
		clearInterval(shootID);
	}
}
В самом проекте просто создаю экземпляр класса.
Код:
var bul:Bul = new Bul();
Так вот вопрос, почему в последнем случае переменная shoot трэйсится как неопределённая? Мы же в пределах одного класса работаем! Какие ей пути надо прописывать? Или, может, через get её как-то передавать надо?
Заранее спасибо за помощь. Я классы только начал осваивать, многое непонятно, если конкретно пошлёте читать что-то по теме - буду только рад))


Последний раз редактировалось Korsar Nik; 07.06.2008 в 00:27. Причина: Забыл кусок кода