将代码从Actionscript 2转换为Actionscript 3

时间:2011-10-27 15:52:48

标签: flash actionscript-3 actionscript-2 translation

我有一小段我从朋友那里得到的代码,但我无法将其翻译成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 个答案:

答案 0 :(得分:2)

这里有很多问题。有些是语法,有些则需要新的方法。

例如:

    AS3中不存在
  • _root。在AS3中,它变为:MovieClip(root)

  • attachMovie在AS3中不可用,您必须使用var node = new laser(); ...等构造函数调用替换它

  • AS3不支持
  • onPressonRelease回调。您需要查看使用addEventListener w / MouseEvent类。与onEnterFrameEvent.ENTER_FRAME

  • 相同
  • createEmptyMovieClip()变为new MovieClip();

  • AS3中的图形绘制命令现在嵌套在Sprites的graphics对象中。

好像你需要为此深入挖掘AS3。这不是一个非常直接的代码转换。