Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 从一个实例到另一个实例的行不工作操作脚本3.0_Flash_Actionscript 3_Graphics_Lines_Instances - Fatal编程技术网

Flash 从一个实例到另一个实例的行不工作操作脚本3.0

Flash 从一个实例到另一个实例的行不工作操作脚本3.0,flash,actionscript-3,graphics,lines,instances,Flash,Actionscript 3,Graphics,Lines,Instances,我试图创建可移动的实例,这些实例是可拖动的,并且有一条线连接它们,自动更新 问题是:原始行只是随机移动,不会随着实例mc1、mc2的拖动而更新。 以下是我到目前为止得到的代码: mc1.addEventListener(MouseEvent.MOUSE_DOWN, function (e:MouseEvent):void { e.currentTarget.startDrag(); }); mc1.addEventListener(MouseEvent.MOUSE_UP, funct

我试图创建可移动的实例,这些实例是可拖动的,并且有一条线连接它们,自动更新

问题是:原始行只是随机移动,不会随着实例mc1、mc2的拖动而更新。 以下是我到目前为止得到的代码:

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

mc1.addEventListener(MouseEvent.MOUSE_UP, function (e:MouseEvent):void
{
    e.currentTarget.stopDrag();
});
mc2.addEventListener(MouseEvent.MOUSE_DOWN, function (e:MouseEvent):void
{
    e.currentTarget.startDrag();
});

mc2.addEventListener(MouseEvent.MOUSE_UP, function (e:MouseEvent):void
{
    e.currentTarget.stopDrag();
});

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

//start drawing the line
mc.graphics.moveTo(mc1.x,mc1.y);
mc.graphics.lineTo(mc2.x,mc2.y);
mc.graphics.endFill();

//Position your new movie clip
addChild(mc);
谁能告诉我哪里弄错了


谢谢你的帮助

下面的块可能对您有所帮助

mc.graphics.clear();
//mc.graphics.beginFill(0x000000); //no need fills
mc.graphics.lineStyle(2,0);

//start drawing the line
mc.graphics.moveTo(mc1.x,mc1.y);
mc.graphics.lineTo(mc2.x,mc2.y);
//mc.graphics.endFill(); //no need to end it.

您需要做的是捕捉用户拖动MovieClip时鼠标的移动

首先创建一个isDraging变量var isDraging:Boolean=false;当鼠标按下时将其设置为true,当鼠标向上时将其设置为false

然后将MouseEvent.MOUSE\u移动事件侦听器添加到行时间线

addEventListener(MouseEvent.MOUSE_MOVE, function (e:MouseEvent):void
{
    if (isDragging) {
        drawConnectiveLine(mc1, mc2);
    }
    return;
});
DrawConnectionVeline方法将更新线向量形状,以移动到movieclips的{x,y}

function drawConnectiveLine(d:DisplayObject, d2:DisplayObject):void {
    mc.graphics.clear();
    mc.graphics.lineStyle(2,0);
    mc.graphics.moveTo(d.x,d.y);
    mc.graphics.lineTo(d2.x,d2.y);
}
对预先存在的脚本的修改:


那它会自动更新吗?我应该把你写的所有代码都放在你现有代码的修改下吗?因为每当我做这两件事的时候,我都会遇到很多问题。你能告诉我把什么代码放在哪里吗?现在我所有的问题都是访问未定义的属性mc。我只有一件东西,但代码是库对象mc和它在stage mc1、mc2上的两个实例。你知道为什么会这样吗?你有没有可能发布你制作的真实fla文件?更新后,包括名为mc的新MovieClip
var isDragging:Boolean = false;
var mc:MovieClip = new MovieClip();
mc.graphics.lineStyle(2,0);
mc.graphics.moveTo(mc1.x,mc1.y);
mc.graphics.lineTo(mc2.x,mc2.y);
addChild(mc);

mc1.addEventListener(MouseEvent.MOUSE_DOWN, function (e:MouseEvent):void
{
    isDragging = true;
    e.currentTarget.startDrag();
});

mc1.addEventListener(MouseEvent.MOUSE_UP, function (e:MouseEvent):void
{
    isDragging = false;
    e.currentTarget.stopDrag();
});

mc2.addEventListener(MouseEvent.MOUSE_DOWN, function (e:MouseEvent):void
{
    isDragging = true;
    e.currentTarget.startDrag();
});
mc2.addEventListener(MouseEvent.MOUSE_UP, function (e:MouseEvent):void
{
    isDragging = false;
    e.currentTarget.stopDrag();
});
addEventListener(MouseEvent.MOUSE_MOVE, function (e:MouseEvent):void
{
    if (isDragging) {
        mc.graphics.clear();
        mc.graphics.lineStyle(2,0);
        mc.graphics.moveTo(mc1.x,mc1.y);
        mc.graphics.lineTo(mc2.x,mc2.y);
    }
});