用Flash制作Google搜索程序( 二 )



3. 在组件检查器中选择“绑定”(Bindings)选项卡 。这个面板允许你绑定WEB服务的输入和输出直接到应用程序的一个UI组件 。单击“ ” 图标去选择你要绑定的参数 。输入参数是用右箭头表标示,输出参数是用一个左箭头来标示 (如图) 。Google界面需要所有的输入参数,因此一个一个的把它们增加到绑定列表,因为我们也需要绑定一个输出参数, 所也增加输出参数到列表 。

用Flash制作Google搜索程序

文章插图

4. 对于列表中的每一个绑定,你需要设置一个UI 组件, 一个变量参考, 或者一个文字变量去传给或从web 服务返回 。首先从绑定列表中选择“params.q”—传给Google服务的搜索请求字串,然后把它绑定到“frmSearch”表单中的“TextInput”组件, 单击“Bound To”行上的"find" 图标 。Flash打开“Bound To”对话框,那里显示了你应用程序的一个等级列表,查找“txtQuery”组件实例,选择它,然后单击OK按纽 (如图) 。
用Flash制作Google搜索程序

文章插图

5. 为 Google服务填写其余的输入参数 。其他参数能带文字输入 。去定义一个文本输入,除了在“Bound To”对话框核选用户常量和在相应的文本框中输入的文字外,其它按照第 4 步同样操作 。以下清单显示了每个输入参数的值 。
params.key [你的Google Web API 的产品密钥]
params.start 0
params.maxResults 10
params.filter true
params.restrict [empty string]
params.safeSearch true
params.lr [empty string]
params.ie [empty string]
params.oe [empty string]
重复第四步为 results.searchTime 输入参数, 绑定它到“frmSearch”表单的“lblSearchTime”组件实例 。组件系统允许你在绑定之前去格式化这个输入或输出,既然“searchTime”参数正好是一个浮点数,那么我们可以去格式化这个值以便让用户更容易理解 。从“Formatter”弹出菜单,选择“Compose String”,然后单击“Formatter”选项,然后在对话框中输入下列字符串:Search time:<.> seconds(如图)
用Flash制作Google搜索程序

文章插图

当组件被绑定的时候这个参数值将被<.>占位符替换 。
注意:Flash安全沙箱设置:如果Flash应用程序不通过一个代理类在网站上运行,那么当前是不允许去直接访问一个远程WEB服务的 。然而,如果你的计算机安装了Flash 或 Flash Professional这可以在你的计算机上工作,这是因为你有Flash Player 的开发者版本 。这个例子如果没有服务端代理的话将不工作 。
附加脚本动作
【用Flash制作Google搜索程序】新的行为(behaviors)使控制描述UI组件事件比以往版本更容易 。
在这儿我们将用一个行为去触发web 服务并且显示结果:
1. 在frmSearch上单击“btnSearch”按纽,在“行为面板”,单击“ ”图标并选择 Data > Trigger Data Source 。在结果对话框,选择“GoogleSearch” WebServiceConnector并单击OK按纽 (如图) 。

2. 当“btnSearch”处于选中状态,打开“动作面板”(Actions panel) 。你将看到Flash自动增加当用户单击“Search”按纽时去触发web 服务的代码 。
3. 所有web服务如果不能在组件检查器中绑定,你需要用代码管理 。在触发事件之前,增加下列代码,事件监听者允许你去拦截web 服务发送和结果事件且可以用ActionScript去完成附加的操作 。
on (click) {
// 触发数据源行为
// Macromedia 2003
this._parent.GoogleSearch.addEventListener("send", onGoogleSearch);
this._parent.GoogleSearch.addEventListener("result", onGoogleSearchResult);
this._parent.GoogleSearch.trigger();
}

4. 增加处理这些事件的ActionScript函数,下面的代码做一些界面操作例如当搜索在进行时允许和禁止组件,更重要的是他能重述Google的返回结果,你可用HTML格式化它们,并显示他们在“txtResults”“TextArea”实例 。

推荐阅读