拖放,删除和克隆 - Flash AS3

时间:2014-02-10 10:16:39

标签: actionscript-3 flash drag-and-drop

我是一名老师,试图制作一个简单的Flash AS3游戏,学生可以将a-z(动画片段)中的任何字母拖到舞台中间以创建单词。

我是Flash的业余爱好者,所以使用代码片段,我已经成功地允许用户拖放字母,但我真正想要的是用户能够拖放一封信离开原始字母movieclip到位,并根据需要多次克隆一个新的。

是否有人能够帮助我使用AS3我需要实现这一目标?非常感谢。

2 个答案:

答案 0 :(得分:1)

这是一个快速示例。 FLA | SWF

<强> CODE:

import flash.display.MovieClip;

for (var i=1; i<5; i++)
{
    this["object" + i].addEventListener(MouseEvent.MOUSE_DOWN, onStart);
    this["object" + i].addEventListener(MouseEvent.MOUSE_UP, onStop);
}    

var sx = 0,sy = 0;

function onStart(e)
{
    sx = e.currentTarget.x;
    sy = e.currentTarget.y;
    e.currentTarget.startDrag();
}

function onStop(e)
{
    if (e.target.dropTarget != null && 
    e.target.dropTarget.parent == dest)
    {
        var objectClass:Class = 
        getDefinitionByName(getQualifiedClassName(e.currentTarget)) as Class;
        var copy:MovieClip = new objectClass();
        this.addChild(copy);
        copy.x = e.currentTarget.x;
        copy.y = e.currentTarget.y;
    }

    e.currentTarget.x = sx;
    e.currentTarget.y = sy;
    e.currentTarget.stopDrag();
}

希望你能把它带到前面。变成对你的孩子有用的东西。

答案 1 :(得分:0)

首先,你可以使用一个名为“type”和“letter”的字母的属性来假设它是原始的还是副本以及它是哪个字母。

然后初始化一个空对象变量,以便在单击时使用

var draggingObj:Object;

然后你可以检查用户是否点击原始信件进行复制并移动或点击副本只是为了移动

if (Letter(clickedLetter).type == "original")
{
draggingObj = new Letter();
draggingObj.type = "copy";
draggingObj.letter = Letter(clickedLetter).letter;
}
else draggingObj = Letter(clickedLetter);

draggingObj.x = mousex;
draggingObj.y = mousey;

如果您无法在代码流中实现此代码流,则可以在此处编写自己的代码,以便我们为您提供正确的帮助