JS+FLASH 参数传递 个人见解
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/sho ... sh/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/sho ... sh/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=&quo ... w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang= ... sp;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/sho ... sh/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>
////////////////////// 以下是网上搜集
1,先在flash的按钮上添加代码:
首页:
on (release) {
fscommand("sethomepage", ;;
}
收藏夹:
on (release) {
fscommand("addfavorite", |);
}
然后在发布设置中选择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]);
}
}