标签: air

使用AIR/Flex打开本地文件

我编写了一个AIR应用程序,可以从服务器下载视频和文档.视频在应用程序内部播放,但我希望用户能够在其本机应用程序中打开文档.

我正在寻找一种方法来提示用户在存储在应用程序存储目录中的本地文件上打开/另存为.我已尝试使用FileReference + URLRequest类,但这会引发一个异常,它需要一个远程URL.

我的最后一招只是将文件复制到桌面:\

apache-flex air actionscript-3

12
推荐指数
2
解决办法
2万
查看次数

ActionScript中的绑定如何工作?

据我所知,ActionScript中的var绑定是通过在var更改时自动触发的事件来执行的.我有几个问题:

  1. 如果类没有显式扩展EventDispatcher会发生什么?在编译器中是否存在某种神奇的东西,它基本上使该类成为EventDispatcher?
  2. 如何绑定到静态变量?是否在类中添加了某种隐式静态addEventListener()函数?
  3. 我注意到你可以把[Bindable]放在静态变量而不是静态函数上,为什么会这样?

编辑:

感谢Christophe Herreman的出色回答.但是,我从上面的问题中得到了一些后续内容.我想知道是否有人可以为我填补空白(我试着将这些问题编号为4,5,6,但出于某种原因它们出现了1,2,3!)

  1. 我已将-keep选项添加到编译器并查看生成的绑定代码.谁能解释一下如何应用这段代码?编译器似乎为每个类生成一个名为BindableProperty的类,其中包含getter和setter.这怎么折叠到我写的课上?该功能看起来有点像C#中的部分类 - 这是专门的幕后编译器功能,还是我可以自己使用的东西?

  2. BindableProperty类仍然没有显式实现EventDispatcher,生成的类如何实现事件调度?

  3. 在问题3中,我询问了绑定到静态函数,但实际上我的意思是静态getter和setter函数.这似乎不被允许.

apache-flex air data-binding actionscript-3

12
推荐指数
1
解决办法
5691
查看次数

SQLite参数 - 不允许tablename作为参数

我正在通过Flex在AIR中开发一个应用程序,但我没有看到我在哪里遇到SQLite(我已经习惯了MySQL).参数有效,但仅限于某些情况.这部分是针对sql注入的内置卫生系统吗?谢谢你的帮助!

作品:

源码

"INSERT:Fields FROM Category",其中参数为:Fields ="*"

AS3

var statement:SQLStatement = new SQLStatement();
statement.connection = connection;
statement.text = "INSERT :Fields FROM Category";
statement.parameters[":Fields"] = "*";
statement.execute;
Run Code Online (Sandbox Code Playgroud)

不起作用(":"表中的SQL语法错误):

源码

"INSERT:Fields FROM:Table",其中参数为:Fields ="*"和:Table ="Category"

AS3

var statement:SQLStatement = new SQLStatement();
statement.connection = connection;
statement.text = "INSERT :Fields FROM :Table";
statement.parameters[":Fields"] = "*";
statement.parameters[":Table"] = "Category";
statement.execute;
Run Code Online (Sandbox Code Playgroud)

apache-flex air sqlite

12
推荐指数
1
解决办法
8865
查看次数

添加列到sqlite db如果不是EXISTS - flex/air sqlite?

我有一个我一直在研究的flex/air应用程序,它使用在初始应用程序启动时创建的本地sqlite数据库.

我已经为应用程序添加了一些功能,在这个过程中我必须向其中一个数据库表添加一个新字段.我的问题是如何让应用程序创建一个位于已存在的表中的新字段?

这是创建表的行

stmt.text = "CREATE TABLE IF NOT EXISTS tbl_status ("+"status_id INTEGER PRIMARY KEY AUTOINCREMENT,"+" status_status TEXT)";
Run Code Online (Sandbox Code Playgroud)

现在我想添加一个status_default字段.

谢谢!

