flex 中有关modules 应用的一些概念。

PKU5511SPI 集成电路 Flex Power Modules品牌优势渠道供应商 PKB4413DAPIHS Flex Power Modules PKB5213DPI Flex Power Modules PKE3316ZPI Flex Power Modules PKE8410A PI Flex Power Modules PKE8415A PI Flex Power Modules BMR4613201/001 Flex Power Modules PKJ7215WPI Flex Power Modules PKM7111APIPHS 阅读详情
 详细见 此 ppt 


【ielts原创】关于flex的module开发
前台的开发,目前RIA技术越来越具有优势,而其中的flex目前也出到了版本3.
之前采用flex开发展现层的时候,经常为程序越做越大而发愁,今天了解到了flex的module这块的功能,打算通过一两天时间学习和了解。之后进行我们之前项目的前台重构工作。

flex的Modules技术是可以被flex程序使用的一个swf文件,它不能脱离程序独立运行,但是多个程序之间可以共享它。flex的Modules技术将应用程序分割成小块、模块,主程序动态的加载所需要的模块。主程序在启动时并不全部加载所有的模块。当用户和模块没有交互的时候它不需要加载模块,同时它在模块不需要的时候可以卸载模块并释放内存和资源。

flex的Modules技术主要有如下的优点:
让swf文件初始下载尺寸更小
让加载时间更短
对应用程序更好的封装性。

一个Module是一个特殊的可以动态加载的包含IFlexModuleFactory类工厂的swf文件。它允许应用程序在运行时加载代码并在不需要主程序相关连类实现的情况下创建类的实例。

Module和RSLs(运行时共享库)很相似,他们独立分离代码将应用程序分成独立的加载的swf文件。但它比RSLs更加灵活,因为它可以在运行时动态加载/卸载并且不依赖于应用程序编译。

使用Modules的两个典型的应用场景是不同用户路径的大型应用程序和门户应用程序。 (分析略)

Modules实现了标准的类工厂接口。

通过使用共享的接口定义,减少了模块和shell之间的硬依赖(耦合)。提供了一种类型安全的沟通机制并在没有增加swf文件大小的情况下增加了一个抽象层。

下面图片展示了modules和shell之间接口的关联关系

 ModuleDiagram

ModuleManager 负责管理加载了的modules集合,将之对待为按照module URL为索引的单例map。加载module会触发一系列的事件来让客户端监控module的状态。module只加载一次,但是会重载并分发事件,因此客户端代码可以简单的依赖 READY 事件来获取module的类工厂来使用它。

ModuleLoader类在ModuleManager API之上最高级的API,它提供了一个基于module架构的简单实现,但是ModuleManager提供了module之上的更好的控制。

默认下,一个module会被加载进当前应用程序domain的子domain。你可以通过使用ModuleLoader的applicationDomain的属性来指定不同的应用程序domain。

因为module被加载到子domain中,因此它拥有的类将不属于主应用程序的domain中。举例:当一个module加载了PopUpManager类,那么在整个应用程序中它就变成了PopUpManager类的Owner,因为它注册到SingletonManager中。加入另外一个module晚些试图使用PopUpManager,Adobe ® Flash® Player 将会抛错。

解决方法是确保如PopUpManager、DragManager这些managers和一些共享服务都定义在主应用程序中(或者晚加载入应用程序domain中)。这样这些类可以被所有的module使用。典型的,都是通过将他们添加到脚本块中:

import mx.managers.PopUpManager;
import mx.managers.DragManager;
private var popUpManager:PopUpManager;
private var dragManager:DragManager;

这项技术同时也应用到components,当module第一次使用component时,将在它自己的domain中拥有这些component的类定义。作为结果,如果别的module试图使用这些已经被另一个module使用的component,它的定义将会不能匹配到现存的定义中。因此,为了避免component的定义不匹配,在主应用程序中创建component的实例,让所有的module去引用。

因为module必须和应用程序再同一个security domain中,当你在AIR应用程序中使用任何的module SWF文件时,必须和主应用在相同的目录或者在其子目录中,确保他们在相同的security沙盒中。一个确保的方法是使用URL引用module位置不要包含“../”。

创建模块化的应用程序:

1 创建任意数量的modules。基于MXML文件的根节点是<mx:Module>。基于AS的扩展Module或者ModuleBase类。

