這里上下的黑邊是我作的“遮丑”,其實這里“遮丑”并沒起作用,并沒擋住雨滴在銀幕外出現(xiàn),用普通實現(xiàn)的“遮丑”在這里是不是不起作用?
為什么會出現(xiàn)這樣的問題?在這里我要多說幾句,希望大家不要嫌煩!我們知道,FLASH動畫是基于時間軸的線性動畫,而時間軸上有圖層,這樣就會出現(xiàn)一個圖層的級別問題,也就是我們常說的深度的問題,上面的圖層總是覆蓋住下面的圖層,直接的說,就是深度值大的圖層遮蓋深度值小的圖層,而在flash中又規(guī)定了腳本的層級深度高于任何級別的場景中非腳本創(chuàng)建的影片層級深度,所以上面大家看到的下雨是我用腳本創(chuàng)建的一個下雨的效果,而遮丑是我用手工拖入到場景一個影片剪輯,這樣根據(jù)腳本的深度級別高于非腳本創(chuàng)建的影片剪輯深度級別,自然就會使“遮丑”失效,因為下雨的深度高于用于“遮丑”影片剪輯的深度。如何解決“遮丑”失靈的問題呢?下面我來談?wù)勥@方面的問題。
我們知道在FLASH腳本中,我所接觸到的涉及到深度的命令只有三個(我只是說我所接觸到的)duplicateMovie();,attachMovie();,createEmptyMovie();分別是復(fù)制影片剪輯命令,創(chuàng)建位于庫中的影片剪輯,創(chuàng)建空的影片剪輯。而這三個命令的層級深度是在一個級別上的,也是處于*級別上的,所以這就給我們實現(xiàn)任何情況下都能實現(xiàn)“遮丑”提供了可能,我的思路是,用普通的方法創(chuàng)建一個“遮丑”影片剪輯,然后利用腳本調(diào)用,然后設(shè)置其深度,這樣就會避免出現(xiàn)上面出現(xiàn)的問題了,而用腳本控制*的方法就是實現(xiàn)直接用腳本調(diào)用位于庫中的影片剪輯,就是用attachMovie();這個命令,下面我們看代碼:
_root.onLoad = function() {
attachMovie("zedang", "zedang", 10000);
this.zedang._x = Stage.width/2;
this.zedang._y = Stage.height/2;
};
其中zedang是我制作的“遮丑”影片剪輯的鏈接名,影片剪輯的注冊點在中心,在主場景中調(diào)用是讓其位于場景中心,所以我用了this.zedang._x = Stage.width/2;this.zedang._y = Stage.height/2;這樣不管你場景設(shè)置多大,都會保證這個“遮丑”位于場景的中心,深度我隨便設(shè)置為10000,我想你作一個影片不會有一萬多個圖層吧,哈,這個如果你確實是圖層多,這里可以設(shè)置為10000000,也不是不可以的,這個腳本保證了在任何情況下都會把你的“丑”遮住的,不信?試試,下面我把源文件公布出來,大家可以下載研究,也可以提出不同意見,我的想法也可能不成熟,不過感覺還是不錯的,在這里大家不要見笑喲。下面是我制作的完整的下遮丑效果及下雨的代碼腳本。
_root.onLoad = function() {
Num = 200;
attachMovie("zedang", "zedang", 10000);
this.zedang._x = Stage.width/2;
this.zedang._y = Stage.height/2;
for (var i = 0; i
_root["yu"+i]._x = Math.floor(Math.random()*500);
_root["yu"+i]._y = Math.floor(Math.random()*400);
_root["yu"+i]._rotation = -32;
_root["yu"+i]._alpha = Math.floor(Math.random()*i);
_root["yu"+i]._xscale = _root["yu"+i]._yscale=25;
_root["su"+i] = (3+i/Num);
}
};
this.onEnterFrame = function() {
for (var k = 0; k
this["yu"+k]._y += _root["su"+k];
if (this["yu"+k]._x>500) {
this["yu"+k]._x = 0;
}
if (this["yu"+k]._y>400) {
this["yu"+k]._y = 0;
}
}
};