ActionScript 库项目与 Flex 库项目

Posted

技术标签:

【中文标题】ActionScript 库项目与 Flex 库项目【英文标题】:ActionScript Library Project vs. Flex Library Project 【发布时间】:2015-06-20 17:46:30 【问题描述】:

由于 Flash Builder 4.7、AIR SDK 15、16 和 17、Flex SDK 4.6 中 FlexLib 项目和 AS3 Lib 项目之间的不一致性,我遇到了几个问题。 这些的共同点是 FlexLib 不允许(突出显示语法错误)构建/编译常规 AS3Lib 项目中允许的代码片段。 请注意,下面的示例是经过简化的,并且存在现实生活中的用例,即使它违反了良好做法。

包上面的内部类

internal class Before 

    public function Before()

package

    public class Main
    
        public function Main()
        
        
    

在 Flex 库项目中,此代码导致:

1083:语法错误:包意外。

在常规的 ActionScript 库项目中,它运行良好,没有任何警告。

数组键类型贪婪

var array:Array = [Boolean, Number, XML];
for(var c:Class in array)

    if(c is Object)  trace('test') 

在 Flex 库项目中,此代码导致:

1067: 将 String 类型的值隐式强制转换为不相关的类型 类。

在常规的 ActionScript 库项目中,它运行良好,没有任何警告。

常量定义类

public static const FileClass:Class = String;
public function main():void

    if('test' is Vector.<FileClass>)
    
        trace('what?');
    

在 Flex 库项目中,此代码导致:

1120: 未定义属性 FileClass 的访问。

在常规的 ActionScript 库项目中,它运行良好,没有任何警告。 如果有人能说出为什么会发生这种情况或能给我一个线索来寻找解决方案,我将非常感激。

【问题讨论】:

在编译As3库项目时,是否使用编译器选项“启用严格类型检查”和“启用警告”? 【参考方案1】:

根据this,涉及到两种不同的编译器:

使用旧版编译器 对于 ActionScript 项目,Flash Builder 默认使用 ActionScript 编译器 (ASC)。如果您使用的是 Adob​​e Flex SDK 4.6 或更早版本的 Flex SDK,请选择使用旧版编译器以使用旧版编译器。

我想这解释了差异。


以下是解决该问题的尝试。

我不太喜欢图书馆项目。 根据我在资源中找到的内容(上面的链接),这些项目会生成一个 .swc 文件。 我也不太喜欢弹性。 Flex 是“只是”一个用 actionscript 编写的框架。

你的库是 actionscript 库还是 flex 库并不是用户的选择,而是你的代码做了什么。

如果你的库包含一些 flex 组件,我会说它是一个 flex 库项目。 但如果它是普通的旧动作脚本,它就是一个动作脚本库。

假设您的库是一个 actionscript 库。 你将你的库编译成一个 .swc 文件并完成它。

您的是执行该编译步骤的人,而不是您库的用户。我认为他们是否可以执行此编译不是他们关心的问题。 他们真正关心的是他们的包含您的库(.swc 文件)的项目是否可以编译。而且我猜会是这样,因为 .swc 将被使用,而不是编译。

毕竟,如果它是一个 actionscript 库,就没有选择的余地,因为每个 flex 项目都是一个 actionscript 项目。 (但每个 actionscript 项目都是一个 flex 项目)

构建您的库项目(无论编译器如何工作),看看您是否可以在 actionscript 和 flex 项目中使用生成的 .swc 文件。

【讨论】:

谢谢,这确实解释了差异。不幸的是,这并不能解决问题。我正在尝试开发一个公共库,我不想强​​迫开发人员处理编译器设置。还有其他方法吗?但是,为您的解决方案加油。 好的,这肯定涵盖了主题中提出的问题。要求与代码相关的解决方法是不公平的,因为编译器是主要问题。帮助我理解的额外内容是this link @axldns:我不是这方面的专家,但对如何解决这个问题提出了一些想法。

以上是关于ActionScript 库项目与 Flex 库项目的主要内容,如果未能解决你的问题,请参考以下文章

我需要在ActionScript中开发哪些工具(在Linux中)

有啥方法可以将 ActionScript 3 (Flex/AIR) 项目打印到标准输出?

Flex / Actionscript 中的文本动画库? [关闭]

将 SWF 加载到 ActionScript 3 项目中 (Flex Builder)

在 Actionscript / Flex 3 中播放嵌入式 mp3 之前的延迟

调整 Sprite Flex/ActionScript 的大小