这将是一个简单的时钟。自从我在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);
}
这将是一个简单的时钟。自从我在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);
}
Adobe公布的ActionScript 2.0 Migration那天帮助我大大地回来了。
关系到你的代码的一些细节:
_rotation
现在是rotation
,并_root
现在是root
。root
不是全球,它是显示对象的属性,它是null
如果显示对象不在显示列表中。duplicateMovieClip
不存在了。您应该将符号导出到一个类,并使用new
operator和addChild()
创建一个实例,并将其添加到显示器,例如:在代码中创建
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];
这应该让你开始。
感谢帮助这里和其他地方,这对我来说是什么在起作用:
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);
}
我做没有动手,但点更改小时分秒色彩的时钟。谢谢大家谁帮助
请发布您的试用版,以便我们可以讨论您的代码产生的错误 –
像乔说的那样...显示你已经尝试过的AS3,我们将帮助你解决这个问题。我现在离AS2太远了,甚至还记得它。该代码让我头痛。这是什么'_root [ “点” +一] ._旋转= A * 6;'做什么呢?你如何放置10个点来表示60分钟?无论如何查找如何绘制一个圆圈('sprite'&'.graphics')作为变量,然后也如何将一个变量的“实例”添加到“clockface”容器MC ... –
a * 6是因为60分钟= 360度,所以每分钟是6度。我假设'a'只是一个像i这样的迭代器变量。 – Stray