2 编译module,方式如同应用程序的编译。可以使用基于命令行的mxmlc或者集成于flexbuilder中的编译器。

3 创建一个应用程序类。

4 在应用程序文件中使用<mx:ModuleLoader>来加载modules。或者你也可以使用mx.modules.ModuleLoader和mx.modules.ModuleManager类的方法来加载。

编译module
使用命令行举例:mxmlc MyModule.mxml
编译后生成一个swf文件,它不能独立运行也不能被浏览器执行,它只能被应用程序加载为module。它不能被Adobe® Flash® Player、Adobe® AIR,™ 、浏览器所直接运行。

当编译module后,你应当试图删除掉module和应用程序之间的那些冗余文件。你可以通过创建应用程序的link report来达到这个目的。当然了,flexbuilder可以自动的为你做这些。

减小module的大小

module的尺寸主要由module所使用的component和类来决定。默认情况下,module包含它所依赖的所有component的框架代码,这可能会导致其尺寸非常的大。

要想减小其尺寸,你可以通过指令让它导出应用程序class来优化它。只让module包含它所需要的类。

用命令行编译器来做的话,将在包含module的应用程序中产生一个linker report。在编译时采用load-externs选项。这个过程在flexbuilder中也需要。

用命令行编译器创建和使用linker report

1 产生linker report 和编译应用程序

mxmlc -link-report=report.xml MyApplication.mxml

默认的linker report输出位置和编译器输出问题相同,一般为bin目录。

2 编译module并传递linker report到load-externs选项
mxmlc -load-externs=report.xml MyModule.mxml

重新编译module

如果module和应用程序在相同的工程下,那么当module改变时并不需要重新编译应用程序。这是因为应用程序是运行时加载module,而在编译期并不强制检查。

同样当你改变应用程序时也不需要重新编译module。

如果module和应用程序在不同的工程下,必须重新编译module。

但是如果当改变有可能影响linker report或代码,你必须重新编译相应的应用程序和module。

 

 

调试module

 

调试使用了module的应用程序,你必须设置调试编译器选项为true。否则你将不能在module中设置中断点或在他们中间收集调试信息。

在flexbuilder中调试选项默认是开启的。在命令行,调试是默认关闭的。

 

一个很普遍的问题是如果一个module包含了其他module所要实用的类定义这种情况。在这种情况,别的module使用时会抛错,原因见前面。解决方法是把

此类定义到应用程序domain中。

 

在不同的服务器中加载module

在不同的服务器中加载module,必须在其彼此间建立信任。

跨域访问应用程序

加载应用程序时必须调用allowDomain()方法并且指定你需要加载的module所在的目标domain。因此在应用程序预初始话事件处理时指定目标域来确保程序在module加载前启动。

在module所在的远程服务的cross-domain文件,增加一个entry来指定加载应用程序的服务位置。

在你自己加载的应用程序中的preinitialize事件处理器中加载远程cross-domain文件。

在被加载的module调用allowDomain方法来和调用者通讯。

 

下面的例子展示了如何在加载应用程序中的init方法

The following example shows the init() method of the loading application:

public function setup():void {

    Security.allowDomain("remoteservername");

    Security.loadPolicyFile("http://remoteservername/crossdomain.xml");

    var request:URLRequest = new URLRequest("http://remoteservername/crossdomain.xml");

    var loader:URLLoader = new URLLoader();

    loader.load(request);

}

下面展示被加载模块的init()方法

public function initMod():void {

    Security.allowDomain("loaderservername");

}

 

下面是cross-domain的写法:

<!-- crossdomain.xml file located at the root of the server -->

<cross-domain-policy>

    <allow-access-from domain="loaderservername" to-ports="*"/>

</cross-domain-policy>

 

预加载module

 

当你第一次开启应用程序来使用module,此应用程序将会比不使用module的应用程序尺寸更小。同时它也会减小等待时间。但同时,它将会在你访问以前非module的地方

增加延迟。这是因为它不是预加载的。他们在第一次请求的时候被加载。

 

当module第一次被加载时,module的swf文件通过网络传输并储存到浏览器的缓存中。当它被卸载后又被加载时,等待时间会稍短,

这是因为Flash Player将在客户端浏览器缓存中加载它,而非网络。

 

Module的swf文件和其他所有的swf文件一样,存在于客户端缓存一直到用户清空他们。因此,module可以被主应用程序跨不同的session访问,减少

