Переклад коду з 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 (); ...

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

  • createEmptyMovieClip() стає new MovieClip ();

  • Команди графічного малювання в AS3 тепер вкладені в об'єкт graphics Sprites.

Схоже, вам доведеться трохи прокопатися в AS3 для цього. Це не дуже прямий біт коду для перетворення.

2
додано