Перевод кода из Actionscript 2 в Actionscript 3

#flash #actionscript-3 #actionscript-2 #translation

#flash #actionscript-3 #actionscript-2 #перевод

Вопрос:

У меня есть этот небольшой фрагмент кода, который я получил от друга, но мне не удается перевести его в режим работы AS3.0. Я продолжаю получать ошибки компилятора, независимо от того, что я меняю. Это оригинальный фрагмент кода, и я был бы очень признателен, если бы вы взглянули на него.

 laser_nodes = 2;
for (var x=1; x<=laser_nodes; x  ) {
    node = _root.attachMovie("laser", "laser_" x, x, {_x:Math.random()*460 20, _y:Math.random()*310 20});
    node.onPress = function() {
        startDrag(this);
    };
    node.onRelease = function() {
        stopDrag();
    };
}

_root.createEmptyMovieClip("ray", _root.getNextHighestDepth());

ray.onEnterFrame = function() {
    this.clear();
    this.lineStyle(3, 0xff0000);
    this.moveTo(_root.laser_1._x, _root.laser_1._y);
    for (x=2; x<=laser_nodes; x  ) {
        this.lineTo(_root["laser_" x]._x, _root["laser_" x]._y);
    }
    this.lineTo(_root.laser_1._x, _root.laser_1._y);
};
 

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

1. Было бы полезно, если бы вы опубликовали конкретные ошибки компилятора, которые вы получаете.

2. Также было бы полезно опубликовать созданный вами код Actionscript 3.

Ответ №1:

Здесь много проблем. Некоторые из них синтаксические, тогда как другие требуют новых методов.

например:

  • _root не существует в AS3. В AS3 это становится: MovieClip(root)
  • attachMovie недоступен в AS3, вам придется заменить его вызовом конструктора, например var node = new laser(); ...
  • onPress и onRelease обратные вызовы не поддерживаются в AS3. вам нужно изучить возможность использования addEventListener w / the MouseEvent class. То же самое с onEnterFrame ( Event.ENTER_FRAME )
  • createEmptyMovieClip() становится new MovieClip();
  • команды рисования графики в AS3 теперь вложены в graphics объект спрайтов.

Похоже, для этого вам нужно немного покопаться в AS3. Это не очень простой фрагмент кода для преобразования.