加载时间,但着也依赖于浏览器的缓存清空频率。

你可以预加载module到内存即使当它目前并没有被用到的时候。使用IModuleInfo类的load方法在应用程序启动时可以预加载module。它将module加载到内存,但是并没有创建其实例。

参考下面的例子:

<?xml version="1.0"?>
<!-- modules/PreloadModulesApp.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="preloadModules()">
    <mx:Script>
        <![CDATA[
        import mx.events.ModuleEvent;
        import mx.modules.ModuleManager;
        import mx.modules.IModuleInfo;
        
        private function preloadModules():void {
            // Get a reference to the module's interface. 
            var info:IModuleInfo = 
                ModuleManager.getModule("BarChartModule.swf");
            info.addEventListener(ModuleEvent.READY, modEventHandler);
            
            // Load the module into memory. The module will be
            // displayed when the user navigates to the second
            // tab of the TabNavigator.            
            info.load();
        }
        
        private function modEventHandler(e:ModuleEvent):void {
            trace("module event: " + e.type); // "ready"
        }
        ]]>
    </mx:Script>

    <mx:Panel 
        title="Module Example" 
        height="90%" 
        width="90%" 
        paddingTop="10" 
        paddingLeft="10" 
        paddingRight="10" 
        paddingBottom="10"
    >

        <mx:Label width="100%" color="blue"
            text="Select the tabs to change the panel."/>

        <mx:TabNavigator id="tn"
            width="100%" 
            height="100%" 
            creationPolicy="auto"
        >
            <mx:VBox id="vb1" label="Column Chart Module">
                <mx:Label id="l1" text="ColumnChartModule.swf"/>
                <mx:ModuleLoader url="ColumnChartModule.swf"/>
            </mx:VBox>

            <mx:VBox id="vb2" label="Bar Chart Module">
                <mx:Label id="l2" text="BarChartModule.swf"/>
                <mx:ModuleLoader url="BarChartModule.swf"/>
            </mx:VBox>
        </mx:TabNavigator>
    </mx:Panel>
</mx:Application>
 
使用ModuleLoader事件

ModuleLoader类会触发很多事件,包括setup, ready, loading, unload, progress, error, 和urlChanged。你可以通过这些事件来记录程序

加载过程,找寻合适module已经被卸载或者何时ModuleLoader目标url已经改变。

 

下面的例子使用定制的ModuleLoader组件,这个组件在主应用程序加载module时对每一个事件都做了一次报告:

定制后的客户端程序

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- modules/CustomModuleLoader.mxml -->
<mx:ModuleLoader xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" creationComplete="init()">
  <mx:Script>
    <![CDATA[
    public function init():void {
        addEventListener("urlChanged", onUrlChanged);
        addEventListener("loading", onLoading);
        addEventListener("progress", onProgress);
        addEventListener("setup", onSetup);
        addEventListener("ready", onReady);
        addEventListener("error", onError);
        addEventListener("unload", onUnload);

        standin = panel;
        removeChild(standin);        
    }
    
    public function onUrlChanged(event:Event):void {
        if (url == null) {
            if (contains(standin))
                removeChild(standin);
        } else {
            if (!contains(standin))
                addChild(standin);
        }
        progress.indeterminate=true;
        unload.enabled=false;
        reload.enabled=false;
    }

    public function onLoading(event:Event):void {
        progress.label="Loading module " + url;
        if (!contains(standin))
            addChild(standin);

        progress.indeterminate=true;
        unload.enabled=false;
        reload.enabled=false;
    }
    
    public function onProgress(event:Event):void {
        progress.label="Loaded %1 of %2 bytes...";
        progress.indeterminate=false;
        unload.enabled=true;
        reload.enabled=false;
    }
    
    public function onSetup(event:Event):void {
        progress.label="Module " + url + " initialized!";
        progress.indeterminate=false;
        unload.enabled=true;
        reload.enabled=true;
    }
    
    public function onReady(event:Event):void {
        progress.label="Module " + url + " successfully loaded!";
        unload.enabled=true;
        reload.enabled=true;

        if (contains(standin))
            removeChild(standin);
    }
    
    public function onError(event:Event):void {
        progress.label="Error loading module " + url;
        unload.enabled=false;
        reload.enabled=true;
    }
    
    public function onUnload(event:Event):void {
        if (url == null) {
            if (contains(standin))
                removeChild(standin);
        } else {
            if (!contains(standin))
                addChild(standin);
        }
        progress.indeterminate=true;
        progress.label="Module " + url + " was unloaded!";
        unload.enabled=false;
        reload.enabled=true;
    }
    
    public var standin:DisplayObject;
    ]]>
  </mx:Script>

  <mx:Panel id="panel" width="100%">
    <mx:ProgressBar width="100%" id="progress" source="{this}"/>
    <mx:HBox width="100%">
      <mx:Button id="unload" 
        label="Unload Module" 
        click="unloadModule()"
      />
      <mx:Button id="reload" 
        label="Reload Module" 
        click="unloadModule();loadModule()"
      />
    </mx:HBox>
  </mx:Panel>
