AS3 Movieclip Spawner - on startDrag movieclip出现在舞台上

时间:2014-01-15 17:21:10

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

基本理念。在我的拖放项目中,在舞台上,我有一堆珠宝(静态照片/动画片段),玩家可以在其中拖动小宝石,并将它们移动到中央窗口。我希望宝石影片剪辑 - 让我们称之为 jewel_mc ,它可以产生无限量的子剪辑,这些剪辑可以在舞台上移动。这里我需要一些帮助,从这里开始。 - 我是AS3新手。

调整功能 - 我需要的东西:所以当玩家从一堆jewels_mc点击“startdrag”时,鼠标光标上会出现一个小宝石,当玩家释放时,宝石会在最后一个位置掉落。玩家可以随心所欲地多次这样做,只要他们从堆叠珠宝堆栈开始拖拽。

你正在把一大堆珠宝推到盘子上!

非常感谢任何帮助,谢谢。 来自另一个可拖动的对象

 jewel_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickuplittlejewel_mc);
 littlejewel_mc.addEventListener(MouseEvent.MOUSE_UP, droplittlejewel_mc);

 function pickuplittlejewel_mc(event:MouseEvent):void {
 event.target.startDrag(true);
 }
 function droplittlejewel_mc(event:MouseEvent):void {
 event.target.stopDrag();
 }   

我猜到了上面这个剧本,我不确定我的结果有多接近。 谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道我是否理解你,但我试着向你解释:

想象一下,你的图书馆里有一个Jewel MovieClip,然后用这个代码你可以创建无限的珠宝,然后拖放它们:

import flash.display.Sprite;
import flash.events.MouseEvent;

this.addEventListener(MouseEvent.MOUSE_DOWN, createJewel);

//---Global variable
var _jewel:Sprite;

//---Create jewel
function createJewel(evt:MouseEvent){

    _jewel = new Jewel();

    _jewel.x = evt.stageX;
    _jewel.y = evt.stageY;

    addChild(_jewel);

    _jewel.startDrag(false);
    _jewel.addEventListener(MouseEvent.MOUSE_DOWN, dragJewel);
    stage.addEventListener(MouseEvent.MOUSE_UP, dropJewel);

}

//---Jewel start drag
function dragJewel(evt:MouseEvent){

    //---Avoid the event propagate to the Stage
    evt.stopPropagation();

    _jewel = evt.currentTarget as Sprite;

    _jewel.startDrag(false);

    stage.addEventListener(MouseEvent.MOUSE_UP, dropJewel);

}

//---Drop jewel
function dropJewel(evt:MouseEvent){

    stage.removeEventListener(MouseEvent.MOUSE_UP, dropJewel);

    _jewel.stopDrag();

}

这里有一个闪光灯:

example fla