Flash 动作脚本可移动的点和线

Flash 动作脚本可移动的点和线,flash,actionscript-3,actionscript,instance,movieclip,Flash,Actionscript 3,Actionscript,Instance,Movieclip,我对动作脚本还很陌生,对于我正在制作的一个游戏,我有几个问题: 如何使MovieClip对象可以通过鼠标拖动? 如果我有两个MovieClip实例,是否可以在其中创建一个新的形状/MovieClip对象,该对象看起来像一条线,然后将连接起来? 我有函数检查“节点”电影剪辑实例是否与“线”电影剪辑实例冲突,现在这些都是不同的函数和条件,但是否可以检查它们是否都是真的? 谢谢你的帮助。说真的,任何帮助都是很好的。首先制作一个可拖动的MovieClip非常简单,你只需要做mc.startDrag;mc

我对动作脚本还很陌生,对于我正在制作的一个游戏,我有几个问题:

如何使MovieClip对象可以通过鼠标拖动? 如果我有两个MovieClip实例,是否可以在其中创建一个新的形状/MovieClip对象,该对象看起来像一条线,然后将连接起来? 我有函数检查“节点”电影剪辑实例是否与“线”电影剪辑实例冲突,现在这些都是不同的函数和条件,但是否可以检查它们是否都是真的?
谢谢你的帮助。说真的,任何帮助都是很好的。

首先制作一个可拖动的MovieClip非常简单,你只需要做mc.startDrag;mc.stopdag;要停止这场运动

这通常与鼠标按下和鼠标向上事件一起完成,例如:

mc.addEventListener(MouseEvent.MOUSE_DOWN, function (e:MouseEvent):void
{
    e.currentTarget.startDrag();
});

mc.addEventListener(MouseEvent.MOUSE_UP, function (e:MouseEvent):void
{
    e.currentTarget.stopDrag();
});
您还可以定义锁定中心或限制startDrag方法上拖动的矩形,基本上,如果锁定中心为真,则拖动时鼠标将粘在MovieClip的中心,矩形将限制拖动区域,例如画布

第二个问题

您可以在AS3中创建一个新的MC,如下var MC:MovieClip=new MovieClip; 然后用图形在MC中画线

一个更详细的例子:

var mc:MovieClip = new MovieClip();
mc.graphics.beginFill(0x000000);
mc.graphics.lineStyle(2,0x000000);

//start drawing the line
mc.graphics.moveTo(10,10);
mc.graphics.lineTo(10,100);
mc.graphics.endFill();

//Position your new movie clip
mc.x = 80;
mc.y = 60;
addChild(mc);
最后,我不确定您是如何实现碰撞检测的,但您可以为每个项目设置一个状态数组,并在发生碰撞时更改它们,然后您可以循环到该数组中检查所有状态是否为真…

1查看这些方法。然后可以在Sprite或其任何子类上调用

2是的,您可以使用任何精灵的对象绘制任意线条/形状


3对于碰撞检测多个对象,您必须单步通过每个对象。尝试使用for循环

是的,我确实知道如何使用图形对象,我想问的问题是如何使它从一个点移动到另一个点,如如何计算位置、角度、大小等…以及快速回答的thnx mc.graphics.moveTo10,10;mc.graphics.lineto10100;//我怎样才能使它,而不是数字,我将有两个电影剪辑对象的位置自动?你可以从其他电影剪辑的参考,最后说你想从中心。。。mc_container.graphics.moveTomc1.x+mc1.width/2,mc1.y+mc1.height/2 mc_container.graphics.lineTomc2.x+mc2.width/2,mc2.y+mc2.height/2这也不会自动完成。。。您可以在拖放电影剪辑时重新绘制,也可以在开始拖动时创建ENTER_FRAME侦听器,然后在该侦听器上重新绘制,只需在停止拖动时删除侦听器即可。。。