我需要制作一个可拖动的项目(可拖动?)抱歉,如果我的术语不对!
我有一个类,我将存储变量并进行计算:
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(假);不起作用(Loader不可拖动)和event.target.parent.startDrag(false);整个舞台变得拖拉不起作用!救命!是因为只有Loader被添加到舞台上吗?
答案 0 :(得分:0)
确定。我知道它只有几分钟,但我找到了答案。把它写在这里清除了我的脑袋。这对我有用,以防它帮助其他人:
首先,我将Loader图像作为子项添加到类中:
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
}
瞧瞧!它奏效了!