0

我需要使项目可拖动(可拖动?)对不起,如果我的术语不正确!

我有一堂课,我将在其中存储变量并进行计算:

package Classes
{
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;

    public class PrintItem extends MovieClip
    {     
        public var imageLoader:Loader;

        public function PrintItem()
        {

        }

        public function loadImage(url:String):void
        {
            imageLoader = new Loader();
            imageLoader.load(new URLRequest(url));
        }
    }
} 

我创建了一个新的类实例,在 loadImage 中传递了一个 URL,然后像这样将它添加到画布中:

var myItem:PrintItem = new PrintItem();
myItem.loadImage("pic.jpg");
this.addChild(myItem.imageLoader);
myItem.imageLoader.x = 50;
myItem.imageLoader.y = 50;
myItem.imageLoader.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
myItem.imageLoader.addEventListener(MouseEvent.MOUSE_UP, dropIt);

但我被困住了。我需要使这个项目可拖动并编写 pickUp 和 dropIt 函数。event.target.startDrag(false); 不起作用(Loader 不可拖动)和 event.target.parent.startDrag(false); 不起作用,因为整个舞台变得可拖动!帮助!是因为舞台上只添加了Loader吗?

4

1 回答 1

0

好的。我知道只有几分钟,但我找到了答案。把它写在这里让我头脑清醒。如果它可以帮助其他人,这对我有用:

首先,我将加载器图像作为孩子添加到类中,如下所示:

public function loadImage(url:String):void
{
    imageLoader = new Loader();
    imageLoader.load(new URLRequest(url));
    this.addChild(imageLoader); // IMPORTANT!
    this.mouseChildren = false;
    this.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
    this.addEventListener(MouseEvent.MOUSE_UP, dropIt);
}

然后我只需要将类添加到舞台,而不是加载器:

this.addChild(myItem);

回到课堂上,我添加了这个:

public function pickUp(event:MouseEvent):void
{
  trace("Pickup");
  this.startDrag(false);
}
public function dropIt(event:MouseEvent):void
{
  this.stopDrag();
  trace("X = " + event.target.x + " Y = " + event.target.y); // Just to help me
}

瞧!有效!

于 2010-08-11T16:51:40.120 回答