![]() |
Незовисимое поведение двух МувиКлипов
Вложений: 1
Столкнулся с такой проблемой: по нажатии ПРОБЕЛА игрок стреляет. Направление определятся положением носа. Все бы ничего, стреляет правильно, НО если я зажму пробел, и уменьшу интервал до определенной степени, ТО во врема поворота коробля меняется направление самой пули...
Я так понял, так как проблема возникает при зажатом пробеле, то начинайте смотреть с 33 строчки, там где: if (Key.isDown(Key.SPACE)) попробуйте написать напрмиер fire+200 а не fire+900, зажать пробел, и начать крутится на одном месте Помогите плз =) Я б мог сделать две ветки, чтоб одна через 1 сек пускалась, второя через 1,5 но это не оптимально =) ПС Весь код находится в клипе functions |
Если во время поворота меняется направление пули - то вы не фиксируете ее направление во время выстрела. Во время выстрела пуля должна "запомнить" свое направление (направление пушки) и далее двигаться по этой траектории, не обращаясь к пушке.
|
Во превых, пишите в кадре а не в клипах!
Проблема заключается в том, что созданная пуля в этой же функции получает координаты куда лететь и в этой же функции она у вас летит и в этой же функции она же обнавляет координаты относительно поворота корабля. Решение проблемы: Вынесите движение пули в отдельную функцию. Код AS1/AS2:
|
Не работает. Анологичный код. Результат тот же самый. Что я упустил?
Код AS1/AS2:
Более того, _root.attachMovie у меня вообще не обладает ни каким эффектом |
Цитата:
Что такое bullets и как она связана с дублированными клипами? следуя вашему коду, bullets появилась ни откуда. почему дублированным клипам не даете ссылку типа того: var bullets = duplicateMovieClip(_root.bullet, "bullet"+nextBullet,nextBulle+9999); в таком случае в переменной bullets будет храниться ссылка на копию клипа и все должно работать. вместо Код AS1/AS2:
Код AS1/AS2:
вместо Код AS1/AS2:
Код AS1/AS2:
Цитата:
|
NoCD, маленькое уточнение: обработчик событий или нет - это не причем.
В первом случае просто происходит однократный вызов функции update_p(), никакого приравнивания не происходит. Во втором случае все верно - на событие назначается функция по объектной ссылке с помощью имени функции. |
Цитата:
|
Хм...понятно...Я просто не особо дружу с ООП, так как раньше программил на процедурных языках.
bullets сдесь-это массив пуль. bullets.push(nextBullet) ; тоесть меняя параметры _x и _y этого массива мы меняем координаты. Само движение проходит в этом цикле: Код AS1/AS2:
|
Цитата:
Цитата:
Похоже вы не очень в АС2 разбираетесь. Как массив bullets вдруг приобрел свойства dx1 и dy2 ? К тому же вот эта строка меня вводит в ступор: bullet =_root["bullet"+bullets[i]]; если имя пули хранится в массиве, то зачем вы таким образом восстанавливаете ее имя? не мучайте себя массивом с пулями, почему бы просто не восстановить имя клипа вместо bullet =_root["bullet"+bullets[i]]; сделать так: bullet =_root["bullet"+i]; создавайте пули под именем name = "bullet"+i; и присваивайте его аттаченому клипу. Таким же образом в цикле восстанавливайте имя. |
Я вообще книгу AS 2.0 не открывал, обучался методом тыка на какомто исходнике =))
Поэтому для меня это пока не переваремая куча информации... =) Посоветуйте учебник...И вообще, что лучше, АС 2 или АС 3, с точки зрения программинга, читабельности, и "граблей"? |
| Часовой пояс GMT +4, время: 19:46. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.