我正在使用 AS2,并且我有一个人可以动态构建的火车。用户单击舞台上的对象并创建副本。当用户单击并将该副本拖动到另一个对象中时,它会捕捉到目标对象的右侧,现在创建或添加数组。所以用户基本上可以用多少辆汽车(如果你愿意,也可以用孩子)来建造一列火车。
我添加的一项功能是,当用户单击并释放父项时,整个火车的坐标没有变化,_x
整个_y
火车将知道排队并指向新的方向。因此,如果他们都排成一列并指向 3 点钟位置,并且用户单击父级,则父级将指向 6 点钟位置,子级将全部排成 12 点钟位置并且所有指向到六人。如果他的用户继续点击整个火车将继续旋转。
这是我正在使用的代码(希望它足够了):
function rotate(_index,_angle):Void
{
for(var _i in _linkArray[_index])
{
var _mcy:Number = this[_linkArray[_index][_i]]._y;
var _mcx:Number = this[_linkArray[_index][_i]]._x;
var _degree:Number = Math.atan2(_mcy,_mcx)*(180/Math.PI) + _angle;
/* if not the first element line up and rotate */
if(_i != 0)
{
this[_linkArra[_index][_i]._rotation += _degree;
}
}
}
希望有足够的信息。
编辑
我想尝试澄清我想要实现的目标。我没有例子,但为了更好地解释。库中有一个名为“railcar”的影片剪辑。当 SWF 启动时,“railcar”被附加到舞台上,该对象现在将成为创建无限数量副本的主对象。此处的最终目标是用户将使用这些副本来构建训练辅助工具。因此,如果用户想要开始构建该火车,他们将复制一个并将其拖放到另一个对象的顶部,这两个对象现在链接在一起。用户可以这样做并构建他们想要的火车。
建造火车时,所有车厢将堆叠在每个父对象的右侧,如下所示:(箭头表示方向,每个 o 表示火车的单个车厢)
ooo->
当用户单击第一节车厢时,整个火车应该旋转以指向另一个方向,这是一个示例:
^
o
o
o
当再次点击前车时,它将再次旋转:
<-oooo
因此,如果您有一列全部排好并指向 3 点钟位置的火车,并且您希望它指向 9 点钟位置,您将单击两次前车(因为每次旋转都是 90 度)并且整列火车将朝那个方向旋转,将指向前车。
我希望我有一个例子,但我没有,所以希望这会有所帮助:)