不好說,給你轉(zhuǎn)個教程吧。后臺的話還是要JS來調(diào)用。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),懷化企業(yè)網(wǎng)站建設(shè),懷化品牌網(wǎng)站建設(shè),網(wǎng)站定制,懷化網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,懷化網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
Flash是可以輕松與網(wǎng)頁交互數(shù)據(jù)的,不然為何Flash會有這么大的生命力呢?只是這樣編程比較麻煩而已,又要調(diào)試Flash,然后又要放到服務(wù)器上調(diào)試。不過這樣的方式能夠收到很好的效果,F(xiàn)lash強(qiáng)大的繪圖功能、圖形功能,能夠與網(wǎng)頁的參數(shù)傳遞聯(lián)系起來,配合后端的服務(wù)器語言,能夠收到很大效果。
下面舉個例子用ActionScript3.0來說明這個問題,如下圖:
IE6效果:
火狐效果:
一旦瀏覽器裝上Flash插件,F(xiàn)lash就能夠輕松與網(wǎng)頁互通消息。無論在任何瀏覽器,現(xiàn)在基本上用戶都會裝上Flash組件的,可以這樣說,幾乎就沒有不裝Flash組件的瀏覽器。
一、Flash部分
1、首先,新建一個ActionScript3.0的Flash,新建之后就保存為webPage.fla,這次的Flash無須這么大的尺寸,否則網(wǎng)頁中會有很多的留白,設(shè)置大小為500x100px就可以了。播放器的版本按照默認(rèn)就可以,因?yàn)橛脩舻臑g覽器Flash組件會自動更新的。這個不用管。
2、通過窗口-組件,或者Ctrl+F7打開組件面板,利用自帶的按鈕、標(biāo)簽文本、輸入框組件布置界面。
3、拖出如下的界面,設(shè)置各個組件的屬性如下,設(shè)置其text值,也就是要顯示的文字,為部分要控制的組件設(shè)置實(shí)例名稱,也就是Id,比如按鈕設(shè)置成Button1,輸入框設(shè)置成EditField1,一會兒要給網(wǎng)頁JavaScript控制的標(biāo)簽文本的text值清空,其實(shí)例名稱為Label1。
4、之后點(diǎn)擊第一幀,打開動作面板,或者點(diǎn)擊F9,寫入如下的代碼:
[javascript] view plain copy print?
import?flash.external.ExternalInterface;
flash.system.Security.allowDomain("*");
flash.system.Security.allowInsecureDomain("*");//設(shè)置允許所有網(wǎng)站都允許Flash與網(wǎng)頁之間交互
Button1.addEventListener("click",function(){//點(diǎn)擊Button1這個按鈕
ExternalInterface.call("show",EditField1.text);
//則調(diào)用JavaScript中的function?show(message){}函數(shù),其中message這個參數(shù)值,由EditField1輸入的東西填充
});
function?JavaScriptShow1(message1){
//定義一個函數(shù),一旦這個函數(shù)觸發(fā)則把傳來的值,填充Label1這個標(biāo)簽文本
Label1.text=message1;
}
ExternalInterface.addCallback("JavaScriptShow1",JavaScriptShow1);
//注冊JavaScriptShow1這個函數(shù),其對外名稱為JavaScriptShow1,一般都應(yīng)該相同的
//網(wǎng)頁調(diào)用Flash對象的JavaScriptShow1的方法,則相當(dāng)于調(diào)用ActionScript中的JavaScriptShow1(message1){}函數(shù)
import flash.external.ExternalInterface; flash.system.Security.allowDomain("*"); flash.system.Security.allowInsecureDomain("*");//設(shè)置允許所有網(wǎng)站都允許Flash與網(wǎng)頁之間交互 Button1.addEventListener("click",function(){//點(diǎn)擊Button1這個按鈕 ExternalInterface.call("show",EditField1.text); //則調(diào)用JavaScript中的function show(message){}函數(shù),其中message這個參數(shù)值,由EditField1輸入的東西填充 }); function JavaScriptShow1(message1){ //定義一個函數(shù),一旦這個函數(shù)觸發(fā)則把傳來的值,填充Label1這個標(biāo)簽文本 Label1.text=message1; } ExternalInterface.addCallback("JavaScriptShow1",JavaScriptShow1); //注冊JavaScriptShow1這個函數(shù),其對外名稱為JavaScriptShow1,一般都應(yīng)該相同的 //網(wǎng)頁調(diào)用Flash對象的JavaScriptShow1的方法,則相當(dāng)于調(diào)用ActionScript中的JavaScriptShow1(message1){}函數(shù)
5、此時Flash的部分完畢,選擇文件-發(fā)布,打開Flash保存的文件夾。其實(shí)上面的內(nèi)容比《【ActionScript】ActionScript3.0的Helloworld》(點(diǎn)擊打開鏈接)沒復(fù)雜多少,只是多了兩句注冊ActionScript與JavaScript的交互的語句而已。
二、網(wǎng)頁的部分
1、之后,要把這個Flash布置到網(wǎng)頁上。Flash發(fā)布之后,會在網(wǎng)頁中生成兩個東西一個html與一個swf,核心文件是.swf文件,html文件不能照搬的,只能借鑒其中的代碼,否則不能兼容野狐禪、谷歌等瀏覽器。
這個由Flash生成webPage.html頁面,可以借鑒的代碼如下:
2、由于Flash禁用了Flash調(diào)用本地文件的功能。你只能把這個webPage.swf拷貝到你的服務(wù)器上調(diào)試。之后在服務(wù)器上新建一個.html的頁面,這里以swf.html與webPage.swf同目錄做例子,如果不同例子請自己設(shè)置好絕對路徑,假設(shè)是swf.html,swf.html的HTML布局如下:
[html] view plain copy print?
!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Strict//EN"?""
html?xmlns=""?lang="zh-CN"?xml:lang="zh-CN"
head
titlewebPage/title
meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/
/head
body
Flash與網(wǎng)頁交互
input?type="text"?id="text1"?/
button?onclick="toFlash()"發(fā)信息給Flash!/button
!--這段代碼的部分可以在發(fā)布出來的html中截取--
div
object?classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"?width="500"?height="100"?id="webPage"?align="middle"!--這里的id是為了flash給IE系列瀏覽器控制--
!--對IE有效的代碼--
param?name="movie"?value="webPage.swf"?/!--為IE瀏覽器指明flash的路徑--
param?name="quality"?value="high"?/
param?name="bgcolor"?value="#ffffff"?/
param?name="play"?value="true"?/
param?name="loop"?value="true"?/
param?name="wmode"?value="window"?/
param?name="scale"?value="showall"?/
param?name="menu"?value="true"?/
param?name="devicefont"?value="false"?/
param?name="salign"?value=""?/
param?name="allowScriptAccess"?value="always"?/!--這里一定要設(shè)置成always,打開Javascript與Actionscript的交互權(quán)限--
!--對野狐禪、谷歌等有效的代碼--
embed?src="webPage.swf"?width="500"?height="100"?id="webPage"/embed!--這里的id是為了flash給野狐禪、谷歌等瀏覽器控制,src的值為野狐禪、谷歌等瀏覽器指明flash的路徑--
/object
/div
/body
/html
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "" html xmlns="" xml:lang="zh-CN" head titlewebPage/title meta http-equiv="Content-Type" content="text/html; charset=utf-8" / /head body Flash與網(wǎng)頁交互 input type="text" id="text1" / button onclick="toFlash()"發(fā)信息給Flash!/button !--這段代碼的部分可以在發(fā)布出來的html中截取-- div object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="100" id="webPage"!--這里的id是為了flash給IE系列瀏覽器控制-- !--對IE有效的代碼-- param name="movie" value="webPage.swf" /!--為IE瀏覽器指明flash的路徑-- param name="quality" value="high" / param name="bgcolor" value="#ffffff" / param name="play" value="true" / param name="loop" value="true" / param name="wmode" value="window" / param name="scale" value="showall" / param name="menu" value="true" / param name="devicefont" value="false" / param name="salign" value="" / param name="allowScriptAccess" value="always" /!--這里一定要設(shè)置成always,打開Javascript與Actionscript的交互權(quán)限-- !--對野狐禪、谷歌等有效的代碼-- embed src="webPage.swf" width="500" height="100" id="webPage"/embed!--這里的id是為了flash給野狐禪、谷歌等瀏覽器控制,src的值為野狐禪、谷歌等瀏覽器指明flash的路徑-- /object /div /body /html
之后的JavaScript布局,是ActionScript與JavaScript交互的核心,代碼如下:
[javascript] view plain copy print?
script?type="text/javascript"
//給ActionScript所調(diào)用的JavaScript函數(shù),message這個參數(shù)被ActionScript傳遞過來的值所填充
function?show(message){
alert(message);
}
//獲取Flash對象的函數(shù),不同的對象有不同的方法。為了兼容,只能這樣寫。
function?getFlash(movieName){
if?(window.document[movieName])?{
window.document[movieName];
}
if?(navigator.appName.indexOf("Microsoft?Internet")?==?-1)?{
if?(document.embeds??document.embeds[movieName])
return?document.embeds[movieName];
}
else?{
return?document.getElementById(movieName);
}
}
//獲取Flash對象
var?flash1?=?getFlash('webPage');
//JavaScript調(diào)用ActionScript中注冊為JavaScriptShow1的函數(shù)
function?toFlash(){
var?text1?=?document.getElementById("text1").value;
flash1.JavaScriptShow1(text1);
}
/script
script type="text/javascript" //給ActionScript所調(diào)用的JavaScript函數(shù),message這個參數(shù)被ActionScript傳遞過來的值所填充 ? ? function show(message){ ? ? ? ? ? ? alert(message); ? ? } ? ? ?//獲取Flash對象的函數(shù),不同的對象有不同的方法。為了兼容,只能這樣寫。 ? ? function getFlash(movieName){ ? ? ? ? if (window.document[movieName]) { ? ? ? ? ? ? window.document[movieName]; ? ? ? ? } ? ? ? ? if (navigator.appName.indexOf("Microsoft Internet") == -1) { ? ? ? ? ? ? if (document.embeds document.embeds[movieName]) ? ? ? ? ? ? ? ? ?return document.embeds[movieName]; ? ? ? ? } ? ? ? ? else { ? ? ? ? ? ? return document.getElementById(movieName); ? ? ? ? } ? ? } ? ? ?//獲取Flash對象 ? ? var flash1 = getFlash('webPage'); ? ? ?//JavaScript調(diào)用ActionScript中注冊為JavaScriptShow1的函數(shù) ? ? function toFlash(){ ? ? ? ? var text1 = document.getElementById("text1").value; ? ? ? ? flash1.JavaScriptShow1(text1); ? ? } /script
三、總結(jié)
綜上所述,webPage.swf與swf.html的交互如下圖:
loader = new LoadVars();
loader.load("server.php?time="+new Date().getTime()); //向ASP取得資料的連接, 這里我不使用Math.random是因?yàn)檫@樣有個缺點(diǎn)loader.onLoad = function(success) {
if (success) {
display.htmlText = loader.Result; //loader.Result是ASP傳遞回來的資料} };
} submit.onRelease = function() { //當(dāng)按鈕按下放開的時候if (name.text.length == 0) { //這里是判斷輸入框是否為空Selection.setFocus(name); //把光標(biāo)設(shè)定在指定的輸入框} else if (msg.text.length == 0) { //同上
Selection.setFocus(msg);} else {status.text = ""; //這個動態(tài)文本你們可以自己設(shè)定sender = new LoadVars();
sender.onLoad = function(success) {
if (success) {
if (sender.Result == "Success" ) { //傳遞回來的訊息為Success時status.text = "記錄成功...";
name.text = msg.text=""; //清空輸入欄位loadData(); //重新刷新資料} else {
status.text = "記錄失敗, 請再次嘗試...";
} delete sender; //養(yǎng)成習(xí)慣把LoadVars變量刪除以釋放內(nèi)存空間} };
sender.load("server.php?action=savename="+name.text+"msg="+msg.text, sender, "POST" );//和sendAndLoad的功用一樣, 傳送出變量并等待資料傳回, 傳回的資料會在onLoad中截取} };
loadData(); //在一開始載入資料庫中的資料 PHP部分 :
無法直接抓取的,因?yàn)椴煌趆tml5的明文顯示,
flash的內(nèi)容編譯成了abc碼。
php5以上的話可以用simplexml非常簡單(發(fā)送的時候as3中的發(fā)送類型為"text/xml")
$xml = $GLOBALS ["HTTP_RAW_POST_DATA"];
$fp = fopen("myxml.xml", "w");
fwrite($fp, $xml);
fclose($fp);
flash 可以讀取由php 生成的txt,xml
php可以接收flash post 或get的請求
用Internet臨時文件的功能就能實(shí)現(xiàn),下面是我回答過一個朋友關(guān)于怎樣下載Flash游戲的問題,你完全可以參考這個辦法。
其實(shí),不用FlashGet也是完全可以下載到黃金礦工的。
下面跟著我一步一步做吧!
一,首先登錄 http //www 4399 com/ 網(wǎng)站,這個是比較有名的在線小游戲網(wǎng)站。
二,進(jìn)入后,在左邊的排行榜里,你能找到“黃金礦工中文版”,點(diǎn)擊進(jìn)入。
三,進(jìn)入黃金礦工的頁面后,它是在線玩的,不支持直接下載,點(diǎn)擊開始玩這個游戲,玩上一會吧。
下面真正的技巧在這里!
四,退出游戲,但千萬不要關(guān)閉IE瀏覽器。
五,點(diǎn)擊IE瀏覽器窗口上面的“工具”、“Internet選項”。
六,在“Internet”選項窗口中,在“Internet臨時文件”區(qū)域,點(diǎn)“設(shè)置”按鈕。
七,在彈出的“設(shè)置”窗口中,點(diǎn)“查看文件”按鈕。
八,這時會彈出一個窗口,這個窗口里顯示的就是你上網(wǎng)時產(chǎn)生的臨時文件,找到名字叫“1[1].swf”的文件,選中,點(diǎn)鼠標(biāo)右鍵,再左鍵點(diǎn)“復(fù)制”。
九,打開硬盤里的任意一個文件夾,例如打開“我的文檔”,在窗口空白處點(diǎn)右鍵,左鍵點(diǎn)“粘貼”就行了。
十,這樣,你就可以關(guān)閉IE瀏覽器,斷開網(wǎng)絡(luò),放心的運(yùn)行“1[1].swf”了,這個文件就是黃金礦工中文版!你可以將它改名。
IE瀏覽器可以打開它!
這個方法其實(shí)就是利用Internet臨時文件夾的功能,所有在線玩的小游戲、在線觀看的視頻片段、在線聽的歌曲,都是先下載到Internet臨時文件夾中運(yùn)行的,退出IE后,這些臨時文件往往會自動刪除,所以,在復(fù)制臨時文件夾里的東西時,不要關(guān)閉IE。
注意事項:
一般進(jìn)入Internet臨時文件夾時,里面會有非常多的東西,要找自己想要的文件比較困難,以黃金礦工為例,它是swf格式的,那么Internet臨時文件夾里會有很多swf格式的文件,哪一個才是呢?
所以,最好的辦法,就是在玩在線小游戲之前,先按照上面的方法,在“Internet”選項窗口中,在“Internet臨時文件”區(qū)域,點(diǎn)“刪除文件”按鈕,再確定。把臨時文件夾里的東西事先全部清空。
然后,再進(jìn)入小游戲,成功運(yùn)行后,退出,馬上到Internet臨時文件夾里,這樣就能很容易地找到自己想要的東西了。
用這個方法,你可以下載很多在線才能玩的東西,還有,包括很多要收費(fèi)才能下載、但卻可以在線試聽的手機(jī)鈴聲,是不是很爽!