程海生
在多媒體網(wǎng)絡(luò)教學(xué)環(huán)境中,一些學(xué)科經(jīng)常要用到各種工具在課件上進(jìn)行實(shí)驗(yàn),這就需要能在課件中對(duì)各種工具進(jìn)行靈活的操作,需要進(jìn)行的操作通常有拖動(dòng)、旋轉(zhuǎn)。在Flash中,拖動(dòng)操作比較容易實(shí)現(xiàn),而要實(shí)現(xiàn)靈活的旋轉(zhuǎn)就需要?jiǎng)右粍?dòng)腦筋。下面以數(shù)學(xué)課中用“量角器”測量角的度數(shù)為例,提供一種在“實(shí)驗(yàn)型課件”中讓實(shí)驗(yàn)工具自由移動(dòng)和旋轉(zhuǎn)的方法。
首先啟動(dòng)Flash,選擇創(chuàng)建新Flash文檔,然后將第一層重命名為“題”,在第一幀上使用“文本工具”輸入問題,用“線條工具”繪制幾個(gè)不同大小不同方向的角。(如圖1所示)
在插入菜單選擇“新元件”,插入名稱為“點(diǎn)”的影片剪輯元件,在影片剪輯的中心位置繪制一個(gè)紅色的小圓點(diǎn)。同樣,插入一個(gè)名稱為“量角器”的影片剪輯元件,將它的第一層重命名為“量角器”,在第一幀上繪制一個(gè)量角器。注意,一定要把量角器的圓心與影片剪輯的中心對(duì)齊。這樣,才能保證旋轉(zhuǎn)量角器時(shí)以圓心為中心轉(zhuǎn)動(dòng)。在“量角器”元件里插入一個(gè)新層將其重命名為“點(diǎn)”,從庫中將“點(diǎn)”影片剪輯元件拖動(dòng)到量角器的一角上。(如圖2所示)
單擊選擇紅色圓點(diǎn),在屬性面板中將實(shí)例名稱命名為“b”。(如圖3所示)
選擇實(shí)例“b”(小紅點(diǎn)),右擊在快捷菜單中選擇“復(fù)制”命令,然后在“編輯”菜單中選擇“粘貼到當(dāng)前位置”,選中這個(gè)新的小紅點(diǎn),在屬性面板中將其命名為“a”。這樣,實(shí)例“a”和實(shí)例“b”兩個(gè)小紅點(diǎn)正好重合。右擊選擇“粘貼”命令,又出現(xiàn)一個(gè)小紅點(diǎn),將其拖動(dòng)到量角器的圓心上,并在屬性面板中將其命名為“o”。
返回主場景,新建一個(gè)圖層將其命名為“量角器”,從庫中將“量角器”影片剪輯拖動(dòng)到舞臺(tái)上,并在屬性面板中將其命名為“l(fā)jq”。(如圖4所示)
雙擊量角器,打開“量角器”影片剪輯,在第一幀上添加如下語句:
stop();
//變量n用于保存旋轉(zhuǎn)的角度
n=0;
//使實(shí)例b不可見
b._visible=false;
//創(chuàng)建drawline自定義函數(shù),用于a,b兩點(diǎn)間畫線;
function drawline(){
//先清除畫面內(nèi)容
clear();
//設(shè)置線條樣式
lineStyle(1,0xcc6622,50);
//設(shè)定線條的開始點(diǎn);
moveTo(o._x,o._y);
//繪制直線段,連接實(shí)例a,b;
lineTo(a._x,a._y);
}
function rotation(){
//下面三句為計(jì)算出以實(shí)例o,a,b為頂點(diǎn)的三角形三邊的長,
l1=Math.sqrt(Math.pow(a._x-o._x,2)+Math.pow(a._y-o._y,2));
l2=Math.sqrt(Math.pow(b._x-o._x,2)+Math.pow(b._y-o._y,2));
l3=Math.sqrt(Math.pow(b._x-a._x,2)+Math.pow(b._y-a._y,2));
//用余弦定理計(jì)算出角aob的余弦值,并計(jì)算出角aob的弧度
x=Math.acos((Math.pow(l1,2)+Math.pow(l2,2)-Math.pow(l3,2))/(2*l1*l2));
//以下兩句用直線方程,算出旋轉(zhuǎn)的方向
y4=(b._y-o._y)/(b._x-o._x)*a._x+(o._y*b._x-b._y*o._x)/(b._x-o._x);
if((b._x>o._x&&y4>=a._y)||(b._x //以下兩句根據(jù)不同旋轉(zhuǎn)方向,計(jì)算旋轉(zhuǎn)的角度并進(jìn)行旋轉(zhuǎn) n=n-x/Math.PI*180;}else{n=n+x/Math.PI*180;} setProperty(_root.ljq,_rotation,n); //以下兩句使點(diǎn)a回到原位 a._x=b._x; a._y=b._y; //清除畫線 clear(); } 選擇實(shí)例“a”,在其上添加如下語句: //按下時(shí)拖動(dòng)小球; on(press){ this.startDrag(true); } //放松時(shí)停止拖動(dòng)并進(jìn)行旋轉(zhuǎn); on(release){ this.stopDrag(); _parent.rotation(); } //當(dāng)鼠標(biāo)在b上移動(dòng)時(shí)運(yùn)行其中的代碼; onClipEvent(mouseMove){ //調(diào)用函數(shù)drawline開始繪制直線; _parent.drawline(); //強(qiáng)制刷新畫面; updateAferEvent(); } 拖動(dòng)量角器上的小紅點(diǎn),量角器便可以圓心為中心自由旋轉(zhuǎn)了。下面,我們還要讓它自由的移動(dòng),只需給它添加幾句用于拖動(dòng)的語句。為了不與用于旋轉(zhuǎn)的小紅點(diǎn)相互影響,將用于拖動(dòng)的語句放到按鈕上,操作如下: 在“量角器”元件中新建一個(gè)圖層,將其命名為“按鈕”,繪制一個(gè)比量角器稍小的半圓。(如圖5所示) 選中剛畫好的半圓,按F8將其轉(zhuǎn)為名為“按鈕”的元件,雙擊按鈕將其打開,在“按鈕”元件中將第一幀拖至第四幀,讓前三幀空白,這樣在播放時(shí)按鈕就不可見了。 返回到“量角器”元件,在剛做好的按鈕上添加如下語句: //鼠標(biāo)按下時(shí)開始拖動(dòng)量角器 on(press){startDrag(_root.ljq)} //停止拖動(dòng) on(release){stopDrag()} 這樣,一個(gè)自由旋轉(zhuǎn)和移動(dòng)的實(shí)驗(yàn)工具就制作完成了,我們可以用它去測量任意大小和方向的角。