</mx:ModuleLoader>
主应用程序:
<?xml version="1.0"?>
<!-- modules/EventApp.mxml -->
<mx:Application xmlns="*" xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        <![CDATA[
            [Bindable]
            public var selectedItem:Object;
        ]]>
    </mx:Script>
    <mx:ComboBox 
        width="215" 
        labelField="label" 
        close="selectedItem=ComboBox(event.target).selectedItem"
    >
        <mx:dataProvider>
            <mx:Object label="Select Coverage"/>        
            <mx:Object 
                label="Life Insurance" 
                module="insurancemodules/LifeInsurance.swf"
            />
            <mx:Object 
                label="Auto Insurance" 
                module="insurancemodules/AutoInsurance.swf"
            />          
            <mx:Object 
                label="Home Insurance" 
                module="insurancemodules/HomeInsurance.swf"
            />
        </mx:dataProvider>
    </mx:ComboBox>

    <mx:Panel width="100%" height="100%">
        <CustomModuleLoader id="mod" 
            width="100%" 
            url="{selectedItem.module}"
        />
    </mx:Panel>
    <mx:HBox>
        <mx:Button label="Unload" click="mod.unloadModule()"/> 
        <mx:Button label="Nullify" click="mod.url = null"/>
    </mx:HBox>  
</mx:Application>

另一个采用form的例子:

<?xml version="1.0" encoding="utf-8"?>
<!-- modules/insurancemodules/AutoInsurance.mxml -->
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute" 
    backgroundColor="#ffffff" 
    width="100%" 
    height="100%"
>
    <mx:Label 
        x="147" 
        y="50" 
        text="Auto Insurance" 
        fontSize="28" 
        fontFamily="Myriad Pro"
    />
    <mx:Form left="47" top="136">
        <mx:FormHeading label="Coverage"/>
        <mx:FormItem label="Latte Spillage">
            <mx:TextInput id="latte" width="200" />
        </mx:FormItem>
        <mx:FormItem label="Shopping Cart to the Door">
            <mx:TextInput id="cart" width="200" />
        </mx:FormItem>
        <mx:FormItem label="Irate Moose">
            <mx:TextInput id="moose" width="200" />
        </mx:FormItem>
        <mx:FormItem label="Color Fade">
            <mx:ColorPicker />
        </mx:FormItem>
    </mx:Form>
</mx:Module>

 

使用error事件

 

error事件用来处理异常。下面的例子:

<?xml version="1.0"?>
<!-- modules/ErrorEventHandler.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        <![CDATA[
        import mx.events.ModuleEvent;
        import mx.modules.*;
        import mx.controls.Alert;
        
        private function errorHandler(e:ModuleEvent):void {
            Alert.show("There was an error loading the module." + 
                " Please contact the Help Desk.");
            trace(e.errorText);
        }
  
        public function createModule():void {
            if (chartModuleLoader.url == ti1.text) {
                // If they are the same, call loadModule.   
                chartModuleLoader.loadModule();
            } else {
                // If they are not the same, then change the url, 
                // which triggers a call to the loadModule() method.
                chartModuleLoader.url = ti1.text;
            }
        }
        
        public function removeModule():void {
            chartModuleLoader.unloadModule();
        }

        ]]>
    </mx:Script>

    <mx:Panel title="Module Example" 
        height="90%" 
        width="90%" 
        paddingTop="10" 
        paddingLeft="10" 
        paddingRight="10" 
        paddingBottom="10"
    >
        <mx:HBox>
            <mx:Label text="URL:"/>
            <mx:TextInput width="200" id="ti1" text="ColumnChartModule.swf"/>
            <mx:Button label="Load" click="createModule()"/>
            <mx:Button label="Unload" click="removeModule()"/>
        </mx:HBox>
        <mx:ModuleLoader id="chartModuleLoader" error="errorHandler(event)"/>
    </mx:Panel>
