我正在尝试在linux中安装adobe air sdk.我将从http://www.adobe.com/products/air/tools/sdk/下载的软件包解压缩到"AdobeAIRSDK"文件夹中,并将/ bin文件夹添加到PATH环境变量中.但是当我试图运行adl时,它给了我以下错误:
加载运行时出错(/home/monuser/AdobeAIRSDK/bin/../runtimes/air/linux/Adobe AIR/Versions/1.0/Resources/nss3/None/libnss3.so:文件太短)
这里有什么问题,如何解决这个问题?
URLLoader.load建立的连接是否超时?如果存在,它的价值是什么,它在哪里记录并且可以改变?此外,如果发生超时,会调度哪些事件(如果有)?在这些方面,AIR和浏览器应用程序之间是否存在差异?
如果我尝试打开放置在空中app文件夹内的文件,我只会收到"错误#3000:非法路径名称".如果文件位于app-folder之外的其他位置,则可以使用.
private var file:File = File.documentsDirectory;
public function download():void{
var pdfFilter:FileFilter = new FileFilter("PDF Files", "*.pdf");
file.browseForOpen("Open", [pdfFilter]);
file.addEventListener(Event.SELECT, fileSelected);
}
private function fileSelected(e:Event):void
{
var destination:File = File.applicationDirectory
destination = destination.resolvePath("test.pdf");
/*
//This works, also if the file to copy is placed inside the appfolder
file.copyTo(destination, true);
*/
/*This Throws me an Error #3000, but ONLY if the file is located in
the App folder*/
file.openWithDefaultApplication();
}
Run Code Online (Sandbox Code Playgroud)
当我尝试获取相同的文件并将其复制到另一个地方时,它做得很好.
为什么?如果我想打开appfolder中的文件,可以做些什么特别的事情?它也不能在调试模式下工作 - bin-debug.
此致,Temo
另一个Adobe Air的问题,但首先是我的任务背景.它是一个AIR应用程序,它将从USB密钥读取资产,并且必须在WIN和MacOS上运行.问题是,如何在MacOS上将资源加载到应用程序中!听起来很简单,可以在Windows上无缝运行.
这是我想要做的代码片段:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ok);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
var p:String;
if (os == "mac")
{
p = "/Volumes/" + keyVolume.rootDirectory.name + File.separator + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
}
else
{
p = keyVolume.rootDirectory.name + File.separator + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
}
var temp:File = new File(p);
Debugger.Display.text += "\nAttempting to load: " + p;
Debugger.Display.text += "\nDoes it exist? " + temp.exists;
loader.load(new URLRequest(p));
Run Code Online (Sandbox Code Playgroud)
...变量OS和keyVolume正在早期代码中成功设置.此外,我还为ok()和ioErro()定义了事件监听器回调.
运行时,它会在Windows上打印出来:
试图加载:G:\ 0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
它是否存在:true
...然后成功加载资产.
在MacOS上,它打印出来:
试图加载:/Volumes/AC/0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
它是否存在:true
...然后每次都失败并出现IOError.
谁能看到我在这里失踪的东西?我是否有某种权限错误或某些内容(文件具有"读/写"访问权限).USB密钥格式化为MS-DOS FAT32,这可能是个问题吗?
编辑
我将MacOS中的新USB密钥格式化为FAT16并将文件放在上面但没有成功.问题仍然存在
编辑
我现在只是尝试从/ users/-USERNAME-/Desktop加载一个资产,但仍然收到相同的错误,所以看起来它只是USB棒上的权限问题,它比这更广泛.
编辑 …
我如何实施一个系统,使20个应用程序在封闭网络上运行,以便在执行各种任务时保持同步?
每个应用程序在相同的机器上都是相同的.这些机器将具有到主应用程序的套接字连接,该套接字将向诸如的单元发出TCP命令 Play:"Video1.mp4".这些视频同时播放并与彼此保持时间至关重要.
每个单元之间的唯一区别是窗口将在桌面上偏移,因此每个窗口在应用程序上都有不同的视图端口 - 因为这将用于多投影仪设置.
任何解决方案/想法将不胜感激.
我创建了一个Adobe Air应用程序,需要能够在Mac上编辑hosts文件,您需要具有管理员权限才能执行此操作.当您以管理员身份运行可执行文件时,它适用于Windows.我想知道你怎么能在Mac上做同样的事情?如果它因操作系统版本而改变,我正在运行Mac OS X 10.7.4
我尝试了命令sudo open'Application.app',但它没有让我编辑该文件.
谢谢!-Ken
我正在编写一个启动C#控制台应用程序的AIR应用程序,他们需要进行通信.我想为此使用标准输入/标准输出,但我似乎无法使其工作.
当C#应用程序从标准输入获取输入时,它应该通过标准输出将其发回,如果它收到"退出",则退出.我可以从命令行测试它,它可以正常工作.当我从AIR发送字符串时,我没有得到C#应用程序的响应.
我在发布C#应用程序时发送了一个参数,我确实得到了响应,所以我的AIR应用程序至少能够从标准输出接收消息,它只是标准输入无法正常工作.当我通过standardInput从AIR发送消息时,当我发送密钥代码时,我得到一个bytesLoaded = 3的progress事件,当我发送"exit"命令时,bytesLoaded = 5.
这是C#代码:
static void Main(string[] args)
{
if (args.Length > 0)
{
Console.WriteLine(args[0]);
}
while (true)
{
string incoming = Console.ReadLine();
string outgoing = "received: " + incoming;
Console.WriteLine(outgoing);
if (incoming == "exit")
return;
}
}
Run Code Online (Sandbox Code Playgroud)
这是AS3代码:
private function init(e:Event=null):void {
this.removeEventListener(Event.ADDED_TO_STAGE, init);
NativeApplication.nativeApplication.addEventListener(Event.EXITING, onAppClose);
var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var file:File = File.applicationDirectory.resolvePath("test.exe");
info.executable = file;
process = new NativeProcess();
info.arguments.push("native process started");
process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onErrorData);
process.addEventListener(ProgressEvent.STANDARD_INPUT_PROGRESS, onInputProgress);
process.addEventListener(Event.STANDARD_OUTPUT_CLOSE, onOutputClose);
process.addEventListener(Event.STANDARD_ERROR_CLOSE, onErrorClose); …Run Code Online (Sandbox Code Playgroud) 自从更改为AIR 3.6后,我遇到了许多错误,例如:
无法将<s:Sequence>解析为组件实现.

