要实现拖动canvas,而里面的控件则不被拖动,下面是我写的代码,不能完全实现要求.如果拖动canvas中的panel,会使控件变型了, 但是拖动canvas中的button则可以.而我要实现的功能就是:可以拖动canvas,但canvas 里的各控件则不能被拖动..这问题已经拖了很长时间,,还是不会做..各位帮我看看!!!
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.managers.DragManager;
import mx.managers.PopUpManager;
import mx.controls.Alert;
private var downXY:Point=new Point();
private var upXY:Point=new Point();
public function dragclick(evt:MouseEvent):void
{
myCanvas.addEventListener(MouseEvent.MOUSE_UP,MouseEventFunc);
myCanvas.addEventListener(MouseEvent.MOUSE_DOWN,MouseEventFunc);
}
public function MouseEventFunc(evt:MouseEvent):void {
switch (evt.type) {
case "mouseDown" :
downXY=new Point(mouseX,mouseY);
evt.target.startDrag();
break;
case "mouseUp" :
upXY=new Point(mouseX,mouseY);
evt.target.stopDrag();
break;
default:
break;
}
}
]]>
</mx:Script>
<mx:Canvas id="myCanvas" width="270" height="467" x="58" y="26" click="dragclick(event)"
useHandCursor="true" buttonMode="true">
<mx:Panel x="3.5" y="0" width="250" height="200" layout="absolute">
</mx:Panel>
<mx:Panel x="0" y="208" width="250" height="200" layout="absolute">
</mx:Panel>
<mx:Button x="102.5" y="435" label="Button"/>
</mx:Canvas>
</mx:Application>
你的drag事件被canvas里面的控件捕捉到了,所以都能拖动,只要把 evt.target.startDrag(); 改成evt.currentTarget.startDrag(); evt.target.stopDrag(); 改成evt.currentTarget.stopDrag(); 就可以了。哈哈