flash 和程序的交互

Xiaoyuan245437 2010-10-19 11:42:57
如题
...全文
277 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xiaoyuan245437 2010-10-19
  • 打赏
  • 举报
回复
能不能提供一些关键部分的代码?
孟子E章 2010-10-19
  • 打赏
  • 举报
回复
flash 里面可以调用服务器上面的资源,也可以通过flashvar在客户端交互,参考ActionScript参考手册
slimboy123 2010-10-19
  • 打赏
  • 举报
回复
aspx 可以把内容以XML的形式输出,FLASH就可以访问你这个aspx页面的内容了
int64 2010-10-19
  • 打赏
  • 举报
回复
xml文件,js,变量,都可以交互
Xiaoyuan245437 2010-10-19
  • 打赏
  • 举报
回复
主要从aspx页面传递2个参数 在flash中获取
Xiaoyuan245437 2010-10-19
  • 打赏
  • 举报
回复
我主要想知道如何从aspx传值到flash

flash 如何接受?
hookyzlr 2010-10-19
  • 打赏
  • 举报
回复
Flash于程序交互实现方法有很多种,socket,webservice,以及简单的urlrequest,具体使用那个方法要看你需要交互的数据量大小,
flyerwing 2010-10-19
  • 打赏
  • 举报
回复
网页上估计都是JS吧.
z289830131 2010-10-19
  • 打赏
  • 举报
回复
3楼的看的真晕...
ZhuZhuYuXiang 2010-10-19
  • 打赏
  • 举报
回复
顶下....
sy_binbin 2010-10-19
  • 打赏
  • 举报
回复
一般都是FLASH读取JS或者XML里的数据!!

阿非 2010-10-19
  • 打赏
  • 举报
回复
http://tech.163.com/05/1121/09/232T1VDA0009159H.html

http://blog.csdn.net/wrq147/archive/2009/09/06/4525002.aspx

http://www.rsedu.com/jyjs/show.php?itemid=129
xinqq163 2010-10-19
  • 打赏
  • 举报
回复
难难难 看着 头晕
wwfgu00ing 2010-10-19
  • 打赏
  • 举报
回复
一、动态加载菜单 
菜单的内容如下(menu.xml):
如果动态加载呢?
1)把以menu.xml文件放到网站的根目录之下,然后在flash的as中写如下的as脚本.
mymenu = new XML();
mymenu.load("menu.xml");
mymenu.ignoreWhite = true;
mymenu.onLoad = findThefild;
var passItOn = "";
menu_text = "";
var menu_array = new Array();
var submenu_array = new Array();
var menuurl_array = new Array();
var submenuurl_array = new Array();
var tempArray:Array = new Array();
这样就可以把菜单加载到flash中,至于如何显示,就自己进行处理了.
二、 给菜单中添加动态参数.
我们很多时间使用的url都是如EditRole.aspx?rolename=role1之类,此时应该如何把"?rolename=role1"动态的传给flash呢.
我试验了很多方法,最后的结果如下.
1) 说一下有了flash之后的asp.net页面的生成顺序.例如我的页面是editrole.aspx在此页面中有一个flash菜单.
editrole.aspx-->flash-->与flash通信的页面.
2) 如何把动态参数传给flash呢,我使用的是xml让asp.net与flash进行通信.
3) 那么动态参数如何得到呢?这就要借用第三个页面,也就是专门用来与flash进行交互的页面.而不能使用所点击的菜单的页面.
4) 如上在第一个打开的页面如EditRole.aspx?rolename=role1中把"?rolename=role1"保存到cookie或缓存或seession中, 然后则专门与flash进行通信的页面把"?rolename=role1"编写成xml,然后reponse.wirte(参数xml字符串),传给flash.
代码:
1.editrole.aspx页面中的代码.
protected void Page_Load(object sender, EventArgs e)
{
this.txtUserName.Text = this.UserName;
//this.Description.Text = ReponseXML();
if (!IsPostBack)
{
ShowUserInfo();
this.WirteCookie();
}
}
public void WirteCookie()
{
//加密程序提供程序的名称
string symmProvider = "DESCryptoServiceProvider";
//需要加密的xml字符串
string stringToEncrypt = this.ReponseXML();
//加密后的字符串
string encryptedContentsBase64 = Cryptographer.EncryptSymmetric(symmProvider, stringToEncrypt);
//写cookies
Response.Cookies["UserSettings"]["uid"] = encryptedContentsBase64;
Response.Cookies["UserSettings"]["ur"] =this.UserRole;
Response.Cookies["UserSettings"].Expires = DateTime.Now.AddHours(1);
}
//与flash进行交互的页面.
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class XmlRepley : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/xml";
// context.Response.Write("Hello World");
string symmProvider = "DESCryptoServiceProvider";
string stringToEncrypt = this.GetUID(context);
string decryptedContentsBase64 = Cryptographer.DecryptSymmetric(symmProvider, stringToEncrypt);
context.Response.Write(decryptedContentsBase64);
}
public string GetUID(HttpContext context)
{
string uid = String.Empty;
if (context.Request.Cookies["UserSettings"] != null)
{
if (context.Request.Cookies["UserSettings"]["uid"] != null)
{ uid =context.Request.Cookies["UserSettings"]["uid"]; }
}
return uid;
}
public bool IsReusable
{
get
{
return false;
}
}
}
//flash中as代码

//鼠标点击菜单时

