怎么可以拖动canvas,而里面的控件则不被拖动

suterfo 2008-11-22 11:08:08
要实现拖动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>
...全文
602 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
seyason 2008-11-24
  • 打赏
  • 举报
回复
你的drag事件被canvas里面的控件捕捉到了,所以都能拖动,只要把 evt.target.startDrag(); 改成evt.currentTarget.startDrag(); evt.target.stopDrag(); 改成evt.currentTarget.stopDrag(); 就可以了。哈哈
suterfo 2008-11-24
  • 打赏
  • 举报
回复
太好啦.就是你的答案帮我解决了难题..
flyingwalter 2008-11-23
  • 打赏
  • 举报
回复
感觉楼主的要求比较奇怪,不知道楼主在拖动过程中想达到什么效果?
个人觉得
1. 需要在拖动时创建另外一个Canvas,拖动初始和myCanvas位置重叠,拖动中的效果都可以在这里处理显示,比如做透明以显示Panel等内部组件。
拖动结束则去掉新建的Canvas,重新定位显示myCanvas.
2. 如果不想另外创建一个Canvas,估计只能一边拖动myCanvas,一边根据拖动位置重新调整内部各组件的显示位置,使Panel等看起来像是没有动过。


suterfo 2008-11-23
  • 打赏
  • 举报
回复
噢.我要实现的效果就是使canvas可以浮动于web页面中.类似于QQ视频时可使窗口浮动,可以随意拉到方便的位置.当然,canvas 中的控件要求不能被鼠标拖拖动.

所以,flyingwalter的第一点不适合,第二点正是我需要的.但是根据第二点的说法.那代码应该怎么写啊.

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