如果我切换到内置的Flex SDK 4.6.0,它可以正常工作.我正在使用Flash Builder 4.6.
更新
我认为这是因为有一个新的ActionScript编译器,SDK中包含新的编译器,这会导致Flex项目出现问题.我在AIR SDK下载页面上读到了这个内容(之前我没有注意到):
Note : Flex users will need to download the original AIR SDK without the new compiler.
我的AIR应用程序正在加载一个包含输入文本字段的SWF文件.我可以输入文本字段,但复制和粘贴被破坏.当我尝试使用键盘快捷键粘贴某些内容时,文本字段将如下所示:

(这不是"T").
经过一系列的复制/粘贴后,它看起来像这样:

当我右键单击文本字段时,没有任何反应,没有出现带有复制/粘贴选项的上下文菜单.
正在加载的SWF在AS2中(实际上不可能将其移植到AS3,因为其中的代码非常庞大且复杂).我不能取代那个SWF,它对我的项目有极高的价值.除了这个麻烦,SWF工作正常.也许我可以在加载器的AS3设置中更改一些配置常量?
出于测试目的,我创建了两个.flas,一个在AS2中,包含一个文本字段,另一个在AS3中并加载文本字段.您可以从此处下载档案中的.flas .
air ×10
apache-flex ×4
flash ×2
actionscript ×1
adobe ×1
c# ×1
file-io ×1
filesystems ×1
flex4.6 ×1
installation ×1
linux ×1
macos ×1
real-time ×1
sdk ×1
tcp ×1