本論壇嚴禁發佈 任何有關成人的資訊
不論短片、圖片、文字或連結,違者立即停止帳號
總版規V2.0
權限列表V2.0 其他論壇設定V2.0
請各位發廣告的會員留意
發相同廣告多於一篇,將刪除該會員所有廣告。
發新話題
打印

Flash 8 攝像頭拍照

Flash 8 攝像頭拍照

開始做法:
第一步:在庫中建立一個視頻元件,類型選擇:視頻(受 ActionScript 控制)。
第二步:將視頻元件拖到場景中,並調整尺寸到想要的大小。並起名為「my_video」
第三步:在時間軸中粘入下邊的 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 發現有問題,拍出來照片只有 160x120 的區域有圖像。並且圖像變形了。
什麼地方出了問題呢?@#$%^&* (此處省略2小時 debug 時間……)
最後發現 my_video 複製到場景中調整大小時並不是改變 my_video.width 及 my_video.height 屬性,而是改變 my_video._width 及 my_video._height 屬性。原有視頻元件的尺寸只有 160x120 。這就相當於將 my_video 作了形變。而 BitmapData.draw() 是不會考慮源元件的形變的。用官方的說法是:

源 MovieClip 對像不對此調用使用其任何舞台中轉換。該源 MovieClip 對像會被視為存在於庫或文件中,沒有矩陣轉換、沒有顏色轉換,也沒有混合模式。如果您希望通過使用影片剪輯自身的 transform 屬性來繪製影片剪輯,則可以使用它的 Transform 對像來傳遞各種 transformation 屬性。

我開始沒注意他給出的解決辦法。我想既然 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);
};
這下照片是想要的大小了,而且圖像也沒有了變形。但發現圖像沒有攝像頭顯示的清晰。
想了一下,那是當然,draw() 不考慮源元件的形變,draw時my_video 被當作 160x120 來draw了。 :mad:
那能不能通過改變 my_video.width 及 my_video.height 屬性來改變 my_video 的尺寸而不是將 my_video 作形變呢?不能!!!my_video.width 及 my_video.height 屬性是只讀屬性。

解決方法:
第一步:用視頻編輯軟件製作一個 180x240 尺寸的1貞的白色 mov 視頻文件。
第二步:用 Macromedia Flash 8 Video Encoder 將mov視頻文件轉為 flv 視頻文件。
第三步:在庫中建立一個視頻元件,類型選擇:嵌入(與時間軸同步)。
第四步:將視頻元件拖到場景中,並起名為「my_video」
    Testing 發現 my_video.width 及 my_video.height 屬性為 180x120 。阿哈 :cool:
第五步:在時間軸中粘入下邊的 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);
};
好了,現在所有問題都解決了。
發新話題
重要聲明:本論壇是以即時上載留言的方式運作,曼格論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。曼格論壇有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。