2008/07/20 | 暑期AS3讲座第6讲 鼠标事件与鼠标拖拽
类别(Flash学习笔记) | 评论(0) | 阅读(1608) | 发表于 20:37

  鼠标事件中的坐标换算

var localPoint:Point = new Point( event.localX, event.localY );  //用局部坐标实例化一个位置类
var globalPoint:Point = event.target.localToGlobal( localPoint ); //坐标换算函数返回值一个位置类,保存的是换算后的全局位置。
  
  /* Displays:
  global x: 13.95
  global y: 13.45
  */
  trace( "global x: " + globalPoint.x );
  trace( "global y: " + globalPoint.y );
场景中的元件发生旋转操作后,坐标系就已经发生旋转。

对目标元件进行拖拽使用类似下面的方法:

event.target.startDrag(  );  event.target.stopDrag()

将当前对象的层深交换到最高层使用下面的代码:

setChildIndex( DisplayObject( event.target ), numChildren - 1 );

执行上面的代码以后,其余层深上的元件依次下降一层,类似于将当前对象插入到最顶层。

event.target.dropTarget  属性会自动的根据所处位置的不同,显示不同的内容(显示为null或指向拖放目标),cookBook中指出的dropTarget 不能自己刷新的问题在flash 9中已经不存在了。

执行下面的代码,沿着元件的x轴 y轴移动鼠标,看看坐标有什么变化,点击蓝色块元件,使之旋转,再沿坐标标移动鼠标,看看,是不是坐标系发生了旋转。

mc.addEventListener(MouseEvent.MOUSE_MOVE, onMV );
function onMV(evt:MouseEvent) {
 gtxt.text = "("+ mouseX + ","+ mouseY +")";
 ltxt.text = "("+ evt.localX + ","+ evt.localY +")";
}
mc.addEventListener(MouseEvent.CLICK, onMC );
function onMC(evt:MouseEvent) {
 mc.rotation += 45;
}

0

评论Comments