Простое перетаскивание в ActionScript 2.0

#flash #actionscript-2 #drag #throw

#flash #actionscript-2 #перетаскивание #бросать

Вопрос:

Я разработчик игры под названием «throw» (игра доступна только в виде бета-версии для бета-тестеров). Игра создана с использованием ActionScript 2.0 во Flash 8.

Мой вопрос в том, не мог бы кто-нибудь помочь мне с добавлением кода. Что я имею в виду? Я имею в виду, что если вы перетаскиваете видеоролик под названием «Ball», он просто следует за вашей мышью, пока вы его не уроните.

Довольно простой код:

 on(press) {
    if (_root.ThrowZone.hitTest(this)) {
        startDrag(this);
    }
}

on(release) {
    if (_root.ThrowZone.hitTest(this)) {
        stopDrag();
    }
}
  

У меня также есть настроенный простой код gravity, но я предпочитаю не показывать его, поскольку это не «то», что нужно.
Я хочу, чтобы он бросал «Мяч», когда вы выпускаете movieclip, я имею в виду, что он будет подниматься прямо с разными
скорость в зависимости от того, как быстро вы перемещали его перед выпуском, я также хочу, чтобы он медленно входил и выходил по мере загрузки.
Я попытался немного прикрыть свой код Gravity, изменив его и обратив вспять, изменив экстрасенсов, но тогда это будет
поднимайтесь тем же путем, неудивительно, как вы это бросаете.

Если вам действительно нужно протестировать игру, чтобы увидеть, как она работает, скажите мне в комментарии, и я разместлю ссылку на нее в теме.

Комментарии:

1. Вместо использования AS2, почему бы вам не использовать AS3? AS3 больше подходит для разработки игр, чем AS2

2. Поскольку у меня сейчас нет среды тестирования AS2, я могу только предложить, чтобы вы вместо перетаскивания выбрасывающего объекта перетащили прозрачный целевой объект и заставили выбрасывающий объект перемещаться к целевому объекту на каждом enterframe. Как только щелчок отпущен, используйте оставшееся расстояние между ними для вычисления конечной скорости.

Ответ №1:

Я бы поступил так. На вашей рабочей площадке (root):

 _global.$stage = this;
var isDragging = false;
var dragTarget = null;
$stage.onEnterFrame = function() {      
    if(isDragging){
         $stage.dragTarget._x = $stage._xmouse;
         $stage.dragTarget._y = $stage._ymouse;
    }       
}
  

Затем по мячу:

 on(press) {
   $stage.isDragging = true;
   $stage.dragTarget = this;
}

on(release) {
   $stage.isDragging = false;
}