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