| 導購 | 订阅 | 在线投稿
分享
 
 
 

Flash AS入門教程第七課第四節:影片剪輯的深度

來源:互聯網  2008-11-20 07:24:36  評論

第4節 MC的深度

在flash創作環境中我們對層的概念已經比較熟悉了。深度與層的概念比較接近。每一個在舞台上的對象都有它自已的深度,深度數字大的蓋住比它小的對象,這就象上面的層遮住下面的層一樣。我們可以把MC放到-16384 至 1048575的任一深度上,但某一深度上原來已有一個對象時,那麽新放入的對象將替換原來的對象。這可能會遇到一個問題,當我用使用 attachMovie(MovieClip.attachMovie 方法)、duplicateMovieClip(MovieClip.duplicateMovieClip 方法)或 createEmptyMovieClip(MovieClip.createEmptyMovieClip 方法)在運行時創建影片剪輯時,始終要指定MC的深度。應該用個什麽深度值呢?如果指定的深度值上已有MC了,會不會將原來的覆蓋了呢?爲了解決這個問題,flash 爲我們提供了getNextHighestDepth()方法。

getNextHighestDepth()方法:MC的這個方法將返回下一個可用的深度值。更好的的理解就是當前最大的深度值加1。因此用這個深度值,MC將在最上面。

比如:this.createEmptyMovieClip("my_mc",this.getNextHighestDepth());

getInstanceAtDepth()方法:這個方法將返回某個特定深度值上的MC實例。

比如要確定當前最大深度值的MC,可以用如下代碼:

var zddepth = this.getNextHighestDepth()-1; //獲得當前最大的深度值

var my_mc:MovieClip =this.getInstanceAtDepth(zddepth);

getDepth()方法:返回某個MC的深度

比如要返回MC,my_mc的深度:

var mymcdepth = my_mc.getDepth();

swapDepths()方法:交換兩個MC的深度值,如果MC正在執行補間,則補間會停止。

比如有兩個MC:mc1和mc2,現在要交換這兩個MC的深度

mc1.swapDepths(mc2);

下面通過一個練習來熟悉本節課所介紹的內容。

效果如下:用鼠標點擊擋在下面的圖片,這張圖片將移到最上面一層來。

制作方法:

1.新建一flash文檔,導入若幹圖片。

2.將這些圖片分別做成MC,大小隨意,但寬高不應超過200或可再小一些。在庫中分別右擊這些MC,點擊「連接」,在彈出的面板中,在爲ActionSpript導出前打鈎。在標識框內輸入:pic1.第二個MC則輸入pic2,以此類推。

3.回到主場景,打開動作面板,輸入下列代碼:(注意下面的代碼是以5張圖片爲例寫的,如果你不是5張圖片則應作相應修改,詳細說明看後面的代碼分析)

for(i=1;i<6;i++){

this.attachMovie("pic"+i,"pic"+i+"_mc",this.getNextHighestDepth());

var pic_mc = eval("pic"+i+"_mc");

pic_mc._x = 150 +random(200);

pic_mc._y = 100 + random(200);

}

pic1_mc.onRelease = function(){

var zddepth =_root.getNextHighestDepth()-1;

var zd_mc:MovieClip =_root.getInstanceAtDepth(zddepth);

this.swapDepths(zd_mc);

}

pic2_mc.onRelease = function(){

var zddepth = _root.getNextHighestDepth()-1;

var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth);

this.swapDepths(zd_mc);

}

pic3_mc.onRelease = function(){

var zddepth = _root.getNextHighestDepth()-1;

var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth);

this.swapDepths(zd_mc);

}

pic4_mc.onRelease = function(){

var zddepth = _root.getNextHighestDepth()-1;

var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth);

this.swapDepths(zd_mc);

}

pic5_mc.onRelease = function(){

var zddepth = _root.getNextHighestDepth()-1;

var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth);

this.swapDepths(zd_mc);

}

