如何从Web服务中填充Flash中的动态文本?

时间:2011-02-22 03:25:27

标签: flash actionscript-3

我有一个使用ASP.net Web服务查询的MS Access查询ProductDetailsAll。该服务只是用查询结果填充数据表。

如何从Flash设置和传递参数?我需要根据用户选择为具有CategoryID 1或3的记录搜索ProductDetailsAll。 CategoryID是如何从Flash传递到Web服务的?

我在Flash中创建了矩形对象。每个必须包含产品名称,描述,价格和ProductDetailsAll查询中的图像。如何将搜索短语从Flash传递给查询?我是否使用动态文本框来存放返回的值?

谢谢, SID

修改 进一步阐述: 我有一个组合框cbRentalType,其值为1(Sale),3(Party)或All。我有一个组合框cbCatSelect需要从数据库表中读取SubCategory。我有一个文本框txtSearch,它将包含product关键字,应该从数据库表的KeywordID字段中查询。

如何在Actionscript中设置出站变量等于上述对象的值? 如何返回与这些值匹配的查询结果并将它们映射到Flash变量中? 我在影片剪辑上有16个矩形对象。每个人将从查询结果中包含一个项目,其中包含产品图像,产品名称,描述和价格的输出。如果查询返回的记录超过16条,如何填充另一帧以包含完整的查询结果?
最后,我找到了一个用于设置ASP.NET Web服务连接的代码示例。 AS3代码如下:

package  {

import flash.display.MovieClip;
import flash.events.MouseEvent;
import mx.rpc.soap.*;
import mx.rpc.events.*;
import mx.rpc.AbstractOperation;
import flash.events.Event;

public class MainDocument extends MovieClip {

private var ProductWebService:WebService;
private var serviceOperation:AbstractOperation;

public function MainDocument() {
// constructor code
addEventListener(Event.ENTER_FRAME, SetupWebService);

}

function SetupWebService(event:Event):void
{
var url:String ="http://www.mydomain.com/WebService/completedb.asmx?WSDL";

ProductWebService = new WebService();
ProductWebService.loadWSDL(url);

ProductWebService.addEventListener(LoadEvent.LOAD,BuildServiceRequest);
}

function BuildServiceRequest(evt:LoadEvent)
{
serviceOperation=ProductWebService.getOperation("GetProducts");
serviceOperation.addEventListene
(FaultEvent.FAULT,DisplayError);
serviceOperation.addEventListener
(ResultEvent.RESULT,DisplayResult);
serviceOperation.send([GenerateRandomNumber(0,9)]);
}

function DisplayError(evt:FaultEvent)
{
trace("error");
}

function DisplayResult(evt:ResultEvent)
{
var productName:String = evt.result as String;
productText.Text=productName;
}

function GenerateRandomNumber(min:int,max:int):int
{
return Math.floor(Math.random()*(1+max-min))+min;
}
}

}

1 个答案:

答案 0 :(得分:1)

从外部角度来看很难看出具体的解决方案,但可以肯定地说,您需要使用URLRequest类和URLLoader类。

基本思想是,要从闪存到服务器端脚本(ASP)进行通信,您希望通过将闪存变量(字符串,数字)添加到URLRequest对象的.data属性来将数据发布到该脚本,以及然后使用URLLoader类将该数据“发送”到您的asp脚本。

这是一个用PHP讨论的教程 - ASP中的概念保持不变: http://www.kirupa.com/forum/showpost.php?p=2373966&postcount=1

要从脚本回传到闪存,您需要使用相同的基本技术,但使用闪存中的onComplete回调(如上所述)来访问您的数据。

你可能遇到的常见问题,如果闪光灯和asp在不同服务器上运行,是一个跨域安全问题。您可能需要通过crossdomain.xml文件设置适当的权限。

...是的,您需要使用动态文本字段并将其.text(或.htmlText)属性设置为ASP页面的结果,位于onComplete回调中的某个位置。

希望这会有所帮助 - 祝你好运