- 浏览: 407374 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (325)
- 神经网络 (1)
- javascript (11)
- 数据结构 (2)
- 计算机图形学 (11)
- 模式识别 (1)
- 前端开发 (14)
- 机器学习 (11)
- ios开发 (50)
- Python (9)
- HTML5 (4)
- 计算机视觉 (9)
- 数字图像处理 (7)
- 架构设计 (19)
- 数据库设计 (9)
- 算法设计 (59)
- Java (37)
- 其他 (3)
- 游戏开发 (5)
- c++ (17)
- Linux (3)
- TCP/IP (2)
- Flex (41)
- 健康 (6)
- AI (2)
- 工具 (1)
- 数据挖掘 (1)
- 性能优化 (6)
- 综合 (2)
- 网络通信 (12)
- Android (2)
- UML (3)
- 软件设计 (11)
- 编程经验 (7)
- J2EE (1)
- 多媒体技术 (3)
- 数学 (7)
- php (4)
- 设计 (1)
- CS (2)
- 计算机理论 (1)
- 信息安全 (1)
最新评论
-
ahead_zhan:
good good good
flex3控件_ModuleLoader -
lonerzf:
好样的。非常感谢楼主
OpenCV视频教程整理 -
lonerzf:
好样的。谢谢~
OpenCV视频教程整理 -
coding1688:
博主说的不错,我在实现瀑布流布局时也用的masonry插件,有 ...
Javascript 瀑布流式布局及其动态效果的实现 -
snowolf:
除非玩游戏,不然没啥win的事情,或者用win的银行客户端,通 ...
macbook安装操作系统的机理分析
参考:http://deapge.blog.163.com/blog/static/111311479201091151310769/
1
ModuleLoader组件概述
1.1Module技术简介
flex的Modules技术是可以被flex程序使用的一个swf文件,它不能脱离程序独立运行,但是多个程序之间可以共享它。
flex的Modules技术将应用程序分割成小块、模块,主程序动态的加载所需要的模块。主程序在启动时并不全部加载所有的模块。当用户和模块没有交互的时候它不需要加载模块,同时它在模块不需要的时候可以卸载模块并释放内存和资源。[1]
flex的Modules技术主要有如下的优点:
让swf文件初始下载尺寸更小
让加载时间更短
对应用程序更好的封装性
1.2ModuleLoader组件功能
ModuleLoader组件是一种可视化的组件,方便开发人员在运行期间动态地加载和卸载module。
注:加载:从服务器下载到浏览器中
1.3
ModuleLoader类的继承关系
包:mx.modules[2]
ModuleLoaderInheritanceVBoxInheritanceBoxInheritanceContainerInheritanceUIComponent
注:ModuleLoader类暂无spark组件
相关类:
* IModuleInfo – module接口,所有的module都实现了此接口,可以提供module信息,比如url 和 加载状态。
*
Module – 基于MXML的module的基类
* ModuleBase –基于ActionScript的module基类
*
ModuleManager –一个系统只有一个此类,用于管理所有动态加载的module
* ModuleEvent –
module相关事件
1.4
相似组件
(1)SWFLoader
ModuleLoader与swfLoader组件功能相同
ModuleLoader要求加载的SWF文件必须实现接口IFlexModuleFactory,这样,ModuleLoader通过工厂模式可以根据需要创建多个实例。
swfLoaderr组件对于SWF文件没有任何要求。
(2)ViewStack
ModuleLoader与ViewStack的作用比较类似,都用于加载多个不同模块。
ModuleLoader只能加载module,而且一次只能从服务器加载一个。ModuleLoader不必在初始化时携带加载所有的孩子组件,节省了下载量。
ViewStack一次加载多个容器,比如panel,cavas,但是可以延时初始化,以提高速度。ViewStack必须下载所有孩子组件后,只对当前使用的孩子组件进行初始化,加快显示速度。
(3)ModuleManager
ModuleLoader组件提供了可视化的加载和卸载module的操作。
ModuleManager类提供了低层次的处理Module的装载卸载以及事件响应等方法。这种方式比起纯粹的
ModuleLoader方式稍微复杂一点,但是ModuleManager提供了比ModuleLoader更加强大的能力来管理Module模块的加载过程。
(4)RSL
RSL和module都是代码独立和复用机制[3]
Modules被编译到SWF文件内,可以加载和卸载
类库被编译到SWC文件内,可以在编译期间使用并编译到application中,并在application运行前加载
参考文献
[1]Modularapplicationsoverview.http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-799a.html
[2]ModuleLoader类.http://www.adobe.com/devnet/flex/tourdeflex/langref/mx/modules/ModuleLoader.html
[3]
Flex Modules . http://www.flexafterdark.com/docs/Flex-Modules
2
ModuleLoader常用属性和方法
名称 |
分类 |
说明 |
applicationDomain |
属性 |
ApplicationDomain类,将你的模块加载到哪个应用域,详见例3.9 |
url |
属性 |
String类型。要加载的外部MXML module 的url.,详见例3.1和例3.2 |
loadModule |
方法 |
格式:loadModule (url:String = null, bytes:ByteArray = null):void 加载module,详见例3.2 |
unloadModule |
方法 |
格式:unloadModule():void 卸载module,释放内存,详见例3.2 |
error |
事件 |
当module抛出错误时派发,参见例3.3 |
loading |
事件 |
当ModuleLoader开始根据URL加载module时派发 |
progress |
事件 |
Module加载过程中以一定的间隔周期派发,参见例3.3 |
ready |
事件 |
当module完成加载时派发,参见例3.3 |
setup |
事件 |
当module已下载(通过info()函数访问),但module并没有加载完成时(not ready)派发 |
unload |
事件 |
当module卸载完成时派发,参见例3.3 |
urlChanged |
事件 |
当ModuleLoader有了一个新的URL时派发 |
3 ModuleLoader使用方法
3.1 通过URL自动加载module和Alert使用举例
功能说明
通过loadModule加载外部的WelcomeModule,点击module中的alert,显示欢迎
关键代码
ModuleLoaderExam1.mxml
<fx:Script>
<![CDATA[
import mx.managers.PopUpManager;
private var pop:PopUpManager=new PopUpManager();
]]>
</fx:Script>
<mx:ModuleLoader id="module1" url="example/WelcomeModule.swf"
creationComplete="module1.applicationDomain=ApplicationDomain.currentDomain"/>
说明:
(1)如果在module中使用Alert,必须声明PopUpManager,并且实例化,原因未知。
(2) creationComplete事件表示,当加载完成时,将当前应用程序的域赋给module1,这个语句可以不加,为防万一,最好加上。
ModuleExam1.mxml
protected function openAlert_clickHandler(event:MouseEvent):void
{
Alert.show("欢迎", "欢迎点击Alert", Alert.OK, this);
}
<s:Button id="openAlert" label="模块使用Alert" click="openAlert_clickHandler(event)"/>
代码详见:ModuleLoaderExam1.mxml和ModuleExam1.mxml
3.2手工加载和卸载module举例
功能说明
通过设置URL属性,手工加载和卸载module
函数说明:loadModule (url:String = null, bytes:ByteArray = null):void
url:默认为null,表示当前要加载的module的URL,如果ModuleLoader的URL不为null,则该方法无效
bytes:module的SWF文件的字节数,可以通过URLLoader类获取
关键代码
ModuleLoaderExam2.mxml
public function loadModule21():void
{
if(mod_loader.url==null)
mod_loader.url = "example/ModuleExam21.swf";
}
public function loadModule22():void
{
mod_loader.loadModule("example/ModuleExam22.swf");
}
public function unload():void
{
mod_loader.unloadModule();
mod_loader.url = null;//注意,卸载完成后必须设置URL为null,否则内存泄露
}
<mx:ModuleLoader id="mod_loader" />
说明:
(1)mod_loader.url的值被修改后,直接触发重新加载module,不必再调用loadModule方法
(2) mod_loader.url = null;必须在卸载完成后加上,否则内存泄露
代码详见:ModuleLoaderExam2.mxml、ModuleExam21.mxml和ModuleExam22.mxml
3.3 module常用事件举例
功能说明
演示常用事件的处理,module的常用事件包括
Error:加载错误时引发
Ready:加载完成后引发
Progress:加载过程中定时引发
Unload:卸载完成后引发
关键代码
ModuleLoaderExam3.mxml
<mx:ModuleLoader id="mod_loader"
error="mod_loader_errorHandler(event)"
ready="mod_loader_readyHandler(event)"
progress="mod_loader_progressHandler(event)"
unload="mod_loader_unloadHandler(event)"/>
protected function mod_loader_errorHandler(event:ModuleEvent):void
{
lbRecord.text=lbRecord.text+"\n error:"+event.module.url;
}
protected function mod_loader_readyHandler(event:ModuleEvent):void
{
lbRecord.text=lbRecord.text+"\n ready:"+event.bytesLoaded+"bytes:"+event.bytesTotal;
}
protected function mod_loader_progressHandler(event:ModuleEvent):void
{
lbRecord.text=lbRecord.text+"\n progress:"+event.bytesLoaded+"bytes:"+event.bytesTotal;
}
protected function mod_loader_unloadHandler(event:ModuleEvent):void
{
lbRecord.text=lbRecord.text+"\n unload:"+event.bytesLoaded+"bytes:"+event.bytesTotal;
}
代码详见:ModuleLoaderExam3.mxml、ModuleExam21.mxml和ModuleExam22.mxml
3.4 Application调用module中的方法举例
功能说明
演示Application程序如何调用module中的方法
Application并不能直接访问module提供的方法,而是通过moduleLoader中的属性child来完成的。
关键代码
ModuleLoaderExam4.mxml
<mx:ModuleLoader url="example/ModuleExam4.swf" id="m1" ready="getTitle()"/>
private function getTitle():void {
s = (m1.child as ModuleExam4).getModTitle();
}
ModuleExam4.mxml
public function getModTitle():String {
return "Child Module 1";
}
说明:
(m1.child as ModuleExam4).getModTitle(),表示将m1中的属性child对应的对象强制转换为ModuleExam4类,再调用这个对象的方法。
代码详见:ModuleLoaderExam4.mxml和ModuleExam4.mxml
3.5 通过ModuleLoader的URL向module传递参数举例
功能说明
通过URL属性向module传递参数
GET参数基本上是这种格式,url=module1.swf?param1=value1¶m2=value2
关键代码
ModuleLoaderExam5.mxml
public function submitToModule():void {
var s:String = "example/ModuleExam5.swf?"
+ "firstName=" +ti1.text + "&lastName=" + ti2.text;
m1.url = s;
}
<mx:ModuleLoader id="m1"/>
<mx:Button id="b1" label="Submit" click="submitToModule()"/>
ModuleExam5.mxml
//对参数进行过滤
var myPattern:RegExp = /.*\?/;
var s:String = this.loaderInfo.url.toString();
s = s.replace(myPattern, "");
// 通过&拆分成数组name=value,保存为String类型数据
var params:Array = s.split("&");
// 显示数组中各个元素的值
var keyStr:String;
var valueStr:String;
var paramObj:Object = params;
for (keyStr in paramObj) {
valueStr = String(paramObj[keyStr]);
ta1.text += keyStr + ":" + valueStr + "\n"; //keyStr的值为0。1.2...
}
// 通过=拆分各个元素,并保存到变量salutation中
for (var i:int = 0; i < params.length; i++) {
var tempA:Array = params[i].split("=");
if (tempA[0] == "firstName") {
o.firstName = tempA[1];
}
if (tempA[0] == "lastName") {
o.lastName = tempA[1];
}
}
代码详见:ModuleLoaderExam5.mxml和ModuleExam5.mxml
3.6利用ActionScript接口实现Module与Application数据交互举例
功能说明
对于Module模块和Application对象间的通信,可以定义一个ActionScript接口,Module模块对象实现了这个接口中定义的方法和属性,那么Application就可以访问这个接口中定义的属性和方法。接口中定义了Module模块对象和Application需要共享的数据和方法,是两者间共同的一个契约,同时也实现了接口和实现的分离,达到了松耦合的目的。
接口类IModuleInterface.as:
public interface IModuleInterface extends IEventDispatcher {
function getModuleName():String;
function setAdjusterID(s:String):void;
function setBackgroundColor(n:Number):void;
}
ModuleExam6.mxml
模块必须实现以上接口,代码如下
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
implements="IModuleInterface"
layout="vertical" width="60%" height="60%">
public function setAdjusterID(s:String):void {
adjuster = s;
}
public function setBackgroundColor(n:Number):void {
bgcolor = n;
}
public function getModuleName():String {
return "module Insurance";
}
说明:
这个module实现了接口中的三个方法。
ModuleLoaderExam6.mxml
private function applyModuleSettings(e:Event):void {
// m1.child 是接口IModuleInterface的具体实现对象
//var ichild:* = mod.child as IModuleInterface;
var ichild:IModuleInterface = m1.child as IModuleInterface;
if (m1.child != null) {
ichild.setAdjusterID(myId.text);
ichild.setBackgroundColor(myColor.selectedColor);
}
//从接口获取模块的名称
currentModuleName = ichild.getModuleName();
}
说明:
Application通过接口中的方法setAdjusterID和setBackgroundColor向module传递数据,
Module通过接口中的方法getModuleName向Application传递数据
代码详见:ModuleLoaderExam6.mxml、ModuleExam6.mxml和IModuleInterface.as
3.8 Module与Module之间数据交互举例
功能说明
一个Application如果具有两个Module,这两个Module可以通过Application传递数据。原理如下:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:ModuleLoader url="Module1.swf" id="module1"/>
<mx:ModuleLoader url="Module2.swf" id="module2"/>
</mx:Application>
在module1中,你可以通过以下方法访问module2的属性和方法
parentApplication.module2.child.someProperty;
parentApplication.module2.child.someMethod();
关键代码
ModuleLoaderExam7.mxml
<mx:ModuleLoader url="example/ModuleExam71.swf" width="400" id="module1"/>
<mx:ModuleLoader url="example/ModuleExam72.swf" width="400" id="module2"/>
ModuleExam71.mxml
[Bindable]
public var m1:String="module1";
public function getProperty(event:MouseEvent):void {
lbmodule2.text=parentApplication.module2.child.m2;
}
public function getMethod(event:MouseEvent):void {
lbmodule2.text=parentApplication.module2.child.getModuleName();
}
<s:TextInput id="lbmodule2" text="{m1}" />
<s:Button label="调用module1属性" click="getProperty(event)"/>
<s:Button label="调用module1方法" click="getMethod(event)"/>
说明
getProperty函数功能:直接访问module2中的属性m2
getMethod函数功能:通过调用module2中的函数getModuleName获取文本输入框的值
ModuleExam72.mxml
[Bindable]
public var m2:String="module2";
public function getModuleName():String {
return lbmodule2.text;
}
<s:TextInput id="lbmodule2" text="{m2}" />
说明
m2与lbmodule2之间的绑定是单向的,修改m2的值,则改变lbmodule2的text,修改lbmodule2的值并不影响m2的值
代码详见:ModuleLoaderExam7.mxml、ModuleExam71.mxml和ModuleExam72.mxml
参考文献
Flex Modules . http://www.flexafterdark.com/docs/Flex-Modules
3.9 applicationDomain属性举例
功能说明
ApplicationDomain 类是一个容器,用于管理不同swf的安全域和类之间的关系。它们允许同一个类存在不同的ApplicationDomain。
ApplicationDomain是一个树形结构,Application所在的域(以下简称主域)就是它唯一的子域,使用Loader类加载swf时可以通过指定ApplicationDomain 参数将swf加载到不同的域(Domain)。
ApplicationDomain最根部的是系统域(system domain),主程序所在的域(以下简称主域)就是它唯一的子域。SWF 文件中的所有代码被定义为存在于应用程序域(ApplicationDomain)中。主应用程序在"当前域"中运行。"系统域"中包含所有应用程序域(包括当前域),也就是,它包含所有 Flash Player 类。
所有应用程序域(除系统域外)都有关联的父域。主应用程序的应用程序域的父域是系统域。已加载的类仅在其父级中没有相关定义时才进行定义。不能用较新的定义覆盖已加载类的定义。
有两种方式可以访问 ApplicationDomain :
(1)ApplicationDomain.currentDomain
currentDomain是ApplicationDomain的静态变量,表示当前代码所在的域。例如:该变量在主程序里指向主域,在加载到子域的模块里和currentDomain则指向该模块所在的子域。
参见例3.1,通过URL自动加载module和Alert使用举例
虽然 ApplicationDomain有个 parentDomain 属性,但子域已经自动获得了父域的类定义,所以通过 ApplicationDomain.currentDomain 就可以获取父域定义了——包括主程序和加载到主域的共享库。(注:系统域不可直接访问,主域和所有新域即系统域子域的parentDomain属性为 null)
参见例3.8,Module与Module之间数据交互举例
(2)LoaderInfo类的applicationDomain属性
此方式可以访问任何方式加载的swf的 ApplicationDomain。对于主程序来说,加载到同域的库定义已经存在于 ApplicationDomain.currentDomain ,而模块的类主程序一般用不到。所以这种方式个人不推荐使用。
使用Loader类加载swf时可以通过指定 ApplicationDomain参数将swf加载到不同的域(Domain):
var loader : Loader = new Loader();
var context : LoaderContext = new LoaderContext();
/* 加载到子域(模块) */
context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
/* 加载到同域(共享库) */
context.applicationDomain = ApplicationDomain.currentDomain;
/* 加载到新域(独立运行的程序或模块) */
context.applicationDomain = new ApplicationDomain();
loader.load(new URLRequest("loaded.swf"), context);
(1)加载到子域(module)—参见图中的用法C
类似于“继承”,子域可以直接获得父域所有的类定义,反之父域得不到子域的。和继承关系不同的是,如果子域中有和父域同名的类,子域定义的类会被忽略而使用父域的定义的类。最大特点是可以动态的加载和移除。便于垃圾回收。
context.applicationDomain = new
ApplicationDomain(ApplicationDomain.currentDomain);
说明创建一个新的域,并变成当前域的子域
(2)加载到同域(RSL) —参见图中的用法B
就是在当前的ApplicationDomain添加新的类定义。类似集合里的合并关系。被加载swf里的所有类定义被合并到当前域中可以直接使用。和加载到子域相同,和当前域同名的定义也会被忽略。
context.applicationDomain = ApplicationDomain.currentDomain;
(3)加载到新域(独立运行的程序或模块) —参见图中的用法A
用的不是很多,实际上是单独的创建一个新的域和当前应用程序域平级。作为系统域的真子集。
swf载入指定域之前,先要检查该域及其父域中是否存在同名类,重复定义一概忽略。如果加载别人写的程序,或者使用旧版本的主程序加载新版本的模块,为避免类名冲突就要加载到新域独立运行以使用自己的类。
context.applicationDomain = new ApplicationDomain();
loader.load(new URLRequest("loaded.swf"), context);
说明:创建了一个新的域,并加载到独立的程序loaded.swf中。
模块加载到同域不是一样可以吗?为何要加载到子域呢?
好处就在于,卸载一个加载到子域的模块时,只要确保清除所有到该模块的引用,模块的所有类定义将被垃圾回收(Garbage Collection)。
关键代码
ApplicationDomain中的currentDomain属性使用参见例3.1
ApplicationDomain中的parrentDomain属性使用参见例3.8
参考文献
1. Flex 中ApplicationDomain. http://www.wedoswf.com/questions/935
2. flash 中的 ApplicationDomain . http://chaimzane.iteye.com/blog/470987
3. AS3应用程序模块化开发与ApplicationDomain . http://hereson.iteye.com/blog/192337
3.10 module中使用PopUpManager和DragManager异常说明
通常将module加载为主域的一个子域,module里面的类都不属于主域的。比如第一个module载入了类PopUpManager,那么整合到Application中,它就成了PopUpManager的拥有者,因为像这种manager都是单例的,如果另外一个模块稍后要使用这个 PopUpManager,就会引发运行时异常。
解决办法就是确保这些managers,比如PopUpManager和DragManager或者其他一些共享的服务是在application中定义的,这样就能确保所有模块都能够使用,代码如下:
import mx.managers.PopUpManager;
import mx.managers.DragManager;
private var popUpManager:PopUpManager;
private var dragManager:DragManager;
这项技术同时也被应用到组件中,当module第一次使用组件时,将在它自己的域中拥有这些组件的类定义。如果别的module试图使用这些已经被另一个 module使用的组件,它的定义将会不能匹配到现存的定义中。因此,为了避免组件的定义不匹配,在主应用程序中创建组件的实例,让所有的module去引用。
但是这个坏处很明显,这些声明看起来莫名其妙,成为了一个个"木偶变量"。另一个解决方法是借助 ApplicationDomain 来共享这些代码和资源。在ModuleLoader 的creationComplete方法中加入moduleLoader.applicationDomain = ApplicationDomain.currentDomain; 表示将其加载到运行时库。对于使用ModuleManager,则可以在IModuleInfo的load方法里指定域。
发表评论
-
nginx上搭建HLS流媒体服务器
2013-07-28 13:31 1387转自:http://blog.csdn.net/ ... -
ActionScript最新3D引擎项目(转载)
2012-10-23 19:11 8563D引擎 注:对于3D引擎,渲染的效率和支持的渲染功 ... -
Flash 3D的相关文章推荐
2012-10-12 15:18 0Flash ActionScript 3.0的3D效果处 ... -
深入浅出了解Molehill的底层API-顶点着色器与片段着色器
2012-10-12 11:07 1268转自:http://www.adob ... -
ActionScript 3 和 Flex框架的性能优化
2012-08-29 09:33 762与其在程序写完了之后臃肿得跑不动,不如平时注意这些关键点,时时 ... -
BlazeDS的架构和工作原理简介
2012-06-02 14:09 885参考:http://hi.baidu.com/whlxj ... -
Flex性能优化常用手法总结
2011-06-04 10:29 857参考:http://www.webgamei.com/c ... -
浅谈AMF协议的优与劣
2011-06-03 16:33 1150参考:http://www.router.net.cn/Art ... -
FLASH/ActionScript 性能优化
2011-05-31 21:41 1193一. 图形方面的优化 1. 减少同时在屏幕上物体的个 ... -
FLEX4 中SKINCLASS使用PATH绘制多边形
2011-05-28 18:08 819skinClass中绘制多边形使用Path标签,把绘制 ... -
ActionScript 3 和 Flex框架的性能优化
2011-05-27 16:28 7171 创建新数组时避免使用它的构造函数。 这样做:var a ... -
Flex垃圾回收的一些知识总结
2011-05-27 16:27 844Flex垃圾回收的一些知识 ... -
ActionScript 3.0 性能优化小知识
2011-05-27 16:26 6741、改进算法无论对 ... -
34个有用的ActionScript 3.0的API
2011-05-21 14:20 928ArcGIS API for FlexArcGIS API ... -
ActionScript与Java类型对应表
2011-05-21 09:46 1029当你使用AMF格式进行RemoteObject 调用时,肯定会 ... -
flex 效果
2011-05-19 17:41 7661.旋转 效果:http://www.alex-uh ... -
基于red5的在线视频录制实例和详细注释
2011-05-14 23:03 1576参考:http://www.ccvita.com/130.ht ... -
Converting data from Java to ActionScript
2011-05-07 14:23 980On the client side, the ide ... -
actionscript 3.0 图像处理(通道篇)
2011-05-06 10:30 991问题:1、将图片的R,G,B通道分别分离出来,以RGB模式, ... -
flex弹出窗口与父窗口的交互实现(用回调函数)
2011-04-16 17:46 2142弹出子窗口代码: protected function ad ...
相关推荐
文档名为“Flex3拞暥API..chm”,其中的“拞暥”可能是由于编码转换问题导致的错误显示,实际上应该是“API”的正确拼音表示。 Flex 3 API文档详细阐述了Flex框架的各种类、方法、属性和事件,涵盖了以下关键知识点...
学习了一段时间的flex... 上传点资源,大家分享。 flex,怎么学习flex,Flex_3_Cookbook_中文版
这个"dh.rar_flex cool me_flex menu skin_flex 导航_flex4 menu_flex4 menu"的压缩包文件,显然是与Flex4相关的资源,特别是关于创建酷炫的菜单导航和皮肤设计。 在Flex4中,菜单(Menu)是一种常见的用户界面元素...
Flex3StyleExplorer是一个用于探索和测试Flex3框架中各种组件样式的工具。它允许开发者直观地查看、修改和实验不同的Flex3组件样式属性,以便在实际应用中创建自定义的用户界面外观。这个工具对于理解Flex3的皮肤...
3. **动画效果**:amCharts_flex_components支持平滑的过渡动画,使得数据展示更加生动,提升用户体验。 4. **自定义组件**:开发者可以利用API创建自定义组件,扩展图表功能,如添加图例、工具提示、缩放和平移等...
Flex 3 提供了一整套 UI 控件库,这些控件具有丰富的外观和行为,使得开发者可以快速构建美观、功能强大的用户界面。此外,Flex 还提供了强大的数据绑定机制,使得开发者可以轻松地将界面元素与后端数据源进行绑定,...
3. **MySQL**:MySQL是一个关系型数据库管理系统,以其高效、稳定和易用性著称。它是许多Web应用的首选数据库,用于存储和管理应用中的各种数据。 4. **CRUD操作**: - **创建(Create)**:在后台数据库中插入新的...
Flex3StyleExplorer_V3Beta是一款专门针对Adobe Flex 3开发的样式编辑工具,它为开发者提供了便捷的方式来创建、管理和探索Flex应用程序中的CSS(Cascading Style Sheets)样式表。这款工具的主要目标是简化Flex组件...
* fnd_id_flex_segments where id_flex_code=""GL#"" and id_flex_num=50671 * fnd_profile_options_vl * fnd_concurrent_programs 法度表 * fnd_concurrent_requests 恳求表 * fnd_concurrent_processes 过程表 --...
3. **Examples**:此目录下的文件展示了amCharts Flex组件的实际应用。开发者可以通过这些示例了解如何在实际项目中使用组件,它们通常包含可运行的Flex应用程序,展示不同类型的图表和各种定制选项,是快速上手的好...
这个压缩包文件“arcgis_api_for_flex_3_5.zip”包含了ArcGIS Viewer for Flex 3.5的源码,是学习和开发基于Flex的GIS应用的重要资源。 ArcGIS Viewer for Flex 是一个强大的地图浏览和分析工具,它预设了多种地图...
《深入解析Flex_FCK_Editor整合应用实例》 在当今的Web开发中,富文本编辑器已经成为不可或缺的一部分,它使得用户能够方便地在网页上进行文本编辑、格式化以及插入多媒体内容。Flex_FCK_Editor是一款基于Adobe ...
描述中提到的"非常棒的flex图表3d控件,amcharts"强调了这个组件在3D图表方面的优秀表现。amCharts的3D图表功能可以为数据可视化提供更生动、立体的效果,帮助用户更直观地理解复杂的数据关系。 标签中的关键词...
Flex3StyleExplorer_V3 是一个专门针对Adobe Flex 3开发的辅助工具,旨在帮助开发者更深入地探索和理解Flex应用程序的样式系统。Flex是基于ActionScript 3的开源框架,用于构建富互联网应用程序(RIA)。这个工具的...
3. **停止维护的影响** 虽然amcharts_flex_components_1.8.3.4不再更新,但其稳定性和成熟度依然受到许多开发者的青睐。然而,随着Flex框架逐渐淡出舞台,转而被HTML5和现代前端框架取代,amcharts_flex的未来维护...
标题 "Demo.rar_3d_flex_flex Graphic._pv3d flex_pv3d fl" 提供的信息表明,这个压缩包包含了一个与3D图形相关的Flex应用程序的演示,使用了PV3D库。描述中提到“利用PV3D做的flex DEMO 实现了#3D特效”,进一步...
书中的三个部分(Flex_3_RIA开发详解与精深实践1.pdf、Flex_3_RIA开发详解与精深实践2.pdf、Flex_3_RIA开发详解与精深实践3.pdf)可能是按照章节逐步展开,覆盖了Flex 3开发的各个方面,为读者提供全面的学习资源。
3. **数据绑定**:Flex与LCDS的一个显著优势在于强大的数据绑定机制。在EmployeeManager项目中,很可能通过数据绑定将服务器端的员工数据直接呈现到客户端的UI组件上,无需手动进行数据处理,极大提高了开发效率。 ...
标题中的“butterfly-flex_flex_butterfly_fluent翅膀_蝴蝶翅膀_”似乎是一个项目或文件夹的命名,它涵盖了几个关键词,分别是“flex”、“butterfly”、“fluent”以及“翅膀”。这些关键词指向了本次讨论的核心...
Flex3StyleExplorer_V3.rar_flex这个压缩包包含了一个名为Flex3StyleExplorer_V3.swf的文件,这是一款用于探索和实验Flex3应用中的样式设计的工具。 Flex3为开发者提供了强大的样式系统,允许自定义UI组件的外观和...