隨筆 - 16  文章 - 42  trackbacks - 0
          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          失業中…

          常用鏈接

          留言簿(7)

          隨筆檔案(16)

          技術Blog

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          下面是一些在Flash和使用Javascript的HTML文件直接通信的示例,每個示例都有簡略的步驟

          本文討論了3種基本的Flash/Javascript通信方式:
          Javascript 到 Flash的通信----使用Flash播放器的javascript方法
          Flash 到 Javascript的通信----使用Flash的fscommand
          Flash 到 Flash的通信----------使用本地連接對象或綜合上2種技術


          并不是所有的瀏覽器都很重視腳本.為了和Flash播放器通信,瀏覽器必須有內置的鉤子以便Flash播放器可以'監聽'.瀏覽器必須是下列的幾種:
          Netscape Navigator 3.0-4.7x, 和 Netscape 6.2或更高
          (Windows 95/98/NT/2000/XP 或 MacOS; 允許Java和LiveConnect)
          Internet Explorer 3.0 或更高
          (僅Windows 95/98/NT/2000/XP; 允許ActiveX)


          Javascript到Flash的通信

          這個例子演示了如何使用Flash的method把變量從HTML的input text 發送到該頁面中的Flash文件中.HTML input的數據通過Flash的SetVariable方法傳送到Flash文件中.

          查看示例:示例
          下載源文件: javascript_to_flash.zip(17k)

          步驟:

          Flash中
          1.新建一個文件,保存為javascript_to_flash.fla
          2.用文字工具在舞臺上創建一個文本域
          3.選擇這個文本域,在屬性面板中,從下拉列表中選擇動態文本(Dynamic Text),在變量(variable)欄填上"myVar"
          注意:最好的習慣是使用Instance,用myVar.text更改myVar的值.為了簡單起見和兼容Flash4和Flash5,我們使用的是變量名的形式.
          4.保存文件
          5.發布HTML文件和SWF文件

          Dreamweaver中
          下一步的工作轉移到Dreamweaver中了,當然也可以是其他的HTML編輯器
          1.打開上一步發布的HTML文件
          2.插入生成的SWF文件和OBJECT/EMBED標簽
          (1) Insert>Media>Flash,并選擇這個Flash
          (2) 切換到代碼視圖,我們需要修改被選中的<OBJECT>和<EMBED>標簽
          (3) 在OBJECT標簽中,插入id="myFlash"

          <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
          codebase="http://download.macromedia.com/pub/shockwave/cabs/
          flash/swflash.cab#version=5,0,0,0"
          width=366 height=142 id="myFlash">
          注意:如果你是粘貼復制代碼的話,確保刪除不必要的換行.否則可能會引起錯誤; id也可以在屬性面板里直接輸入
          (4) 在EMBED標簽中,插入name="myFlash"和swLiveConnect="true",確保沒有使用id屬性!代碼應當是這樣子的:

          <embed src="javascript_to_flash.swf" quality=high width=366 height=142
          type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?
          P1_Prod_Version=ShockwaveFlash"
          name="myFlash" swLiveConnect="true">
          </embed>

          3.創建表單域
          (1) 回到設計視圖
          (2) 插入文本域(Insert> Form Object> Text Field),如果詢問是否添加表單域,選擇是
          (3) 把文本域的HTML標簽修改成這樣:

          <input type="text" name="sendText" maxlength="45" onChange="doPassVar(this)">
          每當文本域內容發生變化時,onChange就被觸發,doPassVar()函數就被調用

          4.創建傳遞變量值的Javascript函數
          復制下面的Javascript到<head></head>標簽內

          <SCRIPT LANGUAGE=JavaScript>
          <!--
          function doPassVar(args){
          var sendText = args.value;
          window.document.myFlash.SetVariable("myVar", sendText);
          }
          //-->
          </SCRIPT>
          5.保存文件,測試一下(F12)


          Flash到Javascript的通信
          從HTML可以發送數據到Flash,反過來也可以. 這個例子演示了如何應用Flash的Fscommand來發送數據到Javascript.

          查看示例:示例2
          下載源文件: flash_to_javascript.zip(10K)

          簡要步驟:
          Flash中
          新建一個文件,保存為flash_to_javascript.fla
          創建一個文本域,設置成輸入文本(Input Text),選擇"border"以便我們能看到他,指定他的變量為inputVar
          創建一個按鈕,在按鈕上添加如下的as:

          on (release) {
          fscommand ("send_var", inputVar);
          }
          保存文件,導出HTML和SWF

          Dreamweaver中
          1.打開導出HTML文件,修改<OBJECT>和<EMBED>標簽,結果同上:
          <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
          codebase="http://download.macromedia.com/pub/shockwave/cabs/
          flash/swflash.cab#version=5,0,0,0"
          width=366 height=142 id="myFlash">

          <embed src="javascript_to_flash.swf" quality=high
          width=366 height=142
          type="application/x-shockwave-flash"

          pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?
          P1_Prod_Version=ShockwaveFlash" name="myFlash" swLiveConnect="true">
          </embed>
          2. 插入如下的Javascript到<Body>標簽內:
          <SCRIPT LANGUAGE=JavaScript>
          <!--
          var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
          function myFlash_DoFSCommand(command, args) {
          var myFlashObj = InternetExplorer ? myFlash : document.myFlash;
          alert (args);
          }
          if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 &&
          navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
          document.write('<SCRIPT LANGUAGE=VBScript\> \n');
          document.write('on error resume next \n');
          document.write('Sub myFlash_FSCommand(ByVal command, ByVal args)\n');
          document.write(' call myFlash_DoFSCommand(command, args)\n');
          document.write('end sub\n');
          document.write('</SCRIPT\> \n');
          }
          //-->
          </SCRIPT>


          Flash和Flash的通信
          通過上面兩種方法的混和使用,同一HTML中兩個或者更多的Flash直接可以相互傳送消息. 從一個flash使用fscommand傳送消息給Javascript,使用Flash的Javascript methods把消息傳給另外一個flash

          詳細的看這里:Flash影片之間的通信示例

          從Flash MX開始,local connection對象可以用來在flash之間傳送消息. 這使得同一HTML中的或者位于兩個瀏覽器窗口中的兩個flash影片可以相互發送消息,而不必使用Javascript或者fscommand
          詳細的看這里:在Flash MX中使用local connection對象(英文)

          本站的localConnection教程:http://www.blueidea.com/tech/multimedia/2003/739.asp

          附可控制Flash Player的Javascript方法一覽表:

          Play() ---------------------------------------- 播放動畫
          StopPlay()------------------------------------停止動畫
          IsPlaying()----------------------------------- 動畫是否正在播放
          GotoFrame(frame_number)---------------- 跳轉到某幀
          TotalFrames()------------------------------- 獲取動畫總幀數
          CurrentFrame()------------------------------回傳當前動畫所在幀數-1
          Rewind()-------------------------------------使動畫返回第一幀
          SetZoomRect(left,top,right,buttom)-------放大指定區域
          Zoom(percent)------------------------------改變動畫大小
          Pan(x_position,y_position,unit)------------使動畫在x,y方向上平移
          PercentLoaded()----------------------------返回動畫被載入的百分比
          LoadMovie(level_number,path)----------- 加載動畫
          TGotoFrame(movie_clip,frame_number)- movie_clip跳轉到指定幀數
          TGotoLabel(movie_clip,label_name)------ movie_clip跳轉到指定標簽
          TCurrentFrame(movie_clip)--------------- 回傳movie_clip當前幀-1
          TCurrentLabel(movie_clip)-----------------回傳movie_clip當前標簽
          TPlay(movie_clip)---------------------------播放movie_clip
          TStopPlay(movie_clip)----------------------停止movie_clip的播放
          GetVariable(variable_name)-----------------獲取變量
          SetVariable(variable_name,value)-----------變量賦值
          TCallFrame(movie_clip,frame_number)---call指定幀上的action
          TCallLabel(movie_clip,label)----------------call指定標簽上的action
          TGetProperty(movie_clip,property)--------獲取movie_clip的指定屬性
          TSetProperty(movie_clip,property,number)-設置movie_clip的指定屬性

          flash與javascript交互演示:http://www.v-ec.com/dh20156/code/jsflash/fj.htm

          javascript與flash交互演示:http://www.v-ec.com/dh20156/code/jsflash/jf.htm

          posted on 2007-06-22 21:01 梅雪香 閱讀(6180) 評論(2)  編輯  收藏

          FeedBack:
          # re: 3種基本的Flash/Javascript通信方式 2009-05-21 22:17 魔獸世界私服
          好東西,學習了,,,,講得好啊,  回復  更多評論
            
          # re: 3種基本的Flash/Javascript通信方式 2009-12-08 19:06 shard
          多謝  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 大厂| 治多县| 讷河市| 丘北县| 商河县| 广宗县| 旺苍县| 温泉县| 北京市| 鹤岗市| 滕州市| 合水县| 谢通门县| 大化| 兴和县| 绥德县| 石林| 三原县| 松潘县| 江西省| 旌德县| 稷山县| 景洪市| 三原县| 江永县| 怀宁县| 额敏县| 武陟县| 大庆市| 石渠县| 阳泉市| 泉州市| 钟山县| 青海省| 鹤岗市| 通化县| 铜鼓县| 望江县| 丰城市| 响水县| 安吉县|