</mx:Application>

使用progress事件

 

通过使用progress事件来追踪module加载状态。增加一个progress事件的监听器后,在module的加载时,flex会调用这个监听器。每次它被调用时,你可以

查看这个事件的bytesLoaded属性来判断它的进度百分比属性。

下面的例子:

<?xml version="1.0"?>
<!-- modules/SimpleProgressEventHandler.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        <![CDATA[
        import mx.events.ModuleEvent;
        import flash.events.ProgressEvent;
        import mx.modules.*;
        
        [Bindable]
        public var progBar:String = "";
        [Bindable]
        public var progMessage:String = "";
        
        private function progressEventHandler(e:ProgressEvent):void {
            progBar += ".";
            progMessage = 
                "Module " +  
                Math.round((e.bytesLoaded/e.bytesTotal) * 100) + 
                "% loaded";
        }

        public function createModule():void {
            chartModuleLoader.loadModule();
        }
        
        public function removeModule():void {
            chartModuleLoader.unloadModule();
            progBar = "";
            progMessage = "";
        }
        ]]>
    </mx:Script>

    <mx:Panel title="Module Example" 
        height="90%" 
        width="90%" 
        paddingTop="10" 
        paddingLeft="10" 
        paddingRight="10" 
        paddingBottom="10"
    >        
        <mx:HBox>
            <mx:Label id="l2" text="{progMessage}"/>
            <mx:Label id="l1" text="{progBar}"/>
        </mx:HBox>  

        <mx:Button label="Load" click="createModule()"/>
        <mx:Button label="Unload" click="removeModule()"/>

        <mx:ModuleLoader 
            id="chartModuleLoader" 
            url="ColumnChartModule.swf" 
            progress="progressEventHandler(event)"
        />
    </mx:Panel>    
</mx:Application>

你也可以将module连接到一个ProgressBar控件。看下面的例子:

<?xml version="1.0"?>
<!-- modules/MySimpleModuleLoader.mxml -->
<mx:ModuleLoader xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        <![CDATA[        
            private function clickHandler():void {
                if (!url) { 
                    url="ColumnChartModule.swf"; 
                } 
                loadModule();
            }        
        ]]>
    </mx:Script>

    <mx:ProgressBar 
        id="progress" 
        width="100%" 
        source="{this}"
    />
    <mx:HBox width="100%">
      <mx:Button 
        id="load" 
        label="Load" 
        click="clickHandler()"
      />
      <mx:Button 
        id="unload" 
        label="Unload" 
        click="unloadModule()"
      />
      <mx:Button 
        id="reload" 
        label="Reload" 
        click="unloadModule();loadModule();"
      />
    </mx:HBox>
</mx:ModuleLoader>

 

<?xml version="1.0"?>
<!-- modules/ComplexProgressEventHandler.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*">

    <mx:Panel title="Module Example" 
        height="90%" 
        width="90%" 
        paddingTop="10" 
        paddingLeft="10" 
        paddingRight="10" 
        paddingBottom="10"
    >        
        <mx:Label text="Use the buttons below to load and unload    
            the module."/>
        <local:MySimpleModuleLoader id="customLoader"/>
    </mx:Panel>
    
</mx:Application>

这个例子并不会对所有的事件改变ProgressBar标签的属性,加入你加载了module按后再卸载它,label属性还是保持“LOADING 100%”。

为了调整它的属性,你必须定义其他的ModuleLoader事件处理器,比如unload和error事件

flex一个动态添加卸载Module的例子 在动态加载module时,容易出错,这是因为加载以后需要卸载,请看示例代码,可运行。 立即下载

相关推荐

服务器AutoDL自己部署QWen3

说明:核心参数:30B 模型原精度权重文件约 60GB,单张 PRO 6000 拥有 48GB 显存,单卡塞不下原精度模型,2张 PRO 6000 = 96GB 总显存,这不仅能装下模型,还能留出约 30GB 显存给 KV Cache(上下文长度) 以及 Omni 多模态组件 处理图片/视频输入时的额外开销。1. 前提准备模型选择:直接下载到 AutoDL 服务器上=》原精度模型(BF16/FP16) 的 Qwen3-Omni-30B,选择的示例和环境如下。# 3. 正式执行模型下载。