代碼分析:

首先用一個for循環,將庫中的圖片加載到舞台上,循環次數是你的圖片元件的數量,下面i<6中的6用你的圖片元件數量加1替換。我這裏是5張圖片,所以我用6。

for(i=1;i<6;i++){

接下來加載這些圖片元件,這裏加載的深度我們用到了this.getNextHighestDepth()方法。圖片加載後指定圖片的x,y坐標在一定的範圍內隨機的位置。這個範圍應根據圖片元件的大小來確定,不能太小,太小了,上面的圖片會完全蓋住下面的圖片。也不能太大,太大了則不能産生重疊效果。總之就是要即要産生重疊效果,又不能完全蓋住。

this.attachMovie("pic"+i,"pic"+i+"_mc",this.getNextHighestDepth());

var pic_mc = eval("pic"+i+"_mc");

pic_mc._x = 150 +random(200);

pic_mc._y = 100 + random(200);

現在圖片已加載到舞台上了,並産生了不完全重疊效果。接下來就是實現點擊圖片讓該圖片移到最上層,所以用到圖片MC的onRelease事件,以第一張圖片爲例:

pic1_mc.onRelease = function(){

在這個事件執行中首先確定最上面的圖片的深度值。上面介紹了getNextHighestDepth()返回的是最大的深度值加1,那麽最大的深度值自然就是getNextHighestDepth()減1了。

var zddepth = _root.getNextHighestDepth()-1;

有了最大的深度值後,就可以確定最上面的圖片是哪張了:

var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth);

最後將這張圖片與最大深度那張圖片交換深度,那這張圖片深度值就最大了,當然也就在最上面了:

this.swapDepths(zd_mc);

第一張圖片的點擊動作代碼就完成了。下面寫第二張圖片的代碼,因爲每張圖片點擊事件中的代碼是完全一樣的,所以複制第一張圖片的代碼,粘帖到第一張圖片代碼的下面,將第一句pic1_mc.onRelease = function(){中的pic1改爲pic2,就行了。

以後的以此類推,直到完成所有的圖片的點擊代碼。

第4節 MC的深度 在flash創作環境中我們對層的概念已經比較熟悉了。深度與層的概念比較接近。每一個在舞台上的對象都有它自已的深度,深度數字大的蓋住比它小的對象,這就象上面的層遮住下面的層一樣。我們可以把MC放到-16384 至 1048575的任一深度上,但某一深度上原來已有一個對象時,那麽新放入的對象將替換原來的對象。這可能會遇到一個問題,當我用使用 attachMovie(MovieClip.attachMovie 方法)、duplicateMovieClip(MovieClip.duplicateMovieClip 方法)或 createEmptyMovieClip(MovieClip.createEmptyMovieClip 方法)在運行時創建影片剪輯時,始終要指定MC的深度。應該用個什麽深度值呢?如果指定的深度值上已有MC了,會不會將原來的覆蓋了呢?爲了解決這個問題,flash 爲我們提供了getNextHighestDepth()方法。 getNextHighestDepth()方法:MC的這個方法將返回下一個可用的深度值。更好的的理解就是當前最大的深度值加1。因此用這個深度值,MC將在最上面。 比如:this.createEmptyMovieClip("my_mc",this.getNextHighestDepth()); getInstanceAtDepth()方法:這個方法將返回某個特定深度值上的MC實例。 比如要確定當前最大深度值的MC,可以用如下代碼: var zddepth = this.getNextHighestDepth()-1; //獲得當前最大的深度值 var my_mc:MovieClip =this.getInstanceAtDepth(zddepth); getDepth()方法:返回某個MC的深度 比如要返回MC,my_mc的深度: var mymcdepth = my_mc.getDepth(); swapDepths()方法:交換兩個MC的深度值,如果MC正在執行補間,則補間會停止。 比如有兩個MC:mc1和mc2,現在要交換這兩個MC的深度 mc1.swapDepths(mc2); 下面通過一個練習來熟悉本節課所介紹的內容。 效果如下:用鼠標點擊擋在下面的圖片,這張圖片將移到最上面一層來。 制作方法: 1.新建一flash文檔,導入若幹圖片。 2.將這些圖片分別做成MC,大小隨意,但寬高不應超過200或可再小一些。在庫中分別右擊這些MC,點擊「連接」,在彈出的面板中,在爲ActionSpript導出前打鈎。在標識框內輸入:pic1.第二個MC則輸入pic2,以此類推。 3.回到主場景,打開動作面板,輸入下列代碼:(注意下面的代碼是以5張圖片爲例寫的,如果你不是5張圖片則應作相應修改,詳細說明看後面的代碼分析) for(i=1;i<6;i++){ this.attachMovie("pic"+i,"pic"+i+"_mc",this.getNextHighestDepth()); var pic_mc = eval("pic"+i+"_mc"); pic_mc._x = 150 +random(200); pic_mc._y = 100 + random(200); } pic1_mc.onRelease = function(){ var zddepth =_root.getNextHighestDepth()-1; var zd_mc:MovieClip =_root.getInstanceAtDepth(zddepth); this.swapDepths(zd_mc); } pic2_mc.onRelease = function(){ var zddepth = _root.getNextHighestDepth()-1; var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth); this.swapDepths(zd_mc); } pic3_mc.onRelease = function(){ var zddepth = _root.getNextHighestDepth()-1; var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth); this.swapDepths(zd_mc); } pic4_mc.onRelease = function(){ var zddepth = _root.getNextHighestDepth()-1; var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth); this.swapDepths(zd_mc); } pic5_mc.onRelease = function(){ var zddepth = _root.getNextHighestDepth()-1; var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth); this.swapDepths(zd_mc); } 代碼分析: 首先用一個for循環,將庫中的圖片加載到舞台上,循環次數是你的圖片元件的數量,下面i<6中的6用你的圖片元件數量加1替換。我這裏是5張圖片,所以我用6。 for(i=1;i<6;i++){ 接下來加載這些圖片元件,這裏加載的深度我們用到了this.getNextHighestDepth()方法。圖片加載後指定圖片的x,y坐標在一定的範圍內隨機的位置。這個範圍應根據圖片元件的大小來確定,不能太小,太小了,上面的圖片會完全蓋住下面的圖片。也不能太大,太大了則不能産生重疊效果。總之就是要即要産生重疊效果,又不能完全蓋住。 this.attachMovie("pic"+i,"pic"+i+"_mc",this.getNextHighestDepth()); var pic_mc = eval("pic"+i+"_mc"); pic_mc._x = 150 +random(200); pic_mc._y = 100 + random(200); 現在圖片已加載到舞台上了,並産生了不完全重疊效果。接下來就是實現點擊圖片讓該圖片移到最上層,所以用到圖片MC的onRelease事件,以第一張圖片爲例: pic1_mc.onRelease = function(){ 在這個事件執行中首先確定最上面的圖片的深度值。上面介紹了getNextHighestDepth()返回的是最大的深度值加1,那麽最大的深度值自然就是getNextHighestDepth()減1了。 var zddepth = _root.getNextHighestDepth()-1; 有了最大的深度值後,就可以確定最上面的圖片是哪張了: var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth); 最後將這張圖片與最大深度那張圖片交換深度,那這張圖片深度值就最大了,當然也就在最上面了: this.swapDepths(zd_mc); 第一張圖片的點擊動作代碼就完成了。下面寫第二張圖片的代碼,因爲每張圖片點擊事件中的代碼是完全一樣的,所以複制第一張圖片的代碼,粘帖到第一張圖片代碼的下面,將第一句pic1_mc.onRelease = function(){中的pic1改爲pic2,就行了。 以後的以此類推,直到完成所有的圖片的點擊代碼。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有