Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   нужна помощь с функцией attachMovie() (http://www.flasher.ru/forum/showthread.php?t=202552)

OlegafoN 23.07.2013 02:08

нужна помощь с функцией attachMovie()
 
Доброго времени суток. У меня проблема.Вот уже 3-4 дня лазию по интернетам, в поисках ответа, нашел ваш форум. Я делаю платформер. Нужно сделать так, чтобы когда самолет пролетал над персонажем, он выпускал снаряд. Самолет сделал, снаряд сделал, а сам процесс ну никак. Пробовал через функцию duplicateMovieClip(), понял что она мне не подходит, перешел к attachMovie().
Сам грамотно код написать не могу, т.к. только начал постигать AS2 но думаю, нужно что-то типа этого
Код AS1/AS2:
Код AS1/AS2:

if (_root.plane1._x==_root.char._x) {
        _root.attachmovie("bullet", "mc"+i, _root.getNextHighestDepth());
        _root["mc"+i]._x = _root.plane1._x;
        _root["mc"+i]._y = _root.plane1._y;
        i++;
}

куда лучше разместить этот код, в главный фрейм или в сам самолет? исправьте пожалуйста.
И еще одно, сам снаряд должен подчиняться гравитации, поэтому можно ли задать ["mc"+i] свой скрипт? Заранее благодарен.

mooncar 23.07.2013 10:33

1. attachmovie attachMovie
2. Не забывайте оформлять код тегами.
На самом деле лучше выложите исходник (вложите в сообщение), информации недостаточно, мало кто сможет вам помочь.

Tails 23.07.2013 11:25

Не нужно использовать равенство координат для запуска снаряда. Шанс что координаты вашего самолёта и персонажа совпадут - почти никакой. Используйте относительный диапазон. Если персонаж по оси x ближе к самолёту чем на 20px - выпускаете снаряд.

OlegafoN 23.07.2013 15:11

спасибо, я понял что Вы имеете ввиду, но как это должно выглядеть в самом коде? моего небольшого опыта на это не хватает)

Tails 23.07.2013 15:56

Код AS1/AS2:

// Находим расстояние между игроком и самолётом по оси x
var dx:Number = Math.abs(_plauer._x - _airship._x);
if(dx < 20){
    fire();
}

Где fire() - функция скидывания бомбы с самолёта.

OlegafoN 23.07.2013 17:06

Вложений: 1
не получилось, решил выложить исходник(упрощенный), как посоветовал админ :)

Tails 23.07.2013 17:34

Поместив код просто в кадр, он у вас выполнится только 1 раз, когда этот фильм перейдёт на этот кадр. То-есть, код в кадре выполняется в начале 1 раз, поэтому квадрат не загорается когда самолёт пролетает. Что-бы код выполнялся постоянно на протяжении всего фильма, он должен быть помещён в специальную функцию, вызывающуюся например - каждый кадр:
Код AS1/AS2:

onEnterFrame = enterFrameHandler;
 
function enterFrameHandler(){
        // Находим расстояние между игроком и самолётом по оси x
        var dx:Number = Math.abs(_root.char._x-_root.mob._x);
        if (dx<40) {
                ind.gotoAndStop(2);
        }else{
                ind.gotoAndStop(1);
        }
}


OlegafoN 23.07.2013 17:45

преогромнейшее спасибо, все получилось)


Часовой пояс GMT +4, время: 04:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.