Actionscript 2'den ActionScript 3'e çeviri kodu

Bir arkadaşımdan aldığım bu küçük kod parçam var ama onu AS3.0'a çevirmeyi başaramıyorum. Ne değiştiğim önemli değil, derleyici hataları almaya devam ediyorum. Bu, orijinal kod parçası ve gerçekten ona bir göz atmayı takdir ediyorum.

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
Şimdiye kadar oluşturduğunuz Actionscript 3 kodunu yayınlamanız da yardımcı olacaktır.
katma yazar jedd.ahyoung, kaynak
Aldığınız belirli derleyici hatalarını yayınlarsanız yardımcı olur.
katma yazar sean, kaynak

1 cevap

Burada birçok sorun var. Bazıları, başkalarının yeni yöntemler gerektirdiği sözdizimseldir.

Örneğin:

  • _root , AS3'te mevcut değil. AS3'te şöyle olur: MovieClip (root)

  • attachMovie AS3'te mevcut değildir, var node = new laser() gibi bir yapıcı çağrısı ile değiştirmeniz gerekecektir; ...

  • onPress ve onRelease geri çağrıları AS3'te desteklenmemektedir. addEventListener w/ MouseEvent sınıfını kullanmaya ihtiyacınız olacak. onEnterFrame ile aynı ( Event.ENTER_FRAME )

  • createEmptyMovieClip() , yeni MovieClip ();

  • haline gelir
  • AS3'teki grafik çizim komutları artık Sprite’lerin graphics nesnesine yerleştirilmiştir.

Bunun için AS3'e birazcık girmeniz gerekecek gibi görünüyor. Dönüştürmek için çok basit bir kod değil.

2
katma