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

У меня есть эта небольшая часть кода, которую я получил от друга, но я не могу ее перевести в рабочий 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);
};
0
Это также поможет, если вы разместите код ActionScript 3, который вы создали до сих пор.
добавлено автор jedd.ahyoung, источник
Это поможет, если вы опубликуете конкретные ошибки компилятора, которые вы получаете.
добавлено автор sean, источник

1 ответы

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

например:

  • _root не существует в AS3. В AS3 он становится: MovieClip (root)

  • attachMovie недоступен в AS3, вам придется заменить его вызовом конструктора, например var node = new laser (); ...

  • В AS3 не поддерживаются обратные вызовы
  • onPress и onRelease . вам нужно будет изучить класс addEventListener с классом MouseEvent . То же самое с onEnterFrame ( Event.ENTER_FRAME )

  • createEmptyMovieClip() становится новым MovieClip ();

  • команды графического рисования в AS3 теперь вложены в объект <script> graphics объекта Sprites.

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

2
добавлено