想要在Flash CS3底下開發Adobe AIR嗎?想要「Ctrl+Enter」就發佈成AIR嗎?
官方已經釋出 AIR:Flash CS3 Professional Update,趕緊去下載來試試看吧~
目前是beta 1版~ 我想等到Adobe AIR正式版問世後~ 這也應該會同步發佈成正式版的~
文件說明:
blog.Ring.idv.tw
想要在Flash CS3底下開發Adobe AIR嗎?想要「Ctrl+Enter」就發佈成AIR嗎?
官方已經釋出 AIR:Flash CS3 Professional Update,趕緊去下載來試試看吧~
目前是beta 1版~ 我想等到Adobe AIR正式版問世後~ 這也應該會同步發佈成正式版的~
文件說明:
2007-08-21 10:20:23 | Add Comment
In Servlet, Flash, ActionScript 3.0
.2008/12/10 新增範例下載
今天試著用Flash CS3寫一個Flash Webcam 線上拍照存檔的範例~
大致上分成兩部份來處理~一部份為Flash的前端,用來截取Webcam的畫面並將它存進BitmapData中,以供透過URLRequest來上傳處理~
而這部份比較關鍵的是,我們利用「as3corelib」所提供的「JPGEncoder」來進行壓縮,以增進傳送速度~
想當然而,後端就是直接將它讀出並存進一個影像檔即可。
程式碼如下所示:
ActionScript 3
import com.adobe.images.JPGEncoder; var camera:Camera = Camera.getCamera("0"); camera.setMode(320,240,30); var video = new Video(320, 240); video.attachCamera(camera); stage.addChild(video); stage.addEventListener(MouseEvent.MOUSE_DOWN,clickHandler); function clickHandler(event:MouseEvent) { var bd:BitmapData = new BitmapData(320, 240); bd.draw(video); var encoder:JPGEncoder = new JPGEncoder(100); var bytes:ByteArray = encoder.encode(bd); var req:URLRequest = new URLRequest("http://localhost/WebCamHandler.as3"); req.data = bytes; req.method = URLRequestMethod.POST; req.contentType = "application/octet-stream"; var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler); loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.load(req); } function completeHandler(event:Event):void { trace("上傳成功"); } function errorHandler(event:IOErrorEvent):void { trace("上傳失敗"); }
Servlet
import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class WebCamHandler extends HttpServlet { private String base; public void init(ServletConfig sc) throws ServletException { ServletContext sco = sc.getServletContext(); base = sco.getRealPath("/"); } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { int readed; try { String filePath = base+new Date().getTime()+".jpg"; BufferedInputStream bis = new BufferedInputStream(req.getInputStream()); FileOutputStream fos = new FileOutputStream(new File(filePath)); byte[] bytes = new byte[2048]; while((readed=bis.read(bytes)) != -1) { fos.write(bytes, 0, readed); } fos.close(); bis.close(); } catch (Exception e) { e.printStackTrace(); } } }
範例下載
2007-08-19 15:19:20 | Comments (17)
上圖是SWF and FLV File Format Specification (Version 9)所描述的DoABC Tag,從圖上可以知道此Tag裡頭包含了「Flags」和「ABCData」,然而真正在剖析時,似乎並不是那麼一回事~
Flash CS3(AS3)
Flex Showcase 1(已經過解壓處理)
Flex Showcase 2(已經過解壓處理)
上述三張圖的「紅色」部份是DoABC Tag所包含的「Header」、「Length」和「Flags」,而「藍色」部份則是AS3 bytecode的「minor_version」和「major_version」,重點在於「綠色」部份卻沒有任何文件的說明,然而從Flex Showcase 1,2卻可以發現他所包含的資訊卻是「frame1」的字元,所以此部份的格式型態應該屬於「String」,也就是說在「Flags」之後緊接著的是「frame編號的資訊」,最後才是「ABCData」,但這部份仍屬於筆者的猜測。
2007-08-03 17:19:53 | Add Comment
ActionScript Virtual Machine 2 (AVM2) Overview這份文件中的第66頁,描述此「greaterequals」instruction,但其底下的「Format」、「Forms」是有錯誤的~
如下所示:
錯誤
[Format]:greaterthan [Forms]:greaterthan = 175 (0xaf)
更正
[Format]:greaterequals [Forms]:greaterequals = 176 (0xb0)
參考文件:AVM2 instructions
2007-08-02 18:21:27 | Add Comment
In Flash, ActionScript, ActionScript 3.0
How to create pop-up browser windows in Flash
這篇技術教學會教導你如何在瀏覽器內利用Flash來開啟視窗~
舉個例子來說,以往我們都會利用「getURL()」來達成這樣的功能,但在AS3.0就必須改用「navigateToURL()」,或是採用執行JavaScript的方式來達成,諸如此類的應用都可以在這篇教學中找到你的答案!
2007-08-01 14:34:06 | Add Comment