任何人都可以帮助我将此代码从AS2更改为AS3

时间:2016-02-01 05:33:49

标签: actionscript-3 actionscript-2

这将是一个简单的时钟。自从我在21世纪初学习Flash以来,我一直在使用AS2。是时候继续前进了。

for (a=1; a<60; a++) {
    duplicateMovieClip("dot0", "dot"+a, 10+a);
    _root["dot"+a]._rotation = a*6;
    _root["dot"+a].gotoAndStop(1);
}

2 个答案:

答案 0 :(得分:2)

Adob​​e发布的ActionScript 2.0 Migration在当天帮助了我。

与您的代码相关的一些细节:

  • 属性不以下划线为前缀,ex _rotation现在为rotation_root现为root
  • root不是全局的,它是显示对象的属性,如果显示对象不在显示列表中,则为null
  • duplicateMovieClip不再存在。您应该将符号导出到类中,然后使用new operatoraddChild()创建实例并将其添加到显示中,例如:

    var dot:Dot = new Dot();
    addChild(dot);
    
  • 在代码中创建的显示对象不会自动赋予name,并在添加到显示时分配给其父级的属性。您可以在其父级上设置name并使用getChildByName。例如:

    var dot:Dot = new Dot();
    dot.name = "dot" + i;
    addChild(dot);
    
    var n:int = 10;
    var dot10:Dot = getChildByName("dot" + n) as Dot;
    

但这有点麻烦,所以在大多数情况下,将显示对象存储在自己的数组中并通过索引引用它们更有意义:

    var dots:Array = [];

    var dot:Dot = new Dot();
    addChild(dot);
    dots.push(dot);

    var firstDot:Dot = dots[0];

这应该让你开始。

答案 1 :(得分:0)

感谢此处和其他地方的帮助,这对我有用:

var i:Number = 1;
var dots:Array = [];
for (i=0; i<60; i++) {

var dot:Dot = new Dot;

addChild(dot);
dots.push(dot);

dot.x=683;
dot.y=436;
dot.rotation = i*6;
dot.gotoAndStop(1);
}

时钟让我没有动手但是小点会在几分钟和几秒钟内改变颜色。谢谢所有帮助过的人

相关问题