谢谢 - MPelletier

我添加了你提供的代码,它确实添加了字段,但是现在下次我重启我的应用程序时出现错误 - 'status_default'已经存在'.

那么我怎样才能在你提供的那一行中添加一些IF NOT EXISTS语句呢?

air sqlite field flex3

12
推荐指数
1
解决办法
3万
查看次数

AS3/AIR - 创建纯文本文件?

是否可以使用AS3或AIR创建纯文本文件?

示例:我想创建一个名为"MyTextFile.txt"的纯文本文件,让它包含"这是我的文本文件"的文本.并将其保存到我的桌面.

另一种选择是让文件已经存在于目录中,所以我只需要重写其内容 - 假设这样会更容易.

所有这些都应该作为后台进程发生,不会出现任何保存的拨号面板.

air file plaintext actionscript-3

12
推荐指数
1
解决办法
3万
查看次数

无法运行Flash Builder 4.6调试器

我已经尝试了一切,防火墙,重新安装等等.无论我做什么,我都无法让调试器连接.

我只是用Flex和Actionscript编写一个简单的Air应用程序.但任何类型的应用程序上的任何类型的调试都不起作用.我收到这条消息

Flash Builder调试器无法连接到正在运行的应用程序.

初始错误

然后,当我再次尝试时,我得到这个消息

无法识别的Windows套接字错误:0:JVM_Bind

次要错误

没有调试运行程序工作正常.

apache-flex air debugging flash flash-builder

12
推荐指数
1
解决办法
1万
查看次数

Adobe AIR SDK和Flex SDK的关系?

我试图理解Flash平台的整个混乱(主要是因为我理解被抛出的术语)到目前为止,我还无法弄清楚AIR和Flex SDK的确切关系.在没有真正查看SDK的情况下,我的理解是AIR可以让您开发Flash(即ActionScript,显然也是JavaScript/HTML)应用程序,这些应用程序可以由AIR运行时运行而无需浏览器(例如纯桌面或智能手机应用程序).Flex SDK似乎是类和其他API(类似于JavaFX?)的集合,以扩展"标准"Flash库.

