FABridge教程(Flex+Ajax)
今天找一些Flex资料,偶然发现很多人在问有关FABridge的问题,看了一下,大致都是在问在FlashBuilder中如何通过FABridge来实现F-A的交互。简单说说吧。
一.通过js访问Flex组件
1.准备工作。先建立Flex工程 :fademo,并放置一个文本框:txtName。做完后代码应该类似于这个样子:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="0" minHeight="0" width="400" height="300">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:TextInput x="160" y="96" id="txtName"/>
</s:Application>
非常简单,呵呵。我用的flex4,flex3的话也类似。
注意一点,flash初始大小别设置的太大了,否则会看不到文本框。
2.在工程上点右键,选择【创建Ajax Bridge】,添加FABridge支持。这里会让你选择对当前工程中哪些类(属性,方法)进行FA桥接。初学的话,只选择我们创建的文本框即可,免得等会js代码太多。这里我们只选中txtName前面的勾勾。点击确定按钮。
3.看看都有什么变化?首先在src内多了一个bridge包,其内多了个FABridge.as;其次,在工程目录下,也创建了一个名为AjaxBridge\fademo的目录,其中lib下有一个对应的FABridge.js。这两个文件的作用我就不废话了,是核心,不过我们不需要动它。
另外,还有我们下面要说的两个文件,fademo.js和fademo.html,这两个文件是我们需要关注的,简洁起见,我把英文注释换掉了。
先看看fademo.js:
//定义一个全局变量fademo
fademo = {};
//回调
FABridge.addInitializationCallback("b_fademo", fademoReady);
function fademoReady() {
//局部变量,获得Flex应用(b_fademo)的根,可以通过b_fademo_root操作flex
b_fademo_root = FABridge["b_fademo"].root();
//为fademo添加一个方法getTxtName,相当于fademo借助b_fademo_root操作flex
fademo.getTxtName = function () {
return
相关文档:
用FLEX如何取浏览器地址栏中的域名信息?我查找到两种方法:
第一种方法是用ExternalInterface.call('window.location.href.toString'),它的值就是地址栏中的域名
有以下几点需要注意:
1.当Flash和加载它的网页不同域时,需要在网页在 PARAM 或 EMBED 标签中进行设置AllowScriptAccess 为“always”
关于 ......
本例中将实现当应用运行时不进行任何操作就先弹出窗口,点击关闭/点击窗口任一位置 时将关闭窗口
1)创建Component—DefaultWin.mxml (目录结构src/components/DefaultWin.mxml)
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
  ......
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
private var loader:URLLoader = new URLLoader();
private var request:URLRequest = new URLRequest("a.txt");
private function initComplete():void
{
  ......
FLEX编译的SWF文件,只能选择访问本地文件或访问网络文件,二者只能取一(嗯,为什么?我也不知道,官方说是为了安全考虑),而FLEX编译的默认选项是只能访问网络文件,所以你将bin里的东西COPY到其他地方就不能读取了。而你在默认的bin目录下可以读取得到,是因为FLEX认为你是在IDE环境种,这时是没有这个所谓的安全限制的 ......
Blinds.as
package effects
{
import effects.effectClasses.BlindsInstance;
import mx.controls.scrollClasses.ScrollBarDirection;
import mx.effects.IEffectInstance;
import mx.effects.TweenEffect;
public class Blinds extends TweenEffect
{
......