:http://hnjnd.com/ 自己创业做LED环保灯,致力于公益企业,企业公益实践。
记:据官方API描述是可以远程加载Module的,官方air文档中明显避而不谈,在网上淘了几天也没淘个所以然,源代码也看得人迷糊。还有怪异的安全沙箱,调试时variables栏中和java调试时的迥异,让我焦头烂额。打算自己写个module管理,今天做个预备。
2、安全沙箱:
可以在三个地方设置:
1)mmc.cfd操作系统用户控制的文件。我在我机器上依照官方说明按图索骥,no,没有这个文件,只好自己建了个,有没用天知道。官方参考:http://livedocs.adobe.com/flash/9.0_cn/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000350.html
3)程序员控制
Security.allowDomain("www.example.com")
4)策略文件:放web服务器的文件,里面列出了谁谁能加载服务器上的swf等文件,见鬼的是我是air的,类似传统的CS中的客户端,我又没放web服务器上,咋知道自己是谁?只好用“*”号。谁清楚,请指教,谢了。
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
5)遇到的问题:
6)远程下载源代码:原理以二进制流从服务器下载模块swf,写入本地swf,然后用ModuleManager管理即可:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[//长沙飞龙环保:http://hnjnd.com/
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.net.*;
import flash.utils.*;
import mx.controls.Alert;
public var ldr:URLLoader;
protected function download_clickHandler(event:MouseEvent):void
{
var request:URLRequest = new URLRequest("http://localhost:8080/fairlooong/Mod4.swf"); //长沙飞龙环保http://hnjnd.com/
var fileRef:FileReference = new FileReference();
try{
fileRef.download(request);
}catch(error:Error){
trace("Unable to download file.");
}
}
protected function writeFile_clickHandler(event:MouseEvent):void
{
var testXML:XML =<mousebomb><site>www.mousebomb.org</site><blog>www.flashj.cn</blog></mousebomb>;
Alert.show(Security.sandboxType);
var rootDirs:Array = File.getRootDirectories();
for (var i:uint = 0; i < rootDirs.length; i++) {
trace(rootDirs[i].nativePath);
}
trace(File.applicationStorageDirectory.url);
trace(File.desktopDirectory.url);
trace(File.documentsDirectory.url);
trace(File.documentsDirectory.url);
trace(File.applicationDirectory.nativePath );
var file:File = File.applicationStorageDirectory.resolvePath(File.applicationDirectory.nativePath+"/test.xml");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
var outputString:String = '<?xml version="1.0" encoding="utf-8"?>';
outputString += testXML.toXMLString();
fileStream.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandle)
fileStream.writeUTFBytes(outputString);
fileStream.close();
}
private function ioErrorHandle(event:IOErrorEvent):void{
trace("IO error");
}
protected function writeMySWF():void{
ldr = new URLLoader();
var url:String = "http://localhost:8080/fairlooong/Mod4.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.dataFormat=URLLoaderDataFormat.BINARY;
ldr.addEventListener(Event.COMPLETE,completeHander);
ldr.addEventListener(IOErrorEvent.IO_ERROR, ioErroHandler);
ldr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
ldr.load(urlReq);
}
private function ioErroHandler(event:IOErrorEvent):void{
Alert.show(event.text);
}
private function securityErrorHandler(event:SecurityErrorEvent):void{
Alert.show(event.text);
}
private function completeHander(event:Event):void{
var bytes:ByteArray = ldr.data as ByteArray;
var myFile:File = File.documentsDirectory.resolvePath(File.applicationDirectory.nativePath+"/test1.swf");
var myFileStream:FileStream = new FileStream();
myFileStream.open(myFile, FileMode.WRITE);
myFileStream.writeBytes(bytes, 0, bytes.length);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<mx:Panel height="83" width="50%" x="143" y="0">
<mx:Button label="开始下载" id="download" click="download_clickHandler(event)" />
<mx:Button label="开始写文件" id="writeFile" click="writeFile_clickHandler(event)" />
<mx:Button label="开始写SWF" id="writeSWF" click="writeMySWF()" />
</mx:Panel>
</s:WindowedApplication>
7)应该是可以直接加载至内存中然后去访问的,待下周末研究
在网上看到一句话:actionscript是个好东西,可是flex不是个好东西
分享到:
相关推荐
另外,`ModuleManager`类允许对已加载和未加载的模块进行操作,包括获取模块引用。 4. **本地存储和SharedObjects**:如果需要在模块之间持久化数据,可以使用Flash Player的本地存储功能,如SharedObjects。这允许...
在本文中,我们将深入探讨"Laravel开发-modulemanager"这一主题,它是一个针对Laravel 5框架的模块管理器。Laravel是一款强大的PHP框架,以其优雅的语法和丰富的功能集而闻名,使得Web应用的开发变得更为高效。而...
Flex客户端缓存是一种技术,主要用于优化Flex应用的性能,尤其是对于那些包含大量SWF文件或者需要频繁更新数据的应用。在Flex3中,客户端缓存机制是开发者用来减少网络带宽消耗、提高用户交互速度的关键工具。本文将...
使用`ModuleManager`类来加载和卸载模块。`mx:ModuleLoader`组件是Flex提供的一种UI组件,可以用来在应用程序中显示和管理模块。模块间的通信可通过事件监听、依赖注入或使用全局静态变量等方式实现。 5. **博文...
`ModuleManager`负责模块的加载和卸载,`ModuleLoader`负责显示和隐藏模块,而`ModuleContainer`可以容纳和布局多个模块。 8. **模块的最佳实践**: - **明确模块边界**:确保每个模块有清晰的责任划分。 - **...
Flex是一种用于构建富互联网应用程序(RIA)的技术,它基于ActionScript编程语言和Flex框架。本文将深入探讨学习Flex所需掌握的关键知识点,包括ActionScript、Flex框架、组件、管理者以及样式与皮肤。 首先,...
Flex加载Module是Adobe Flex框架中的一个关键特性,它允许开发者将大型应用程序分解为多个模块,每个模块都可以独立加载和卸载。这样的设计提高了应用程序的响应速度,降低了初始加载时间,并且使得用户能够在需要时...
Flex模块(Flex Module)是Adobe Flex框架中的一个重要概念,它允许开发者将大型应用程序分解为多个独立的、可重用的组件,这些组件被称为模块。在Flex应用中,模块可以按需加载,从而优化应用程序的启动时间和内存...
#模块管理器 该插件旨在为插件带来一些排序功能以及各种功能,以帮助更轻松地管理不同版本的软件。... var moduleManager = new ModuleManager(">=2.3.5.6"); 这只会加载大于 2.3.5.6 的模块 选项是
6. **在主应用程序中加载模块**:在主应用程序中,我们需要使用`ModuleManager`类来加载和管理这些模块,以便在运行时动态地引入模块功能。 至于"test"这个文件,它可能是压缩包中的一个测试模块或相关配置文件,...
12.4节暂停、倒放和重新播放一个Effect 12.5节创建自定义Effect触发器 12.6节创建渐变特效 12.7节在Flex Effect里使用DisplacementMapFilter过滤器 12.8节创建AnimateColor 特效 12.9节使用Convolution Filter创建...
要使用 ModuleManager,你可以这样写: RepositoryConnector connector = new RepositoryConnector (root); Collection< String> versions = connector . findAvailableVersions( " Sample " ); File file = ...
ModuleManager在大型项目中用于管理模块加载;CursorManager则用于控制鼠标光标显示。 总而言之,ActionScript的学习重点在于掌握基础语法、DisplayList和事件系统,深入理解Flex框架,特别是组件、管理者以及样式...
"modulemanager-module" 是专为Laravel设计的一个模块管理工具,它允许开发者更高效地管理和控制各个模块的状态、配置以及其他相关设置。 ### 1. 模块化的优势 - **代码组织**:模块化有助于将复杂应用分解为小而...
HumusMvc在ZF1应用程序中集成了Zend Framework 2的ModuleManager和ServiceManager。 还有一个 。 将不再使用Zend_Application。 依存关系 任何类似于应用程序 安装 通常,您将在HumusMvcSkeletonApplication中安装...
HumusMvc骨架应用 这是一个使用Zf1 MVC层的简单骨架应用程序,集成了ZF2的ModuleManager和ServiceManager。 该应用程序旨在用作的起始位置。依存关系 安装推荐的获取该项目工作副本的方法是克隆存储库并使用composer...
// 安装 通过将文件夹“KSP Deutsch Patch”和“LanguagePatches”以及文件“ModuleManager.2.6.2.dll”复制到KSP安装的文件夹“GameData”中来安装补丁。 // 兼容性 在更新补丁之前,请务必完全删除旧版本! 不幸...
在这个架构中,Activity、ActivityManager、Module以及ModuleManager等概念扮演着关键角色。 首先,Activity是Android系统中的一个核心组件,代表了应用的用户界面(UI)和各个功能模块的呈现。每个Activity都有其...