查看完整版本 : 怎樣在Flash里嵌入Flash影片?
天使之翼
2005-08-08, 15:03
做一個FLASH網站,怎么加載另外的FLASH到場景里?
類似畫中畫的效果 :confused:
類似畫中畫的效果 :confused:
明天
2005-08-08, 15:42
將嵌入的flash做成影片剪輯就可以了
天使之翼
2005-08-08, 15:46
將嵌入的flash做成影片剪輯就可以了
這個我知道,這樣會增加文件的大小,影響網上瀏覽速度。
我想把影片分成若干個FLASH文件載入。
這個我知道,這樣會增加文件的大小,影響網上瀏覽速度。
我想把影片分成若干個FLASH文件載入。
actionscript
2005-08-08, 15:48
簡單一點
同樣是loadmovie
載入與被載入的影片實際大小是一致的
當然,被載入的影片實際有動畫的就是你圖中的小紅框部分
通過在對應的層loadmovie要載入的影片
可以簡便的實現效果
同樣是loadmovie
載入與被載入的影片實際大小是一致的
當然,被載入的影片實際有動畫的就是你圖中的小紅框部分
通過在對應的層loadmovie要載入的影片
可以簡便的實現效果
天使之翼
2005-08-08, 17:05
簡單一點
同樣是loadmovie
載入與被載入的影片實際大小是一致的
當然,被載入的影片實際有動畫的就是你圖中的小紅框部分
通過在對應的層loadmovie要載入的影片
可以簡便的實現效果
不行,這樣整個頁面都在LOAD!
我只要小畫面里顯示加載數據,然后單獨操作播放。
同樣是loadmovie
載入與被載入的影片實際大小是一致的
當然,被載入的影片實際有動畫的就是你圖中的小紅框部分
通過在對應的層loadmovie要載入的影片
可以簡便的實現效果
不行,這樣整個頁面都在LOAD!
我只要小畫面里顯示加載數據,然后單獨操作播放。
OREZ
2005-08-08, 23:53
我也是用 loadmovie就ok了
用層或者目標窗口都可以的
用層或者目標窗口都可以的
天使之翼
2005-08-09, 16:58
哈哈…………經過反復實驗終于成功實現理想效果。
果然還是LoadMovie的作用,只不過要用一個影片組建來指定位置。
恩!還是要謝謝大家。 :D
果然還是LoadMovie的作用,只不過要用一個影片組建來指定位置。
恩!還是要謝謝大家。 :D
天使之翼
2005-08-10, 17:00
暈……又碰到新問題了,現在在FLASH模式下瀏覽影片能正確加載嵌入。為什么一導入進HTML里瀏覽就無法正常加載嵌入???
難道腳本有錯,還是別的原因?
LOADMOVIE的腳本
loadMovie("\\word.swf", "");
word.swf為被嵌入的影片。
還有什么“位置”“目標”“變量”之類的選項都有什么做用?
難道腳本有錯,還是別的原因?
LOADMOVIE的腳本
loadMovie("\\word.swf", "");
word.swf為被嵌入的影片。
還有什么“位置”“目標”“變量”之類的選項都有什么做用?
真·大頭
2005-08-10, 17:39
如果你放在同一個目錄下應該是loadMovie("word.swf");
沒有\\的
其他參數不寫用默認的就行了
沒有\\的
其他參數不寫用默認的就行了
真·大頭
2005-08-10, 17:45
還有一般是在外面的flash用點語法寫的
比如你把那個要載入的mc命名為a,在外面的楨寫a.loadMovie("word.swf"),然后還能順便定義a的大小位置什么的
比如你把那個要載入的mc命名為a,在外面的楨寫a.loadMovie("word.swf"),然后還能順便定義a的大小位置什么的
adam
2005-08-10, 21:11
問題一:如何控制被加載進來的SWF文件的坐標和長寬比例大小?
控制被加載進來的SWF文件控制其長寬要采用onEnterFrame,比如:
on (press) {
loadMovie("a2.swf", "_root.mymc");
onEnterFrame = function () {
_root.mymc._x = 0;
_root.mymc._y = 0;
_root.mymc._width = 330;
_root.mymc._height = 240;
};
}
為什么用 onEnterFrame呢?因為被加載進來的的過程中,有點延時,如果沒有onEnterFrame語句,那么語句讀取一次就不讀取了,然而讀取了這一次之后,還沒有加載進來,所以就會導致坐標大小設置無效。同樣,如果加載到層上,也是這樣的。
on (press) {
loadMovie("a1.swf", 1);
onEnterFrame = function () {
_level1._x = 17;
_level1._y = 30;
_level1._width = 330;
_level1._height = 240;
};
}
請注意這兩種方法,第一種,把外部的a2加載到mymc中,加在進來后,a2就自動的替換了mymc,我們直接設置mymc的屬性就設置了被加載進來的swf的屬性。第二種方法,_level是對于加載到時間軸上的電影的引用,加載到第2層就是_level2;加載到第3層就是_level3。
控制被加載進來的SWF文件控制其長寬要采用onEnterFrame,比如:
on (press) {
loadMovie("a2.swf", "_root.mymc");
onEnterFrame = function () {
_root.mymc._x = 0;
_root.mymc._y = 0;
_root.mymc._width = 330;
_root.mymc._height = 240;
};
}
為什么用 onEnterFrame呢?因為被加載進來的的過程中,有點延時,如果沒有onEnterFrame語句,那么語句讀取一次就不讀取了,然而讀取了這一次之后,還沒有加載進來,所以就會導致坐標大小設置無效。同樣,如果加載到層上,也是這樣的。
on (press) {
loadMovie("a1.swf", 1);
onEnterFrame = function () {
_level1._x = 17;
_level1._y = 30;
_level1._width = 330;
_level1._height = 240;
};
}
請注意這兩種方法,第一種,把外部的a2加載到mymc中,加在進來后,a2就自動的替換了mymc,我們直接設置mymc的屬性就設置了被加載進來的swf的屬性。第二種方法,_level是對于加載到時間軸上的電影的引用,加載到第2層就是_level2;加載到第3層就是_level3。
adam
2005-08-10, 21:12
問題之二:如何實現點擊按鈕加載一個外部SWF文件,并且要顯示加載的下載進度呢?
有兩個方法來實現這個效果,其一:把加載londing寫在主文件中,其二,被加載的子SWF文件有自己的londing。現在分別給予說明。
其一:在主文件中寫londing
外部子swf文件名為a1,主文件中有一個動態文本框名為loadText,一個按鈕名為bbt,現在把loadMovie和londing寫在楨上。
_root.bbt.onPress = function() {
_root.createEmptyMovieClip("mc", 10);
mc.loadMovie("a1.swf");
mc._visible = false;
_root.bbt.onEnterFrame = function() {
var l = mc.getBytesLoaded();
var t = mc.getBytesTotal();
var getPercent = l/t;
loadText = Math.round(getPercent*100)+"%";
if (l>0 && l>=t) {
mc._visible = true;
delete this.onEnterFrame;
}
mc._x = 10;
mc._y = 10;
mc._width =440;
mc._height = 320;
};
};
其二:子文件中有自己的londing
這個寫法與前面說的londing一樣,只是注意一個問題就是注意路徑的問題,比如這樣寫:
第一禎
loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = lts+"%";
第二禎
if (lts == 100) {
gotoAndStop(3);
} else {
gotoAndPlay(1);
}
和前面的londing中介紹的比較,看出不同之處沒有呢?僅僅是去掉了_root因為被加載后,外部SWF文件就相當于主文件中的一個MC 有了_root 就是指向主文件的_root 了,當然會顯示錯誤。
有兩個方法來實現這個效果,其一:把加載londing寫在主文件中,其二,被加載的子SWF文件有自己的londing。現在分別給予說明。
其一:在主文件中寫londing
外部子swf文件名為a1,主文件中有一個動態文本框名為loadText,一個按鈕名為bbt,現在把loadMovie和londing寫在楨上。
_root.bbt.onPress = function() {
_root.createEmptyMovieClip("mc", 10);
mc.loadMovie("a1.swf");
mc._visible = false;
_root.bbt.onEnterFrame = function() {
var l = mc.getBytesLoaded();
var t = mc.getBytesTotal();
var getPercent = l/t;
loadText = Math.round(getPercent*100)+"%";
if (l>0 && l>=t) {
mc._visible = true;
delete this.onEnterFrame;
}
mc._x = 10;
mc._y = 10;
mc._width =440;
mc._height = 320;
};
};
其二:子文件中有自己的londing
這個寫法與前面說的londing一樣,只是注意一個問題就是注意路徑的問題,比如這樣寫:
第一禎
loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = lts+"%";
第二禎
if (lts == 100) {
gotoAndStop(3);
} else {
gotoAndPlay(1);
}
和前面的londing中介紹的比較,看出不同之處沒有呢?僅僅是去掉了_root因為被加載后,外部SWF文件就相當于主文件中的一個MC 有了_root 就是指向主文件的_root 了,當然會顯示錯誤。
adam
2005-08-10, 21:12
問題三:我想在舞臺上畫一個屏幕,然后點擊一個按鈕就載入一個外部swf進行播放該怎樣做呢?
那么我們就來一起做一個相冊吧。當主文件載入后,單擊按鈕就載入一個外部swf 文件,并且都有londing顯示。首先我們做好以下準備工作:(1)準備幾張圖片,現在我們準備7張,6個子文件一個一張,主文件用一張。(2)主文件舞臺大小為了適應網頁的需要,設置為770*420。子文件舞臺大小設置為512*384,這樣就不需要載入后控制大小了,方便些(其實我們應當這樣,省去一些麻煩。
一、制作子文件。每個都用來顯示圖片,第一和第二禎寫londing,第三禎~~二十禎根據自己的愛好做點亮度變化,以產生動感,最后一禎寫上stop()。第一和第二禎的londing如下
第一禎
loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = "數據下載中 "+lts+"%";
第二禎
if (lts == 100) {
gotoAndPlay(3);
} else {
gotoAndPlay(1);
}
就這樣如法炮制的制作6個,分別命名為b1…..b6都發布成swf文件。保存在一個文件夾中。
二、制作主文件
第一禎用來寫londing,第2禎放一些像屏幕一樣的東西,和按鈕,為了增加效果,放一個音樂在時間軸上。
第一禎的londing//由于前面已經說得多了,就不贅述了
stop();
i = 0; ,
onEnterFrame = function () {
// 使用不斷觸發的事件
loaded = _root.getBytesLoaded();
total = _root.getBytesTotal();
var aa = Math.round((loaded/total)*100);
_root.dongtai.wenbens = aa+"%";
_root.dongtai._x = 188+aa*3;
_root.bb._width = aa*3;
if (aa>=100) {
// 檢測到滿足條件就跳出來,否則繼續循環
_root.gotoAndStop(2);
delete this.onEnterFrame;
// 使用delete的目的是當完成下載后銷毀onEnterFrame事件,以節約資源的消耗。
}
};
第2禎的按鈕上的AS
on (press) {
_root.i++;
if (i == 7) {
i = 6;
}
loadMovie("b"+i+".swf", "_root.mc");
_root.tishi = "第"+i+"張圖片";
}
偷點懶,就不詳細的贅述其含義, 我們也可以用很長的語句來實現相同的效果,這種寫法是對AS的一種濃縮。
那么我們就來一起做一個相冊吧。當主文件載入后,單擊按鈕就載入一個外部swf 文件,并且都有londing顯示。首先我們做好以下準備工作:(1)準備幾張圖片,現在我們準備7張,6個子文件一個一張,主文件用一張。(2)主文件舞臺大小為了適應網頁的需要,設置為770*420。子文件舞臺大小設置為512*384,這樣就不需要載入后控制大小了,方便些(其實我們應當這樣,省去一些麻煩。
一、制作子文件。每個都用來顯示圖片,第一和第二禎寫londing,第三禎~~二十禎根據自己的愛好做點亮度變化,以產生動感,最后一禎寫上stop()。第一和第二禎的londing如下
第一禎
loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = "數據下載中 "+lts+"%";
第二禎
if (lts == 100) {
gotoAndPlay(3);
} else {
gotoAndPlay(1);
}
就這樣如法炮制的制作6個,分別命名為b1…..b6都發布成swf文件。保存在一個文件夾中。
二、制作主文件
第一禎用來寫londing,第2禎放一些像屏幕一樣的東西,和按鈕,為了增加效果,放一個音樂在時間軸上。
第一禎的londing//由于前面已經說得多了,就不贅述了
stop();
i = 0; ,
onEnterFrame = function () {
// 使用不斷觸發的事件
loaded = _root.getBytesLoaded();
total = _root.getBytesTotal();
var aa = Math.round((loaded/total)*100);
_root.dongtai.wenbens = aa+"%";
_root.dongtai._x = 188+aa*3;
_root.bb._width = aa*3;
if (aa>=100) {
// 檢測到滿足條件就跳出來,否則繼續循環
_root.gotoAndStop(2);
delete this.onEnterFrame;
// 使用delete的目的是當完成下載后銷毀onEnterFrame事件,以節約資源的消耗。
}
};
第2禎的按鈕上的AS
on (press) {
_root.i++;
if (i == 7) {
i = 6;
}
loadMovie("b"+i+".swf", "_root.mc");
_root.tishi = "第"+i+"張圖片";
}
偷點懶,就不詳細的贅述其含義, 我們也可以用很長的語句來實現相同的效果,這種寫法是對AS的一種濃縮。
adam
2005-08-10, 21:13
問題四:我想逐次載入多個外部文件,當第一個載入播放完畢后,立即載入第2個,第二個播放完畢后,立即載入第3個 ,……,直到結束。怎么辦?
首先對這種提問,我們先要質問一下提問的人,這樣做有什么意義? 與其這樣,不如全部做到一個SWF中,因為每次調用一個外部SWF的時候,需要一定的時間來等待下載。當然,如果你想制作一個連續劇,播放完了一個后,用londing下一集的londing畫面顯示“正在載入下集,請稍候”那么還是可以的。
方法很簡單:依照問題三的原文件,稍微修改,去掉一個按鈕,用一個按鈕載入第一個,然后再第一個的最后一禎放個調用主文件中的函數即可。
按鈕:
on (press) {
loadMovie("b1.swf", "_root.mc");
}
主文件定義的函數
function go2() {
loadMovie("b2.swf", "_root.mc");
}
function go3() {
loadMovie("b3.swf", "_root.mc");
}
function go4() {
loadMovie("b4.swf", "_root.mc");
}
function go5() {
loadMovie("b5.swf", "_root.mc");
}
function go6() {
loadMovie("b6.swf", "_root.mc");
}
第一個b1 SWF的最后一禎_root. go2(),第二個外部SWF的最后一禎 _root.go3()………..
首先對這種提問,我們先要質問一下提問的人,這樣做有什么意義? 與其這樣,不如全部做到一個SWF中,因為每次調用一個外部SWF的時候,需要一定的時間來等待下載。當然,如果你想制作一個連續劇,播放完了一個后,用londing下一集的londing畫面顯示“正在載入下集,請稍候”那么還是可以的。
方法很簡單:依照問題三的原文件,稍微修改,去掉一個按鈕,用一個按鈕載入第一個,然后再第一個的最后一禎放個調用主文件中的函數即可。
按鈕:
on (press) {
loadMovie("b1.swf", "_root.mc");
}
主文件定義的函數
function go2() {
loadMovie("b2.swf", "_root.mc");
}
function go3() {
loadMovie("b3.swf", "_root.mc");
}
function go4() {
loadMovie("b4.swf", "_root.mc");
}
function go5() {
loadMovie("b5.swf", "_root.mc");
}
function go6() {
loadMovie("b6.swf", "_root.mc");
}
第一個b1 SWF的最后一禎_root. go2(),第二個外部SWF的最后一禎 _root.go3()………..
adam
2005-08-10, 21:15
天使之翼 (http://www.v6dp.com/member.php?u=54) vbmenu_register("postmenu_70481", true); 請等幾天,我正在給你寫flash整站的教學教程!
不好意思!
這兩天實在太忙
不好意思!
這兩天實在太忙
天使之翼
2005-08-11, 02:46
謝謝!adam的回復,好復雜,我要慢慢消化:)
再次感謝。 :D
再次感謝。 :D
adam
2005-08-11, 09:48
厚厚~~,翼也在做自己的個人站點把!!
我也在做!共同努力
我也在做!共同努力
亦韋
2005-08-11, 11:34
果然是高手,很受用!其實也不用這么麻煩,一般的效果,應該用loadmovie就足夠了,載入到空MC下,空MC擺放到要載入影片指定位置,再把要導入的影片loadmovie進來就行了。如果用loadmovienum
加載到層中的話,固定位置稍有些麻煩,需要的朋友可以搜一下,網上相關資料很多,本人水平有限,就不“班門弄斧”了。
下面是下載條的代碼,只要放到第一幀上就行了,改下坐標,長、寬度就可以用了,挺實用的^_^。(來源于網上)
stop ();
function dr ( nam , de , d , al ) {
na = createEmptyMovieClip ( nam , de );
na . lineStyle ( d , 0x000000 , al );
na . _x = 149.0 ;
na . _y = 229.0 ;
na . lineTo ( 323.9 , 0 );
}
//一個畫線條的函數
onEnterFrame = function () {
var a = getBytesTotal ();
var b = getBytesLoaded ();
//取得下載的數據
if ( b < a ) {
dr ( "b1" , 0 , 1 , 20 );
dr ( "b2" , 1 , 1 , 10 );
dr ( "b3" , 2 , 1 , 100 );
b3 . _xscale = b / a * 100 ;
//畫三條橫線,顯示下載進度;
} else {
delete onEnterFrame ;
b1 . removeMovieClip ();
b2 . removeMovieClip ();
b3 . removeMovieClip ();
play ();
//下載完畢,刪除圖形和函數;
}
};
問題四:我想逐次載入多個外部文件,當第一個載入播放完畢后,立即載入第2個,第二個播放完畢后,立即載入第3個 ,……,直到結束。怎么辦?
我這邊有個點擊播放下一個的代碼,你看看有用嗎?
時間軸上:
stop();
i=0;//定義一個變量i,并且賦初值為0;
建一個空幀,命名為:“body1_mymc”再放兩個按扭向下翻頁的加語法是:
on(release){
i++;
if(i>15){//因為外面這有9張圖,當變量大于9的時候,讓變量為1,這樣能夠使加載的圖片是連續的,即,每點一次按扭,就換一張圖,等到換到第9張圖,再點按扭,則循環到第一張圖(j1.jpg到j9.jpg,因為沒有j0.jpg,如果i=0,則會提示沒有找到j0.jpg);
i=1;
}
loadMovie(("j"+i)+".jpg",body1_mymc);//從j1.jpg開始加載圖片到影片剪輯mymc中;
}
向上翻頁的代碼與這段相反就行了。
本人涉獵不深,希望與大家共勉。
加載到層中的話,固定位置稍有些麻煩,需要的朋友可以搜一下,網上相關資料很多,本人水平有限,就不“班門弄斧”了。
下面是下載條的代碼,只要放到第一幀上就行了,改下坐標,長、寬度就可以用了,挺實用的^_^。(來源于網上)
stop ();
function dr ( nam , de , d , al ) {
na = createEmptyMovieClip ( nam , de );
na . lineStyle ( d , 0x000000 , al );
na . _x = 149.0 ;
na . _y = 229.0 ;
na . lineTo ( 323.9 , 0 );
}
//一個畫線條的函數
onEnterFrame = function () {
var a = getBytesTotal ();
var b = getBytesLoaded ();
//取得下載的數據
if ( b < a ) {
dr ( "b1" , 0 , 1 , 20 );
dr ( "b2" , 1 , 1 , 10 );
dr ( "b3" , 2 , 1 , 100 );
b3 . _xscale = b / a * 100 ;
//畫三條橫線,顯示下載進度;
} else {
delete onEnterFrame ;
b1 . removeMovieClip ();
b2 . removeMovieClip ();
b3 . removeMovieClip ();
play ();
//下載完畢,刪除圖形和函數;
}
};
問題四:我想逐次載入多個外部文件,當第一個載入播放完畢后,立即載入第2個,第二個播放完畢后,立即載入第3個 ,……,直到結束。怎么辦?
我這邊有個點擊播放下一個的代碼,你看看有用嗎?
時間軸上:
stop();
i=0;//定義一個變量i,并且賦初值為0;
建一個空幀,命名為:“body1_mymc”再放兩個按扭向下翻頁的加語法是:
on(release){
i++;
if(i>15){//因為外面這有9張圖,當變量大于9的時候,讓變量為1,這樣能夠使加載的圖片是連續的,即,每點一次按扭,就換一張圖,等到換到第9張圖,再點按扭,則循環到第一張圖(j1.jpg到j9.jpg,因為沒有j0.jpg,如果i=0,則會提示沒有找到j0.jpg);
i=1;
}
loadMovie(("j"+i)+".jpg",body1_mymc);//從j1.jpg開始加載圖片到影片剪輯mymc中;
}
向上翻頁的代碼與這段相反就行了。
本人涉獵不深,希望與大家共勉。
adam
2005-08-11, 13:28
v6是大家共同學習的地方,不用客氣!很高興能于大家交流!
其實我認為網站的精髓不在技術,而在于美術,和個人的的設計修養水平,
這也就是技術再復雜都能搞定,因為是技術,設計的頁面,是不能拿來主意的!
我在搜房作設計師,所以偶爾看看技術。但我更美術設計
希望大家能在設計一路上互相幫助,互相鼓勵! 共同學習
比我強的人多如牛毛啊!!
其實我認為網站的精髓不在技術,而在于美術,和個人的的設計修養水平,
這也就是技術再復雜都能搞定,因為是技術,設計的頁面,是不能拿來主意的!
我在搜房作設計師,所以偶爾看看技術。但我更美術設計
希望大家能在設計一路上互相幫助,互相鼓勵! 共同學習
比我強的人多如牛毛啊!!
天使之翼
2005-08-12, 14:39
如果你放在同一個目錄下應該是loadMovie("word.swf");
沒有\\的
其他參數不寫用默認的就行了
恩,問題解決了,去掉\\就行了,還是這個簡單 :D 謝謝了!
TO:adam
我是給公司做的網站(自己的一直想,可沒時間 :( )
第一次嘗試用FLASH做全站,慢墁摸索中…………
沒有\\的
其他參數不寫用默認的就行了
恩,問題解決了,去掉\\就行了,還是這個簡單 :D 謝謝了!
TO:adam
我是給公司做的網站(自己的一直想,可沒時間 :( )
第一次嘗試用FLASH做全站,慢墁摸索中…………
xlly
2005-08-12, 20:39
回答的很認真很具體!雖然懂!但是為你們的精神表示感謝!
adam
2005-08-14, 16:45
好的!我們共同努力!~~~
九章
2005-08-17, 10:53
借個地方跟個貼
想請教一個FLASH問題
我做的網頁..第一頁是FLASH.然后我一段FLASH完了以后,
最后一幀是ENTER.然后我想點擊這個ENTER進入到我網頁的一個子頁面里..
是相對路徑的..但是我怎么寫代馬就是進不去..怎么回事啊? :confused:
謝謝謝謝~~各位路過神仙~~
想請教一個FLASH問題
我做的網頁..第一頁是FLASH.然后我一段FLASH完了以后,
最后一幀是ENTER.然后我想點擊這個ENTER進入到我網頁的一個子頁面里..
是相對路徑的..但是我怎么寫代馬就是進不去..怎么回事啊? :confused:
謝謝謝謝~~各位路過神仙~~
19831110
2005-08-17, 17:25
on(release){
getURL("這里是你的文件路徑")
}
getURL("這里是你的文件路徑")
}
九章
2005-08-17, 19:57
沒用~~
說我語法錯誤~~
唉~
說我語法錯誤~~
唉~
真·大頭
2005-08-17, 20:50
你這個enter做成按鈕了嗎
19831110
2005-08-18, 08:02
要寫在mc或者button上面``
※瀟灑※
2005-08-28, 00:51
嗯. 對. 放到主場景也可.^_^
mcName.onRelease = function(){
getURL("url.htm");
}
mcName.onRelease = function(){
getURL("url.htm");
}