我有一个对象,我想拖入as3,但因为它的对象而不是movieClip或Sprite我无法拖动它。有谁知道这是为什么以及如何解决它?我试图把它作为精灵投射,但它不起作用。
var order:Sprite = e.currentTarget as Sprite;
order.startDrag();
所以e.currentTarget给了我[object Order]
,我把它作为精灵投射。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
您已经回答了自己的问题。要使用startDrag,您的对象必须至少是一个Sprite。如果Order类没有扩展Sprite,那么将事件currentTarget作为Sprite强制转换将无法实现。
您可以实施自己的解决方案,这种方式可能更容易调试......
package
{
import flash.display.MovieClip;
import flash.events.*;
public class Order extends MovieClip
{
public function Order()
{
this.addEventListener( MouseEvent.MOUSE_DOWN , mouseDownHandler );
if( stage != null )
stage.addEventListener( MouseEvent.MOUSE_DOWN , mouseDownHandler );
}
private function mouseDownHandler ( event:MouseEvent ):void
{
if( stage != null )
stage.addEventListener( MouseEvent.MOUSE_MOVE , mouseMoveHandler );
}
private function mouseMoveHandler ( event:MouseEvent ):void
{
this.x = mouseX;
this.y = mouseY;
}
private function mouseUpHandler ( event:MouseEvent ):void
{
stage.removeEventListener( MouseEvent.MOUSE_MOVE , mouseMoveHandler );
}
}
}