Просмотр полной версии : Не дублируется клип выстрела в игре.
boris1029
23.01.2010, 18:19
У меня есть выстрел bullet. Если его не дублировать, то при воспроизведении его в тот момент, когда он УЖЕ запущен тот который запущен удаляется, а тот который при нажатии должен начаться начинается. Я дублировал этот клип, и теперь, по идее, он должен запускаться любое количество раз дублируясь.
Я применил вот этот код:
bullet._visible = false;
Key.addListener(this);
onKeyDown = function () {
if (Key.isDown(Key.SPACE)) {
d = bullet.duplicateMovieClip("p" + i, i);
d._x = bullet._x;
d._y = bullet._y;
d = true;
}
};
Так вот, он не дублируется. Поправьте код пожалуйста.
Код рабочий. Проверьте в новом проекте.
Единственное, что вызывает недоумение, вот эта строка:
d = true ;
Тут вы приравниваете объект типа MovieClip булевому значению. Это как понимать?
Понятно, что если мувик существует, он тру, компилятор это переварит, но смысла это не несет.
Можно так:
d.testvar = true ;
И вот эти строки избыточны, так как дубль всегда появляется в тех же координатах, что и оригинал, если не принять спец. мер:
d._x = bullet._x ;
d._y = bullet._y ;
По существу. Если ваша проблема состоит в том, что удаляется предыдущий дубль, то у вас просто дубли возникают на одной и той же глубине, вам надо делать i возрастающей от выстрела к выстрелу.
bullet._visible = false ;
Key.addListener(this);
var i:Number = 0;
onKeyDown = function () {
if (Key.isDown(Key.SPACE)) {
i++;
d = bullet.duplicateMovieClip('p' + i, i);
}
};
Добавлено через 22 минуты
Вот вам решение:
Вам надо ввести условие. На последнем кадре анимированного мувика запишите.
stop();
this._visible = false;
_parent.doAllowShot();
И основной код будет таким:
bullet._visible = false ;
bullet.stop(); //оригинал нужно остановить, чтобы он хоть невидим, но не проигрался также
var allowShot:Boolean = true ;
var i:Number = 0;
Key.addListener(this);
onKeyDown = function () {
if (Key.isDown(Key.SPACE) && allowShot) {
allowShot = false ;
i++;
d = bullet.duplicateMovieClip("p" + i, i);
}
};
function doAllowShot () {
allowShot = true ;
}
Вообще лучше это организовать не дублированием, а аттачем из библиотеки, чтобы не загромождать сцену и не писать лишнего кода остановки оригинала.
boris1029
23.01.2010, 20:22
спасибо.:)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.