xiaoxiao_00001的博客 416

关于flex的module开发

前台的开发,目前RIA技术越来越具有优势,而其中的flex目前也出到了版本3.之前采用flex开发展现层的时候,经常为程序越做越大而发愁,今天了解到了flex的module这块的功能,打算通过一两天时间学习和了解。之后进行我们之前项目的前台重构工作。flex的Modules技术是可以被flex程序使用的一个swf文件,它不能脱离程序独立运行,但是多个程序之间可以共享它。flex的Mod

czx33859066的专栏 5004

4万字一文带你看懂车载摄像头技术、市场、发展前景

1、小孔成像 在战国初期,我国学者墨子(公元前468年-公元前376年)和弟子们完成了世界上第一个小孔成像的实验,并记录在《墨经》中:“景到,在午有端,与景长。说在端。”“景。光之人,煦若射,下者之人也高;高者之人也下。足蔽下光,故成景于上;首蔽上光,故成景于下。在远近有端,与于光,故景库内也。” 此文解释了小孔成倒像的原因,指出了光沿直线传播的性质。这是对光直线传播的第一次科学解释。 而西方世界直到公元前350年,古希腊学者亚里士多德提出光学法则,西方人从此了解小孔成像的光学原理。

m0_58838529的博客 1495

Flex中加载多个Module之间的事件监听和触发

Flex2.01之后提供了modules模块化开发包,开发者可以将程序的某些模块编译成swf,在需要的地方load进去,实现模块化的开发。现在问题来了,每个module会被编译成swf,在一个Application中,module之间该如何通信交互呢?通常来说,在一个swf中,组件间的交互通信可以直接addEventListener 和dispatchEvent来完成事件的传递。当然这样标准的做法也适用于module。理解在AS 3.0中事件遵循向上传递的原则,那么下面的工作就好做了。例如,在一个Appli

好好学习,天天代码 4164

Ollama本地大模型部署指南:从核心原理到实战避坑

大语言模型(LLM)作为人工智能领域的核心技术,通过海量数据训练获得强大的语言理解和生成能力。其工作原理基于Transformer架构,通过自注意力机制处理序列数据,在文本生成、代码编写和对话系统等场景展现出巨大价值。随着开源模型的普及,本地部署成为关注焦点,它解决了数据隐私和定制化需求,但面临环境配置和资源管理的挑战。Ollama作为开源工具,通过封装模型格式和统一API,简化了本地部署流程,支持GPU加速和性能调优,让开发者能够快速集成到IDE和自动化脚本中,实现高效的本地AI应用部署。

weixin_30915951的博客 452

Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0)

本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。

weixin_29235525的博客 850

处理Flex 页面的后退前进刷新关闭事件

