![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: May 2006
Сообщений: 36
|
Здравствуйте.
Создавая игру, столкнулся со следующей проблемой. Отбросив всё лишнее, получается такой код: enemyCounter = 0;
enbulCounter = 0;
function enbulMove() {
enbulCounter++;
_root.attachMovie("enbul", "enbul"+enbulCounter, _root.getNextHighestDepth(), {_x:_root["enemysmall"+enemyCounter]._x, _y:_root["enemysmall"+enemyCounter]._y+40});
_root["enbul"+enbulCounter].onEnterFrame = function() {
this._y+=5;
}
}
function enemyAppear() {
enemyCounter++;
// начальная позиция врага
var x1 = Math.round(220*Math.random())+210;
var y1 = Math.round(150*Math.random())+20;
var flagpos = 2*Math.round(Math.random())-1;
// аттачим врага
_root.attachMovie("enemysmall", "enemysmall"+enemyCounter, _root.getNextHighestDepth(), {_x:x1, _y:y1});
setInterval(enbulMove, 800);
// движение врага
_root["enemysmall"+enemyCounter].onEnterFrame = function() {
this._x += flagpos;
if (this._x>600) {
flagpos = -flagpos;
}
if (this._x<40) {
flagpos = -flagpos;
}
};
}
setInterval(enemyAppear, 2000);
C интервалом 2 секунды на сцену аттачатся и начинают двигаться враги. В то же время с интервалом 0,8 секунды к этим врагам аттачатся пули, двигающиеся вниз. Так вот, проблема в том, что с появлением нового врага предыдущий перестаёт стрелять, пули аттачатся только к новому. А надо, чтобы каждый враг стрелял своими пулями со своим интервалом, независимо от других врагов. Подозреваю, что нужно как-то перебирать enemyCounter в координатах пули. Но вот как именно - не могу додуматься. А может быть в чём-то другом загвоздка. Помогите, пожалуйста, разобраться. |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
enemyCounter = 0;
enbulCounter = 0;
function enbulMove(target:MovieClip) {
enbulCounter++;
_root.attachMovie("enbul", "enbul"+enbulCounter, _root.getNextHighestDepth(), {_x:target._x, _y:target._y+40});
_root["enbul"+enbulCounter].onEnterFrame = function() {
this._y+=5;
}
}
function enemyAppear() {
enemyCounter++;
// начальная позиция врага
var x1 = Math.round(220*Math.random())+210;
var y1 = Math.round(150*Math.random())+20;
var flagpos = 2*Math.round(Math.random())-1;
// аттачим врага
_root.attachMovie("enemysmall", "enemysmall"+enemyCounter, _root.getNextHighestDepth(), {_x:x1, _y:y1});
setInterval(enbulMove, 800, _root["enemysmall"+enemyCounter]);
// движение врага
_root["enemysmall"+enemyCounter].onEnterFrame = function() {
this._x += flagpos;
if (this._x>600) {
flagpos = -flagpos;
}
if (this._x<40) {
flagpos = -flagpos;
}
};
}
setInterval(enemyAppear, 2000);
|
|
|||||
|
Регистрация: May 2006
Сообщений: 36
|
Ух ты, заработало, спасибо.
А почему лучше распределять по методам и использовать классы? Удобнее редактировать код или оптимизированнее получается? Или возможностей больше? |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
Оптимизированнее, всмысле быстродейственнее? Вряд ли.
А вот все остальное - да. |
|
|||||
|
Banned
Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
|
Возможностей может и не больше но удобней в тысячи раз.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|