2016-02-01 22 views
-3

这将是一个简单的时钟。自从我在21世纪初学习Flash以来,我一直在使用AS2。是时候继续前进了。谁能帮我从AS2更改此代码AS3

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

请发布您的试用版,以便我们可以讨论您的代码产生的错误 –

+0

像乔说的那样...显示你已经尝试过的AS3,我们将帮助你解决这个问题。我现在离AS2太远了,甚至还记得它。该代码让我头痛。这是什么'_root [ “点” +一] ._旋转= A * 6;'做什么呢?你如何放置10个点来表示60分钟?无论如何查找如何绘制一个圆圈('sprite'&'.graphics')作为变量,然后也如何将一个变量的“实例”添加到“clockface”容器MC ... –

+1

a * 6是因为60分钟= 360度,所以每分钟是6度。我假设'a'只是一个像i这样的迭代器变量。 – Stray

回答

2

Adob​​e公布的ActionScript 2.0 Migration那天帮助我大大地回来了。

关系到你的代码的一些细节:

  • 属性不与下划线前缀,前_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]; 

这应该让你开始。

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); 
} 

我做没有动手,但点更改小时分秒色彩的时钟。谢谢大家谁帮助