1. 在 index.template.html 中增加javascript window.onbeforeunload = onbeforeunload_handler;   function onbeforeunload_handler()    {       var warning="";     var fxControl = document.${applica

jiangyu198558的专栏 676

【虚幻引擎UE】UE5 阴影异常与优化

【虚幻引擎UE】UE5 阴影异常与优化解决方案合集

灵境引路人 3万+

-flex_merge drop 和-flex_merge union 和-flex_merge reference的区别

-flex_merge merge功能覆盖率的三个选项

qq_39524121的博客 1631

交通仿真软件:SUMO_(13).Python脚本与TraCI接口

通过TraCI接口,用户可以实现与SUMO仿真器的实时交互,获取和控制交通数据。本文档详细介绍了如何使用Python脚本与TraCI接口进行交互,包括基本的设置、数据获取和控制方法。此外,还展示了几个高级应用示例,如交通流优化、多代理系统、车辆路径规划和车辆行为模拟。这些示例可以帮助用户更好地理解如何利用TraCI接口进行复杂的交通仿真和分析。希望这些内容对您有所帮助,如果您有任何问题或需要进一步的帮助,请参考SUMO的官方文档或社区支持。

kkchenjj的博客 999

基于Simulink的新能源汽车热管理系统设计与仿真详细介绍

新能源汽车(如纯电动汽车和混合动力汽车)的热管理系统是确保电池、电机和电控系统高效运行的关键。通过合理设计热管理系统,可以提高车辆的续航里程、延长电池寿命并提升整体性能。以下是如何在 MATLAB 和 Simulink 中设计并仿真一个新能源汽车热管理系统的详细步骤。通过上述步骤,我们成功设计并实现了基于 Simulink 的新能源汽车热管理系统。该系统能够根据目标温度和实际反馈,通过 PID 控制器或模糊控制器调整冷却液流量、风扇转速等参数,实现对电池、电机和车内的精确温度控制。

xiaoheshang_123的博客 385

Flex的Module通信,事件和接口方式

Module组件 <mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="module1_creationCompleteHandler(event)" xmlns:mx="librar

chenscmail的专栏 1843

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

前端学习笔记一.Flex布局与VUE2中vuex的使用

3.getters:例如前文state中的leave,使用getters方法可以生产一个依赖leave的缓存,比如leave*2,随着leave的改变而改变,并且不会去影响leave的值。由于对异步还没有完全搞明白,在下次的笔记中一块研究吧。$store.commit('模块名/mutations名') // namespaced为true。获取getters: {{$store.getters['模块名/getters名']}}获取数据项: {{$store.state.模块名.数据项名}}

ytyy1的博客 743

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

字节面试lllll

​这个环境包含了它所能访问的所有变量、作用域链​。

wyzqhhhh的博客 635

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

flex Module

Modules技术        flex的Modules技术是可以被flex程序使用的一个swf文件,它不能脱离程序独立运行,但是多个程序之间可以共享它。flex的 Modules技术将应用程序分割成小块、模块,主程序动态的加载所需要的模块。主程序在启动时并不全部加载所有的模块。当用户和模块没有交互的时候它不 需要加载模块,同时它在模块不需要的时候可以卸载模块并释放内存和资...

张 作强 BLOG 289

Flex load modules READY 事件不触发问题

在使用ModuleLoader加载器;和使用ModuleManager进行加载flex模块时,必须要把对应的变量定义为全局变量, 否则其READY事件不会触发。       参考过很多资料, 归其根本是由于在加载器调用了load方法后, 如果变量未定义为全局变量,那么可能被flxe的gc机制给卸载掉,也即根本的解决方法是不然加载器被gc,即要使用时必须留有应用。由于开始没明白其中道理,犯了个

Xiang 1473

【转载】关于flex的module开发

本文摘自http://ieltsyangliu.spaces.live.com/blog/cns!5C02FE7927131D49!166.entry 前台的开发,目前RIA技术越来越具有优势,而其中的flex目前也出到了版本3. 之前采用flex开发展现层的时候,经常为程序越做越大而发愁,今天了解到了flex的module这块的功能,打算通过一两天时间学习和了解。之后进行我们之前项目...

219

ModuleManager and IModuleInfo - loading Flex Modules dynamically

When you’re working with Flex Modules, most of the time the ModuleLoader component will be enough to get you up and running. It will quickly and easily let you load your Modules and add them to the di

xiaoxin888888的专栏 2853

Flex 2.0.1即将发布

Flex2.0.1马上就要发布了,这里先做了介绍 Flex team在休息之前也做了说明 这里是官方发布声明 这里是Flex2的更新页面 这次更新虽然是0.01的更新,但是绝对可以说是很大的更新,主要是: 1. Runtime CSS,这是flex应用可以在运行时改变风格(皮肤) 2. Modules,这是flex已经可以模块化加载和运行,从而缩短了程序加载时间,使得flex应用朝大型应用迈进。

老不死的Flash程序员 1902

flex moudle详解

本文摘自http://ieltsyangliu.spaces.live.com/blog/cns!5C02FE7927131D49!166.entry前台的开发,目前RIA技术越来越具有优势,而其中的flex目前也出到了版本3.之前采用flex开发展现层的时候,经常为程序越做越大

ldongwei的专栏 1087

Flex 学习笔记 Application与Module通信

Flex的Modules技术是可以被flex程序使用的一个swf文件,它不能脱离程序独立运行,但是多个程序之间可以共享它。flex的Modules技术将应用程序分割成小块、模块,主程序动态的加载所需要的模块。主程序在启动时并不全部加载所有的模块。当用户和模块没有交互的时候它不需要加载模块,同时它在模块不需要的时候可以卸载模块并释放内存和资源。 flex的Modules技术主要有如下的优...

150
上一篇: Flex 内存处理的方法。
下一篇: 再flex 通过 调用自身的url,重载整个应用的方法
remote_roamer
博客等级 码龄25年 441粉丝 295原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值