Flash教程:利用 Flash 8 制作攝像頭拍照功能_Flash教程
推薦:Flash實(shí)例教程:用Flash簡(jiǎn)單制作相冊(cè)[前言]1、在閃吧論壇上看到了高手tiger_0309制作的其中一個(gè)相冊(cè),簡(jiǎn)單但效果不錯(cuò),仔細(xì)研究了一番,“采他山之玉,攻己山之石”,并作了一些改動(dòng):①代碼寫在
前幾天幫朋友做一個(gè)東西用到的 code 。
因?yàn)楹芫貌蛔?Flash coding 了。所以也就很少關(guān)心 Flash 8 的新的 Class。但聽(tīng)大家說(shuō)過(guò)有這個(gè)功能。本想從網(wǎng)上找段教程或 code 來(lái)做�?墒前l(fā)現(xiàn)國(guó)內(nèi)還沒(méi)有類似的。就只能自己動(dòng)手豐衣足食了。
開(kāi)始做法:
第一步:在庫(kù)中建立一個(gè)視頻元件,類型選擇:視頻(受 ActionScript 控制)。
第二步:將視頻元件拖到場(chǎng)景中,并調(diào)整尺寸到想要的大小。并起名為“my_video”
第三步:在時(shí)間軸中粘入下邊的 code。
var my_video:Video;
my_video._x=100;
my_video._y=40;
var my_cam:Camera = Camera.get();
my_cam.setMode(180, 140, 10, true);
my_video.attachVideo(my_cam);
shutter.onRelease = function() {
myBitmap = new flash.display.BitmapData(180, 240, true, 0);
myBitmap.draw(my_video);
var tempObj = _root.createEmptyMovieClip("photo", 100);
tempObj._x = 300;
tempObj._y = 40;
tempObj.attachBitmap(myBitmap, 1, "always", true);
};
Testing 發(fā)現(xiàn)有問(wèn)題,拍出來(lái)照片只有 160x120 的區(qū)域有圖像。并且圖像變形了。 :eek:
什么地方出了問(wèn)題呢?@#$%^&* (此處省略2小時(shí) debug 時(shí)間……)
最后發(fā)現(xiàn) my_video 復(fù)制到場(chǎng)景中調(diào)整大小時(shí)并不是改變 my_video.width 及 my_video.height 屬性,而是改變 my_video._width 及 my_video._height 屬性。原有視頻元件的尺寸只有 160x120 。這就相當(dāng)于將 my_video 作了形變。而 BitmapData.draw() 是不會(huì)考慮源元件的形變的。用官方的說(shuō)法是:
QUOTE:
源 MovieClip 對(duì)象不對(duì)此調(diào)用使用其任何舞臺(tái)中轉(zhuǎn)換。該源 MovieClip 對(duì)象會(huì)被視為存在于庫(kù)或文件中,沒(méi)有矩陣轉(zhuǎn)換、沒(méi)有顏色轉(zhuǎn)換,也沒(méi)有混合模式。假如您希望通過(guò)使用影片剪輯自身的 transform 屬性來(lái)繪制影片剪輯,則可以使用它的 Transform 對(duì)象來(lái)傳遞各種 transformation 屬性。
我開(kāi)始沒(méi)注重他給出的解決辦法。我想既然 draw() 不考慮源元件的形變,那只能自己在輸出的照片元件上想辦法做形變了。于是有了這段 code。
var my_video:Video;
my_video._x=100;
my_video._y=40;
var my_cam:Camera = Camera.get();
my_cam.setMode(180, 140, 10, true);
my_video.attachVideo(my_cam);
shutter.onRelease = function() {
myBitmap = new flash.display.BitmapData(160, 120, true, 0);
myBitmap.draw(my_video);
var tempObj = _root.createEmptyMovieClip("photo", 100);
tempObj._x = 300;
tempObj._y = 40;
tempObj._width= 180;
tempObj._height = 240;
tempObj.attachBitmap(myBitmap, 1, "always", true);
};
這下照片是想要的大小了,而且圖像也沒(méi)有了變形。但發(fā)現(xiàn)圖像沒(méi)有攝像頭顯示的清楚。
想了一下,那是當(dāng)然,draw() 不考慮源元件的形變,draw時(shí)my_video 被當(dāng)作 160x120 來(lái)draw了。 :mad:
那能不能通過(guò)改變 my_video.width 及 my_video.height 屬性來(lái)改變 my_video 的尺寸而不是將 my_video 作形變呢?不能�。�!my_video.width 及 my_video.height 屬性是只讀屬性。
解決方法:
第一步:用視頻編輯軟件制作一個(gè) 180x240 尺寸的1貞的白色 mov 視頻文件。
第二步:用 Macromedia Flash 8 Video Encoder 將mov視頻文件轉(zhuǎn)為 flv 視頻文件。
第三步:在庫(kù)中建立一個(gè)視頻元件,類型選擇:嵌入(與時(shí)間軸同步)。
第四步:將視頻元件拖到場(chǎng)景中,并起名為“my_video”
Testing 發(fā)現(xiàn) my_video.width 及 my_video.height 屬性為 180x120 。阿哈 :cool:
第五步:在時(shí)間軸中粘入下邊的 code 。
var my_video:Video;
my_video.clear()
my_video._x=100;
my_video._y=40;
var my_cam:Camera = Camera.get();
my_cam.setMode(180, 140, 10, true);
my_video.attachVideo(my_cam);
shutter.onRelease = function() {
myBitmap = new flash.display.BitmapData(160, 120, true, 0);
myBitmap.draw(my_video);
var tempObj = _root.createEmptyMovieClip("photo", 100);
tempObj._x = 300;
tempObj._y = 40;
tempObj._width= 180;
tempObj._height = 240;
tempObj.attachBitmap(myBitmap, 1, "always", true);
};
好了,現(xiàn)在所有問(wèn)題都解決了。 ;)
分享:Flash教程:四步制作的登錄閃吧窗口[前言]:初學(xué)者寫的教程供初學(xué)者使用,讓我們一起成為高手吧!寫本教程得到了閃吧成員”討厭大師“的幫助,在此表示感謝![要求]:1、打開(kāi)文件,光標(biāo)自動(dòng)出現(xiàn)
- as中禁用ESC鍵
- AS3.0 圖片變黑白 圖片彩色變黑白代碼
- flash as3.0 跨域的解決辦法
- 模板無(wú)憂FLASH透明代碼
- Flash教你制作卡通MM眨眼睛動(dòng)畫(huà)
- Flash從零開(kāi)始學(xué)習(xí)創(chuàng)建單選按鈕
- Flash繪制小龍與花插畫(huà)場(chǎng)景
- Flash程序的測(cè)試方法
- Flash CS4文字顏色緩動(dòng)特效
- 網(wǎng)頁(yè)中演示類FLASH動(dòng)畫(huà)制作規(guī)范
- Flash CS3循環(huán)背景的運(yùn)用技巧
- Flash鼠繪技巧教你制作紅綠色的樹(shù)葉
- 相關(guān)鏈接:
- 教程說(shuō)明:
Flash教程-Flash教程:利用 Flash 8 制作攝像頭拍照功能
。