JS+FLASH 参数传递 个人见解

2005-12-14 15:29:16

[原创]JS+FLASH 参数传递 个人见解 看过了很多JS+FLASH的特效。也有很多的朋友问这个方面的问题。很多东西我也不懂,我也不是学程序出身的。不知道他们之间的参数、数据传递到底靠的是什么。但是个人觉得并非AS和ASP这样的程序起关键作用。他们无非是完成自己的功能而已,这样FLASH可以方便的读取和传递数据,从而达到相应的目的! 闲话就不说了。以前我写过这个方面的东西,今天我不妨把他们都归纳一下,大家一起探讨研究。希望能让FLASH的灵活性更好…… (一)IE地址栏传递法 在本页内,如何让FLASH读取到URL中的参数,经过研究得到了一下的方法!所以拿出来跟大家分享一下,AS区这个应该还不多! 具体的说一下: 比如你打开一个地址:http://210.83.30.205/flash/aaa.asp?aaa=sdf 这个地址页面里有一个FLASH,这个FLASH里有一个动态文本框,问题就出来了——如何让这个文本框显示地址栏中的参数(至于读取这个参数的用处我就不多说了) 方法如下: <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="550" height="400" id="aaa" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="aaa.swf?<%="aaa="&request.querystring("aaa")%>" /> <param name="quality" value="high" /> <param name="bgcolor" value="#333333" /> <embed src="aaa.swf" quality="high" bgcolor="#333333" width="550" height="400" name="aaa" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> 其实就是在FLASH里,把value的值该一下,如果你trace(_url)一下就知道,FLASH的地址就是http://210.83.30.205/flash/aaa.swf?aaa=sdf 好了 ,问题说完了,方法也讲完了!怎么用,有什么用途,你会慢慢发现的哦!…… 对了原文件也给大家吧! 点击浏览该文件 (二)HTML文本框传递法 今天刚刚整理的: 步骤: >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://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="200" height="150" id="myFlash" align="middle"> 注意:如果你是粘贴复制代码的话,确保删除不必要的换行.否则可能会引起错误; id也可以在属性面板里直接输入 (4) 在EMBED标签中,插入name="myFlash"和swLiveConnect="true",确保没有使用id属性!代码应当是这样子的: <embed src="javascript_to_flash.swf" quality="high" bgcolor="#003463" width="200" height="150" swLiveConnect="true" name="myFlash" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> 3.创建表单域 (1) 回到设计视图 (2) 插入文本域(Insert> Form Object> Text Field),如果询问是否添加表单域,选择是 (3) 把文本域的HTML标签修改成这样: <input type="text" name="sendText" maxlength="45" onkeyup="doPassVar(this)"> 或者选用: <textarea name="sendText" onkeyup="doPassVar(this)" rows="1" cols="42"></textarea> 每当文本域内容发生变化时,onkeyup就被触发,doPassVar()函数就被调用 4.创建传递变量值的Javascript函数 复制下面的Javascript到<head></head>标签内 <SCRIPT LANGUAGE=JavaScript> <!-- function doPassVar(args){ var sendText = args.value; window.document.myFlash.SetVariable("myVar", sendText); } file://--> </SCRIPT> 5.保存文件,测试一下(F12) HTML完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";'" target="_blank" >http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>javascript_to_flash</title> <SCRIPT LANGUAGE=JavaScript> <!-- function doPassVar(args){ var sendText = args.value; window.document.myFlash.SetVariable("myVar", sendText); } file://--> </SCRIPT> </head> <body bgcolor="#003463"> <table width="200" border="0" align="center"> <tr> <td> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="200" height="150" id="myFlash" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="javascript_to_flash.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#003463" /> <embed src="javascript_to_flash.swf" quality="high" bgcolor="#003463" width="200" height="150" swLiveConnect="true" name="myFlash" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> </td> </tr> </table> <FORM METHOD=POST ACTION=""> <div align="center"><font color="#FFFFFF">请输入:</font> <textarea name="sendText" onkeyup="doPassVar(this)" rows="1" cols="42"></textarea> </div> </FORM> <p align="left"> <font color="ffffff" face="宋体" > </font></p> </body> </html> 原文件如下: [url=http://bbs.flash8.net/bbs/viewFile.asp?Boardid=10&ID=109893]下载[/url] ////////////////////// 以下是网上搜集 1,先在flash的按钮上添加代码: 首页: on (release) { fscommand("sethomepage", "http://www.flash8.net";; } 收藏夹: on (release) { fscommand("addfavorite", "http://www.flash8.net|闪吧"); } 然后在发布设置中选择flash with fscommand,发布成html 2,修改html: 找到 // handle all the the fscommand messages in a flash movie function sethomepage_dofscommand(command, args) { } 这一段,修改成: // handle all the the fscommand messages in a flash movie function sethomepage_dofscommand(command, args) { var sethomepageobj = internetexplorer ? sethomepage : document.sethomepage; if (command == "sethomepage") { document.l inks[0].style.behavior = "url(#default#homepage)"; document.l inks[0].sethomepage(args); } else if (command == "addfavorite") { args = args.split("|"); window.external.addfavorite(args[0], args[1]); } }