现在,我已经下载了两个SDK的最新版本,显然,它并不那么简单.所以,首先我查看了AIR SDK(http://www.adobe.com/devnet/air/air-sdk-download.html,v3.4截至目前).据我所知,"adt"实用程序是AIR的主要部分,可以让您打包已完成的应用程序.但是,我不确定AIR SDK是否实际包含一个编译器 - 假设您有一堆ActionScript .as文件,并希望使用AIR SDK将它们转换为.swf或.air文件,这是否可能?

不幸的是,Flex SDK(http://www.adobe.com/devnet/flex/flex-sdk-download.html,v4.6截至目前)无助于混淆.它确实包括编译器和其他工具,但在其"bin"文件夹中,我还可以找到"adt"和"adl" - AIR工具!更重要的是,它还具有"AIR SDK license.pdf"和"AIR SDK readme.txt"文件; 从这些方面来看,Flex SDK似乎包含一些旧版本的AIR SDK版本2.

为了让事情更加混乱,我还在Adobe的网站上找到了"Flex和AIR®SDK的组合版本(Flex SDK 4.6.0.23201和AIR 3.4.0.2540 SDK)"(http://gaming.adobe.com/getstarted /).似乎这不仅仅是通过将AIR 3.4文件复制到Flex 4.6文件来创建的,而是将另一个项目添加到列表中.

所以,基本上,我想知道这两个(三个?)SDK之间的区别.我需要Flex实用程序来编译吗?为什么"纯"Flex SDK包含AIR的部分(?)?我可以将任何版本的AIR SDK复制到Flex SDK中,以便与FlashDevelop一起使用吗?

apache-flex air flash sdk flashdevelop

12
推荐指数
1
解决办法
7113
查看次数

使用Github API添加新Gist

我正在Adobe Air制作一个小应用程序,我需要与Github Gist API进行交互.但是我有点卡住了.

如果您不熟悉Adobe Air,您仍然可以提供帮助,XMLHttpRequestjavascript对象可以执行跨域请求,因为没有这样的域.所以这里没有Adobe Air的具体内容.

在我被困的地方,我想我需要对自己进行身份验证然后进行POST.我只是不明白

javascript air api github

11
推荐指数
1
解决办法
3552
查看次数

适用于Android的AIR 3原生扩展 - 可以/如何包含第三方库?

随着围绕AIR 3中的本机扩展支持的所有新的炒作,我没有找到确认或否认可以在本机Android实现中包含和使用外部JAR的单一事物.

所有这些示例基本上都展示了嵌入内置Android API的能力.但是,如果有人想要使用数百个库中的一个使其更容易呢?当然看起来这应该是可能的.我将尝试概述我所做的事情,也许有人会发现一个缺陷:

  1. 使用第三方Android库XYZ的编译导入成功创建了原生Android库.
  2. 导出的Android项目为JAR文件. 注意:引用的第三方JAR位于jar内的/ lib中.
  3. 成功创建了ActionScript库(SWC)以与本机Android库进行交互.
  4. 从SWC,extension.xml,Android JAR和library.swc创建了ANE包(用于从SWC中提取的平台Android-ARM).
    注意:还尝试将第三方库放在此处概述的文件结构中:http://help.adobe.com/en_US/air/extensions/WSf268776665d7970d-24823354 12ffea65006-8000.html#WSf268776665d7970d-6be13ace1308aaebeca-7fff.我认为这更适合使用JNI或其他任何运行时类型执行,因此该文章让我有点困惑.
  5. 在示例Flex Mobile项目中使用ANE.
  6. 在测试DroidX设备上构建并安装APK文件.
  7. 可以在LogCat中成功查看AIR应用程序加载(和跟踪语句) "ActivityManager: Displayed com.me.androidapp/.AppEntry"
  8. 可以成功地看到AIR应用程序通过运行时调用本机Android Java代码来实例化扩展和上下文. "mye_native: MyExtension.initialize", "mye_native: MyExtensionContext.createContext"
  9. 一旦AIR应用程序尝试调用本机函数,它就会爆炸,无法从第三方Android库中找到这些类: E dalvikvm: Could not find class 'com.thirdparty.SomeClass', referenced from method com.me.nativeExtentions.MyExtensionFunction.call

有任何想法吗?它似乎应该以这种方式工作.

我注意到的一件事是,当我从我的纯Java Android应用程序(也有第三方安卓库)中分离出APK和Dex时,看起来第三方的类已包含在其中(不仅仅是jar参考).当我使用我的Flex APK做同样的事情时,我发现只有我自己的Java类和Adobe的,而第三方无法找到我能看到的.

我在Adobe论坛上发布了这个,但我想我会试试SO智囊团.谢谢.

air android flex-mobile

11
推荐指数
1
解决办法
5681
查看次数

自动更新电子

我正在寻找为我所拥有的Electron安装部署自动更新功能,但是我发现很难在网络上找到任何资源.

我之前使用Adobe Air构建了一个自包含的应用程序,编写更新代码似乎更容易,有效地检查了URL并自动下载并安装了跨Windows和MAC OSX的更新.

我目前正在使用电子样板来简化构建.

我有几个问题:

  • 如何调试自动更新功能?我是否使用本地节点服务器设置本地连接并进行测试,还是可以使用任何Web服务器?
  • 在签署应用程序方面,我只想在MAC OSX上运行应用程序,特别是Windows.我是否必须签署应用程序才能运行自动更新?(我设法使用本地证书与Adobe Air合作.
  • 是否有任何好的资源详细说明如何实现自动更新功能?因为我很难找到一些关于如何做到这一点的好文档.

air windows macos electron

11
推荐指数
1
解决办法
5688
查看次数