Flash鼠標事件控制實例繞定點旋轉技巧_第1頁
Flash鼠標事件控制實例繞定點旋轉技巧_第2頁
Flash鼠標事件控制實例繞定點旋轉技巧_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Flash鼠標事件控制實例繞定點旋轉技巧/摘要:在flash中通過在時間軸上插入關鍵幀和創建補間動畫可以輕松實現實例的旋轉功能,通過編輯實例的中點還可進一步實現實例繞定點旋轉,進而可以方便的引用到其它軟件中。

關鍵詞:關鍵幀;切點;中心點

在flashplayer中為增強交互性,可以嘗試利用鼠標事件來控制實例旋轉的角度,但這并不輕松,筆者發現在鼠標事件中設置實例的_rotation屬性時,旋轉的中心并不是預先編輯的實例中心,而是按照flash默認的元件的基準點(左上角)來旋轉,所以在確定旋轉角度的同時還應對實例的位置(_x與_y屬性)進行調整。以下通過一個簡例來說明這一技巧。

目標:通過鼠標移動實現切線繞切點任意旋轉,達到切線隨鼠標移動而旋轉的視覺效果。

步驟:1)新建文件“qiexian”,設置背景為藍色,在圖層“背景”上插入關鍵幀,添加坐標系、曲線、切點等背景元件,并在幀動作中加入代碼stop();如圖1。

圖1

2)增加圖層,命名為“轉動”,插入關鍵幀,添加影片剪輯元件“qiexian”,并命名實例名為“qiexian”;如圖2。

圖2

3)提取切點M0的屬性信息,如圖3,提取切線屬性信息,如圖4;

圖3

圖4

4)為影片實例“qiexian”動作填寫代碼,保存并發布文件。

代碼釋義:

onClipEvent(mouseMove){

//鼠標事件

xx=_root._xmouse;yy=_root._ymouse;

//變量xx,yy分別記錄鼠標位置的橫坐標與縱坐標

if((xx-249.9)*(xx-249.9)+(yy-295.4)*(yy-295.4)<=52885.5){

//(249.9,295.4)為M0點的坐標,52885.5為M0D的長度的平方,用于設定鼠標的響應區域為以M0為圓心,以M0D為半徑的圓形區域。

if((xx>=161.7)&&(yy<=216.2)){

//(161.7,216.2)是A點的坐標,以A為坐標原點建立直角坐標系,分四個象限分別處理(如圖5),因為Math.atan()的返回值在

_Rotation的范圍為,各個象限表達式不統一。

setProperty(“/qiexian”,_rotation,(Math.atan((yy-216.2)/(xx-161.7))*57.2975));

//旋轉角度為鼠標位置相對于A點的傾角(如圖5),乘以57.2975將弧度轉化為角度。

setProperty(“/qiexian”,_x,161.7-(Math.cos(Math.atan((yy-216.2)/(xx-161.7))+0.73168)-Math.cos(0.73168))*118.541);

setProperty(“/qiexian”,_y,216.2-(Math.sin(Math.atan((yy-216.2)/(xx-161.7))+0.73168)-Math.sin(0.73168))*118.541);}//(如圖6)旋轉后切點的位置由M0移至M1,不能達到繞定點旋轉的視覺效果,須將直線平移,使M1與M0重合,其中0.73168為AM0的斜率,118.541為AM0長度。

elseif((xx<=161.7)&&(yy<=216.2)){

//第二象限

setProperty(“/qiexian”,_rotation,(-90-Math.atan((xx-161.7)/(yy-216.2))*57.2975));

setProperty(“/qiexian”,_x,161.7+(Math.cos(0.73168)-Math.sin(0.73168-Math.atan((xx-161.7)/(yy-216.2))))*118.541);

SetProperty(“/qiexian”,_y,216.2+(Math.sin(0.73168)+Math.cos

(0.73168-Math.atan((xx-161.7)/(yy-216.2))))*118.541);}

圖5

Elseif((xx<=161.7)&&(yy>=216.2)){

//第三象限

setProperty(“/qiexian”,_rotation,(180+Math.atan((yy-216.2)/(xx-161.7))*57.2975));

setProperty(“/qiexian”,_x,161.7+(Math.cos(Math.atan((yy-216.2)/(xx-161.7))+0.73168)+Math.cos(0.73168))*118.541);

setProperty(“/qiexian”,_y,216.2+(Math.sin(Math.atan((yy-216.2)/(xx-161.7))+0.73168)+Math.sin(0.73168))*118.541);}

elseif((xx>=161.7)&&(yy>=216.2)){

//第四象限

setProperty(“/qiexian”,_rotation,(90-Math.atan((xx-161.7)/(yy-216.2))*57.2975));

setProperty(“/qiexian”,_x,161.7+(Math.cos(0.73168)+Math.sin

(0.73168-Math.atan((xx-161.7)/(yy-216.2))))*118.541);

setProperty(“/qiexian”,_y,216.2-(Math.cos(0.73168-Math.atan((xx-161.7)/(yy-216.2)))-Math.sin(0.73168))*118.541);}}}

作品自評:代碼中將A點作為基準點劃分象限,確定旋轉角度、調整坐標,較為流暢地實現了目標。由于鼠標響應圓形區域的圓心與坐標系的原點不重合,造成鼠標響應區域的不對稱。如果將基準點選在M0點,而實際又是以A點作為旋轉中心點,造成區域討論更為復雜,難以實現任意旋轉。

參考文獻:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論