function itemEvent(mc:MovieClip,url:String)
{
mc.btn.onRelease = function()
{
loginXml = new XML(); // 注释1
loginElement = loginXml.createElement("LOGIN"); // 注释2
// name node
nameElement = loginXml.createElement("USERNAME"); // 注释3
nameNode = loginXml.createTextNode("name"); // 注释4
nameNode.nodeValue = _root.username; // 注释5
nameElement.appendChild(nameNode); // 注释6
// pwd node
pwdElement = loginXml.createElement("PWD"); // 注释7
pwdNode = loginXml.createTextNode("pwd");
pwdNode.nodeValue = _root.pwd;
pwdElement.appendChild(pwdNode);
loginElement.appendChild(nameElement); // 注释8
loginElement.appendChild(pwdElement); // 注释9
loginXml.appendChild(loginElement); // 注释10
xmlRepley = new XML(); // 注释11
xmlRepley.onLoad = onLoginReply; // 注释12
function onLoginReply (success) {
if (success) { // 注释13
if (xmlRepley.firstChild.firstChild.attributes.right == "1") { // 注释14
getURL(url+xmlRepley.firstChild.firstChild.attributes.urlParam, "_self");
}
else
{
getURL(url+"?q=错误", "_self");
}
}
}
loginXml.sendAndLoad("XmlRepley.ashx", xmlRepley); // 注释15
}
}
三、加载动态菜单项
以上的菜单都是flash去读xml菜单文件,那么如果我们有多个不同类型的菜单,则要做多个不同的flash,
而这几个不财的flash中,如果菜单样式一样,只不过是菜单的内容不一样,那么实际上是去读不同的xml菜单文件.
那么有没有办法去实现有程序去给定一个flash菜单的xml数据源呢?
我试验了很多方法,最后的结果如下.
1)说一下有了flash之后的asp.net页面的生成顺序.例如我的页面是editrole.aspx在此页面中有一个flash菜单.
editrole.aspx-->flash-->与flash通信的页面.
2)如何把xml菜单传给flash呢,我使用的是xml让asp.net与flash进行通信.
代码
1)在flash的as中写如下的as脚本,得到xml文件菜单.
mymenu = new XML();
mymenu.load("SendXmlMenu.ashx");
mymenu.ignoreWhite = true;
mymenu.onLoad = findThefild;
var passItOn = "";
menu_text = "";
var menu_array = new Array();
var submenu_array = new Array();
var menuurl_array = new Array();
var submenuurl_array = new Array();
var tempArray:Array = new Array();
2)在主角色页面如showRoleMenu.aspx页面中写如下代码
protected void Page_Load(object sender, EventArgs e)
{
Response.Cookies["UserSettings"]["ur"] = "r"; //新页面要打开的菜单.
Response.Cookies["UserSettings"].Expires = DateTime.Now.AddHours(1);
}
在主用户页面如showUserMenu.aspx页面中写如下代码
protected void Page_Load(object sender, EventArgs e)
{
Response.Cookies["UserSettings"]["ur"] = "u"; //新页面要打开的菜单.
Response.Cookies["UserSettings"].Expires = DateTime.Now.AddHours(1);
}
3)在SendXmlMenu.ashx中写以下代码进行xml菜单的传给flash.
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class SendXmlMenu : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/xml";
context.Response.Write(ReadXmlMenu(context));
}
public string ReadXmlMenu(HttpContext context)
{
string ur = this.GetUserRole(context);
System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
string path=context.Request.PhysicalPath.Substring(0,context.Request.PhysicalPath.LastIndexOf("\\"));
path = path + "\\menu\\";
switch(ur.ToLower())
{
case "u"://这个参数通过cookie得到.
xmldoc.Load(path + "usermenu.xml");
return xmldoc.OuterXml;
case "r":
xmldoc.Load(path + "rolemenu.xml");
return xmldoc.OuterXml;
default:
return String.Empty;
}
}
public string GetUserRole(HttpContext context)
{
string ur = String.Empty;
if (context.Request.Cookies["UserSettings"] != null)
{
if (context.Request.Cookies["UserSettings"]["ur"] != null)
{ ur = context.Request.Cookies["UserSettings"]["ur"]; }
}
return ur;
}
public bool IsReusable
{
get
{
return false;
}
}
}
myhope88 2010-10-19
  • 打赏
  • 举报
回复
没搞过,网上搜一下应该有相关资料
MSDNXGH 2010-10-19
  • 打赏
  • 举报
回复
复杂。。顶。。。
xulisha123 2010-10-19
  • 打赏
  • 举报
回复
这个要mark。 一直很好奇
阿非 2010-10-19
  • 打赏
  • 举报
回复
http://livedocs.adobe.com/flash/9.0_cn/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00005236.html

toString() : String

以 MIME 内容编码格式 application/x-www-form-urlencoded 返回包含 my_lv 中所有可枚举变量的字符串。


传递多个参数用 & 分隔即可

手抓宝 2010-10-19
  • 打赏
  • 举报
回复
小数据量,建议用JS,jq+flex巨牛无比,大量的用webservice 文件什么的用httpservice
阿非 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xiaoyuan245437 的回复:]
主要从aspx页面传递2个参数 在flash中获取
[/Quote]

使用 LoadVars.load 即可

http://blog.csdn.net/wrq147/archive/2009/09/06/4525002.aspx
加载更多回复(1)

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