Flash MX課件中的拖動(dòng)

2022-06-12發(fā)布者:ylm大小: 下載:0

文件大小:

軟件介紹

1.無任何約束的拖動(dòng)
 
  (1)打開“插入”菜單的“新建元件”命令,在“創(chuàng)建新元件”對(duì)話框中,“名稱”框內(nèi)輸入“球”,“行為”選擇“影片剪接”。

  (2)畫一個(gè)圓,最好是讓圓心和影片剪接的中心對(duì)齊。

  (3)選擇主場景,按F11打開“庫”面板,將剛制作好的球拖動(dòng)至主場景中。

  (4)選擇主場景中的球,打開窗口下方的“屬性”面板,在名稱框內(nèi)輸入名稱ball。

  (5)右擊ball,選擇“動(dòng)作”命令,在代碼編輯框內(nèi)輸入:

  on(PRess)

  {

  startDrag("",true);//允許拖動(dòng)ball

  }

  on(release, releaSEOutside)

  {

  stopDrag();//釋放鼠標(biāo)時(shí),停止拖動(dòng)ball

  }

  (6)拖動(dòng)ball,我們將看到ball可以拖動(dòng)到場景中的任意位置,釋放鼠標(biāo)時(shí),ball將停止拖動(dòng)。

  2.約束某一矩形范圍內(nèi)的拖動(dòng)

  將以上代碼改為:

  on(press)
  3.沿某一路徑的拖動(dòng)

  在某些場合,如通過拖動(dòng)動(dòng)態(tài)生成數(shù)學(xué)函數(shù)圖像時(shí),因?yàn)楹瘮?shù)圖像都有一個(gè)函數(shù)式約束,決定了以上兩種方法都不可行。這種拖動(dòng)的關(guān)鍵在于要根據(jù)約束條件來決定被拖動(dòng)對(duì)象的位置。下面以動(dòng)態(tài)生成圓來說明此類拖動(dòng)問題的解決方法。
 
  (1)通過“插入”菜單制作一個(gè)名為“點(diǎn)”的電影剪接,畫一個(gè)小點(diǎn)表示該電影剪接,注意點(diǎn)的中心和電影剪接的中心點(diǎn)重合。

  (2)轉(zhuǎn)到主場景,新增一圖層,將兩圖層分別命名為“腳本”和“對(duì)象”。

  (3)選擇“對(duì)象”時(shí)間軸,在場景中加入兩個(gè)“點(diǎn)”的實(shí)例,在它們的屬性面板中分別命名為“yuanxi”(表示圓心)和“dian”(表示圓周上的點(diǎn)),讓它們適當(dāng)保持一定的距離,并且讓“yuanxi”位于場景的中央。

  (4)右擊“腳本”層第一幀,選擇“動(dòng)作”,在代碼編輯窗口內(nèi)輸入以下腳本:

  drag_flag=false;//拖動(dòng)標(biāo)志

  x0=yuanxin._x;

  y0=yuanxin._y;

  dian_x=dian._x;

  dian_y=dian._y;

  //計(jì)算圓的半徑,這就是拖動(dòng)圓周的點(diǎn)的約束條件,被拖動(dòng)的點(diǎn)到圓心的距離等于半徑。

  r=Math.sqrt((x0-dian_x)*(x0-dian_x)+(y0-dian_y)*(y0-dian_y));

  _root.onEnterFrame =function()

  {

  if (drag_flag)

  {

  x = _xmouse;

  y = _ymouse;

  angle=Math.atan(Math.abs(y0-y)/Math.abs(x-x0));

  dian_x=x0+r*Math.cos(angle);

  dian_y=y0-r*Math.sin(angle);

  //第一象限

  if((x>=x0) &&&& (y<=y0))

  {

  dian_x = x0+r*Math.cos(angle);

  dian_y = y0-r*Math.sin(angle);

  depth=angle*180/3.14159;

  }


  {

  //限制拖動(dòng)范圍為(0,0)到(100,100)之間,注意坐標(biāo)原點(diǎn)位于場景中的左上角。

  startDrag("",true,0,0,100,100); }

  on(release, releaseOutside)

  {

  stopDrag();

  }

  再拖動(dòng)ball,將看到ball被限制在某一區(qū)域內(nèi)拖動(dòng)。

  //第二象限

  if((x<=x0) &&&& (y<=y0))

  {
 
  dian_x=x0-r*Math.cos(angle);

  dian_y=y0-r*Math.sin(angle);

  depth=angle*180/3.14159+90;

  }

  //第三象限

  if((x<=x0) &&&& (y>=y0))

  {
  (5)右擊dian實(shí)例,選擇“動(dòng)作”命令,輸入以下腳本:

  on(press)

  {
 
  _root.drag_flag=true;//在dian實(shí)例上按下鼠標(biāo)左鍵,置拖動(dòng)標(biāo)志為真。

  }

  on(release, releaseOutside)

  {

  _root.drag_flag=false;//在dian實(shí)例上松開鼠標(biāo)左鍵,置拖動(dòng)標(biāo)志為假。

  }

  (6)測試影片,拖動(dòng)dian實(shí)例,將看到在場景中會(huì)畫出一個(gè)由點(diǎn)構(gòu)成的圓。

  從此例可以看出,實(shí)現(xiàn)沿某一路徑的拖動(dòng),關(guān)鍵是要通過約束條件找到拖動(dòng)時(shí)的對(duì)象的坐標(biāo)。


  dian_x=x0-r*Math.cos(angle);

  dian_y=y0+r*Math.sin(angle);

  depth=angle*180/3.14159+180;

  }

  //第四象限

  if((x>=x0) &&&& (y>=y0))

  {

  dian_x=x0+r*Math.cos(angle);

  dian_y=y0+r*Math.sin(angle);

  depth=angle*180/3.14159+270;

  }

  duplicateMovieClip("dian","dian" add depth,depth);

  _root["dian" add depth]._x=dian_x;

  _root["dian" add depth]._y=dian_y;

  _root.clear();

  _root.moveTo(x0,y0);

  _root.lineStyle(1,0xff0000,100);

  _root.lineTo(dian_x,dian_y);

  }

  }

發(fā)表評(píng)論(共0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)政策法規(guī),評(píng)論內(nèi)容只代表網(wǎng)友觀點(diǎn),發(fā)表審核后顯示!

版權(quán)聲明:

1 本站所有資源(含游戲)均是軟件作者、開發(fā)商投稿,任何涉及商業(yè)盈利目的均不得使用,否則產(chǎn)生的一切后果將由您自己承擔(dān)!

2 本站將不對(duì)任何資源負(fù)法律責(zé)任,所有資源請(qǐng)?jiān)谙螺d后24小時(shí)內(nèi)刪除。

3 若有關(guān)在線投稿、無法下載等問題,請(qǐng)與本站客服人員聯(lián)系。

4 如侵犯了您的版權(quán)、商標(biāo)等,請(qǐng)立刻聯(lián)系我們并具體說明情況后,本站將盡快處理刪除,聯(lián)系QQ:2499894784

返回頂部