Programming Flex2 - 二.通过Flex框架建立应用程序

创建项目
一个Flex程序最少由一个文件或多达数以百计的文件组成。文件类型如下:
MXML
    这种文件主要包含程序的可视部分,即样式设计和UI组件。
ActionScript类
    这种文件是所有自定义组件,数据模型,客户端逻辑和服务器代理的源代码。
XML
    虽然XML通常来自对服务器的动态请求,但很多程序的配置参数仍利用静态的XML文件。
图片
    Flex程序可以嵌入也可以动态加载图片。
声/视频
    Flex程序可以加载声频,视频内容,但几乎都是动态加载。
运行期共享库
    运行期共享库是一些包含着代码库的swf文件。为在同域下的多个Flex程序共用。为了试用 运行期共享库,必需拥有swf和swc文件。swc用于编译器判定代码库来自哪个swf。
HTML包装文件
    Flex程序是web扩展程序。发布文件虽是swf,但通常都嵌在一个html文件中展现。

建立一个新项目
如何设置一个新的Flex项目,绝大部分取决于使用的工具。如果用Flex SDK,那配置工作会比较多。

>使用SDK创建项目
这里分使用IDE和不使用(纯文本编写)。
使用的话,主要是集成SDK到所用的IDE中,比如Eclipse,FlashDevelop,PrimalScript。
在不使用的情况下,将所有项目文件放于项目目录中,然后可以任意组织它们。当然需要知道所有的源文件和材料放在哪里,从而通过配置编译器选项来建造应用程序。典型的文件组织结构如下:
src
    一个包含了所有MXML和ActionScript文件的目录。
bin
    一个保存已编译好的程序的目录。
html
    一个存放HTML包装文件的目录
assets
    一个保存所有被程序在编译期或运行期用到的素材文件目录
build
    当使用Apache Ant时,一个放置脚本文件的目录。

>使用Flex Builder 2创建项目
没啥好说,除非特殊需要,一路next即可。
注意第三步时,可根据需要添加外部已有的程序库。
最终建立的项目目录结构和之前提到的类似,html-template是一个存放HTML包装文件模板的目录。Flex Builder还会自动建立一个和项目同名的MXML文档。

建立程序
所谓的建立程序是指,把源文件编译成发布文件。
Flex程序的编译器是mxmlc(compc特别用来编译组件和库)。当使用Flex Builder时,会自动调用mxmlc。
使用mxmlc的方法有几种
    命令行
    .bat或shell脚本
    IDE
    Apache Ant

以下介绍mxmlc的几个参数

help:显示帮助
mxmlc -help

file-specs:指定要编译文件的路径(对于整个项目,只要编译最主要的mxml即可)。
mxmlc -file-specs SampleApplication.mxml
参数file-specs是唯一必需的,也是默认的。所以上面的例子也可以这么写
mxmlc SampleApplication.mxml

output:指定输出文件swf的路径
mxmlc SampleApplication.mxmc -output bin/main.swf

source-path:指定所需编译文件的目录(可多个,用空格间隔)。默认为编译文件的所在目录。
mxmlc -source-path . C://FlexApplicationCommonLibraries -file-specs SampleApplication.mxml
以上使用了两个目录,点为当前目录,还有一个是外部程序库所在目录。

default-background-color:Flash Player的背景色(注意,这和Flex组件中一些容器组件,如Application,所设置的背景色属性不同)。默认为0x869CA7。
mxmlc -default-background-color=0xFFFFFF SampleApplication.mxml

default-script-limits:对脚本执行的限制,提供两个值,第一个是程序的递归层数,第二个是无响应中断秒数。默认为1000,60
mxmlc -default-script-limits 200 15 -file-specs SampleApplication.mxml
注:中断时间不能大于默认60秒,15为Flash的默认设置。一般这个参数可以忽略,如果项目程序需要设置该参数来满足需求,那么几乎可以肯定程序在逻辑上出了问题。

title
description
creator
publisher
language
date
以上都是metadata,swf允许将metadata编码到程序文件中。
mxmlc -title "Sample Application" -description "A Flex Sample Application" -filespecs SampleApplication.mxml

incremental:缓存式编译(每次仅编译更改过的文件)。默认是false
mxmlc -incremental=true -file-specs SampleApplication.mxml
注:当使用该参数后,mxmlc会在编译文件的同目录下建立一个缓存文件。名为SampleApplication_#.cache。#是一个mxmlc生成的随机数。

load-config:加载外部的编译配置文件。默认是SDK/frameworks/flex-config.xml
mxmlc -load-config=configuration.xml SampleApplication.mxml
mxmlc -load-config+=configuration.xml SampleApplication.mxml
在configuration.xml和flex-config.xml出现个别相同设置时,用=,则采用flex-config.xml的设置,用+=则采用configuration.xml的设置
关于配置文件的内容,可以参考默认的flex-config.xml
也可使用以下命令查询
mxmlc -help list
mxmlc -help advanced

