效果演示,鼠標左鍵按住兩端移動:
進入論壇參與討論: http://www.missyuan.com/viewthread.php?tid=419023
演示:
坐標中的兩點可以確定一條直線,直線與線段不同,線段有長度,而直線是沒有長度的。通過兩點可以確定一條直線,通過角度和一個定點也能確定一條直線。
直線與X軸正半軸所成的角稱直線的傾斜角,當傾斜角不等于90度時,傾斜角的正切稱為直線的斜率。圖:
其中角a就是直線的傾斜角,而斜率就是直角三角中對邊BC與鄰邊AB的比值,即正切值。正切值通過Math類的tan()方法可以得到。
給定A點和C點的坐標,可求得角a的角度值。
求角a的正切值的算法:
(C.y - A.y) / (C.x - A.x); |
下面的代碼求直線的斜率:
(C.x == A.x)?Infinity:(C.y - A.y) / (C.x - A.x); |
代碼先判斷兩點的橫坐標是否相等,如果相等,說明直線垂直于x軸,這時不存在斜率,所以給斜率一定特殊值Infinity。
例:
1、新建Flash文檔,取名存盤。
2、創建影片剪輯,圖層1用橢圓工具繪制一個圓,填充色和大小根據需要定。插入圖層2, as層,輸入代碼:
//注冊鼠標按下事件偵聽器 this.addEventListener(MouseEvent.MOUSE_DOWN,startDragFunc); //注冊鼠標釋放事件偵聽器 this.addEventListener(MouseEvent.MOUSE_UP,stopDragFunc); //定義接收按下事件的函數 function startDragFunc(e:MouseEvent); { //開始拖動 e.target.startDrag(); //更新顯示 e.updateAfterEvent() ; } //定義接收釋放事件的函數 function stopDragFunc(e:MouseEvent); { //停止拖動 e.target.stopDrag() } |
3、返回場景1,在圖層1的第一幀拖入兩個影片剪輯,在屬性面板中輸入剪輯的名字,p1 、p2。