>使用Ant
全名Apache Ant,是一个开源的用于建立程序的工具。他包含相关性测试(比如目录存在与否),编译,移动,复制文件,运行程序。虽然.bat和shell脚本可以实现很多Ant的基本功能。但Ant还有很多诸如压缩/解压缩文件,邮件/FTP的支持等丰富的功能,另外还能更好的处理潜在错误。
管网地址: http://ant.apache.org
使用方法: http://ant.apache.org/manual/ide.html

使用Flex Builder编译
默认情况下,Flex Builder每保存一次就会自动编译一次。编译采用缓存式编译。运行是在默认的浏览器中。
勾掉 Project > Bulild Automatically 的勾来取消自动编译。
选择 Project > Clean 来清理缓存
通过 Window > Preferences > General > Web Browser 来设置浏览器

发布源码
利用Flex Builder可以快速的为程序增加“查看源码”的功能。当选择 Project > Publish Application Source后,弹出的对话框内可以选择发布哪些程序的源码。确定后会自动为MXML文件增加必要的代码(<mx:Application viewSourceURL='srcview/index.html'>)。此后编译就会生成需要的源码html文件。运行程序,通过右击 > View Source即可查看源码。
如果主文件不是一个mxml而是一个as文件,则需手动将以下两句代码加在适当位置。
import com.adobe.viewsource.ViewSource;
ViewSource.addMenuItem(this, "sourcecode/index.html");

部署程序
这段讲的其实就是把需要发布的程序相关文件都传到服务器上去。
虽然flex程序看上去似乎只有一个.swf文件,不过像HTML包装文件,还有外部加载的swf文件,文本/xml文件,图片/视频/音频文件,以及 运行期共享库,数据库,后台程序等等,凡是用到的都要上传。
如果使用了Ant,那这些工作都可以让Ant来完成,只要做适当的配置即可。

Flash Player的安全性
Flash Player在访问数据时有诸多规则。放在网上的.swf文件一般只能访问同域名下的资源。比如www.example.com下有个swf,在没有任何许可的情况下,swf只能访问www.example.com下的资源,连test.example.com,甚至example.com都不行。
要添加许可,则需建立一个cross-domain文件。

<? xml version="1.0" ?>
<! DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd" >
< cross-domain-policy >
    < allow-access-from  domain ="www.example.com"   />
</ cross-domain-policy >

cross-domian文件是一个xml文件。在<cross-domain-policy>的根节点下,可以添加任意个<allow-access-from>节点。并且内容可以使用通配符*来匹配。

比如要使example.com下的所有子域名都能访问数据,则可以这样设置

<allow-access-from domain="*.example.com" />

如果要使所有域名都能访问数据,则只需*即可。

<allow-access-from domain="*" />

当使用HTTPS时,想允许来自非安全域名的.swf文件访问,则需设置secure属性,如下:

<allow-access-from domain="www.example.com" secure="false" />

默认情况下,Flash Player在请求数据时,不管请求的文件在服务器何处,会先在服务区的根目录下搜索名字为crossdomain.xml的文件。然而也可以自定义该文件的位置和名字,但这样一来授权作用只适用于授权文件所在的目录。比如http://www.example.com/data/xml/policy.xml。即便这样,在程序里还要明确调用授权文件:
Security.loadPolicyFile("http://www.example.com/data/xml/policy.xml");

cross-domain方案只能满足预测,如果在不能确定访问来源时,应借助服务器上的代理文件(可能是一个jsp,asp.net,ColdFusion,或者PHP页面)来响应Flash Player的请求。

更多Flash Player 9的安全性性息
Flash Player 9安全白皮书
安全中心
Flash安全与企业解决方案

了解HTML包装文件
运行在Flash Player内的Flex程序,不需要额外的包装文件。但多数Flex程序都嵌在一个HTML页面中,因为
很多Flex程序只是一个基于HTML程序的一部分
嵌在HTML页面内的程序与浏览器交互性更好。

关于HTML代码部分的解释,可以看下面两篇文章
Flash OBJECT and EMBED tag attributes
Macromedia Flash OBJECT and EMBED tag syntax

作为最原始的嵌入代码,是不具备检测功能的,即无法得知用户是否安装Flash Player或者版本是否正确,也没法在得知版本不正确后,自动下载正确版本(这一功能称为 Express Install,适用于用户已安装Flash Player 6.0.65.0或更高的版本)

Flex Builder自带了这一系列模板。当使用以后,会产生额外的对应.js和.swf成为程序的一部分。

使用SWFObject
另外一个不错的选择是SWFObject。用之,不仅简化工作,还能优化搜索引擎。
详情查看: http://blog.deconcept.com/swfobject

使用运行期共享库
从技术上讲,运行期共享库分为两种。静态连接和动态连接。所谓的静态就是指在编译期间把共享库编译进程序文件内(swc),而动态则是从外部调用共享库(swf)。

两者都有提升重用,加速开发的功效。但真正能做到为程序减肥的是动态连接。

根据使用工具的不同,如何实现运行期共享库也不同,像Flex Builder很多工作都自动处理了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值