标签: flex3

Flash与Flex

我试着到处寻找使用Flex vs. Flash的优缺点的简明列表.

来自编程背景,我非常喜欢Flex.它很容易上手,因为它可以使用flash类,为什么我要使用Flash而不使用flex?

柔性:

优点:

  • 适合RIA开发
  • 提供了许多开箱即用的用户输入选项
  • 建立布局系统
  • MXML对于非程序员来说更容易
  • 您可以快速组合组件以创建小型应用程序
  • 组件可以在大规模项目中提供优势,因为它们具有模块化特性.
  • 可以使用linux开发
  • 有一个很好的组件生命周期进行验证等.

缺点:

  • 增加.swf的大小
  • 根据您正在寻找的视觉风格,自定义组件的外观可能比预期花费更长的时间
  • 当你发现需要一个不存在的自定义组件时,你可能需要回到Flash来进行真正的编程工作和组件的打包
  • Flex的"灵活性"意味着您将阅读大量文档
  • Flex框架中的错误
  • 您最终将需要妥协Flex框架的体系结构

优点:

  • 适合制作电影/动画
  • 设计师/动画师可以更容易地将时间轴概念化
  • 从头开始工作时,提供了很多控制.
  • 对于有编程背景的人来说更容易
  • 你可以随心所欲地编程; 与现有框架没有任何妥协

缺点:

  • 仅提供开箱即用的基本用户输入(文本框).
  • 时间表对于程序员来说可能是令人生畏的(尽管你可以非常安全地忽略它)
  • 某些类型的应用程序的开发将比使用Flex慢
  • 无法使用linux开发
  • 用户输入验证必须全部在代码中处理.没有内置验证.
  • 需要实施自己的布局系统

如果我错过了迄今所说的任何内容,请纠正我.

apache-flex flash comparison flex3

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

如何在ActionScript中获取实例的"内存位置"?

FlexBuilder的调试器将向您显示任何范围内实例的"内存位置"(或者,我只能假设,大致类似):

调试器内存位置

但是我想在代码中获取这些信息(有点像Python的id功能),所以我可以很容易地跟踪对象如何在系统中移动.例如,我可能有:

trace("Returning", id(foo));
Run Code Online (Sandbox Code Playgroud)

然后我可以使用的其他地方:

trace("Using", id(foo));
Run Code Online (Sandbox Code Playgroud)

确保两个代码都处理相同的实例.

现在,我知道许多AS类实现了IUID接口......但是也有一些类没有(例如普通的旧数组和对象),所以这不能解决我的问题.

我意识到我也可以将对象包装成一个ObjectProxy,但这也不太理想.

apache-flex actionscript flex3 actionscript-3

32
推荐指数
4
解决办法
9065
查看次数

如何在Actionscript中获取对象中的属性列表?

我有一个数据提供者和我的数组的过滤函数,它被分配给我的数据提供者.

如何将数据提供者(item.data)的每一行中的属性列表传递给过滤器函数?

例如,如果我的对象包含:

  • 宾语
    • 名称
    • 电子邮件
    • 地址

然后我想在我的过滤功能中查看姓名,电子邮件和地址.不幸的是,我不知道这些属性将会是什么.

有任何想法吗?

flex3 actionscript-3 filterfunction

30
推荐指数
4
解决办法
7万
查看次数

Flex警告:无法绑定到类'Object'上的属性'foo'(类不是IEventDispatcher)

我有一个对象,其中包含我想要绑定到表单元素的十几个字段,以便我可以使用该对象将数据发送回服务器进行保存.

我的容器对象的定义:

private static const emptyLink:Object = {
    id: -1, title:'',
    trigger1:'',trigger2:'',trigger3:'',trigger4:'',trigger5:'',
    linkTitle:'', linkBody:'',
    answer1:'',answer2:'',answer3:'',answer4:'',answer5:''
};

[Bindable] public var currentLink:Object = emptyLink;
Run Code Online (Sandbox Code Playgroud)

currentLink在运行时分配给ArrayCollection中的特定索引,我只是使用该emptyLink对象进行初始化.

<mx:Panel id="triggerPanel" title="Trigger" width="33%">
    <mx:VBox id="tpBoxes" width="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
        <mx:TextInput id="trigger1" width="100%" textAlign="left" text="{currentLink.trigger1}" />
        <mx:TextInput id="trigger2" width="100%" textAlign="left" text="{currentLink.trigger2}" />
        <mx:TextInput id="trigger3" width="100%" textAlign="left" text="{currentLink.trigger3}" />
        <mx:TextInput id="trigger4" width="100%" textAlign="left" text="{currentLink.trigger4}" />
        <mx:TextInput id="trigger5" width="100%" textAlign="left" text="{currentLink.trigger5}" />
    </mx:VBox>
</mx:Panel>
Run Code Online (Sandbox Code Playgroud)

当然,这编译并显示得很好,但每个实例都有运行时警告:

警告:无法绑定到类'Object'上的属性'trigger1'(类不是IEventDispatcher)警告:无法绑定到类'Object'上的属性'trigger2'(类不是IEventDispatcher)警告:无法绑定到类'Object'上的属性'trigger3'(类不是IEventDispatcher)警告:无法绑定到类'Object'上的属性'trigger4'(类不是IEventDispatcher)警告:无法在类上绑定属性'trigger5' '对象'(类不是IEventDispatcher)

并且在更改字段currentLink时不更新对象TextInput.

显而易见的答案是我的对象需要是实现的类的实例IEventDispatcher.答案没有告诉我的是实现该界面的细节(需要什么?什么不是?),以及是否有更简单的方法 …

apache-flex binding mxml flex3 actionscript-3

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

从Array()中间删除一个条目的最快方法

从Array()中间删除一个特定条目的最快方法是什么?

数组很大,有字符串.

我不想只设置Array [5] = null,而是将数组大小减少一个,而array [5]应该包含数组[6]的内容等.

apache-flex flex3 actionscript-3

21
推荐指数
3
解决办法
4万
查看次数

As3 - 如何有效地清除阵列?

我一直在寻找在ActionScript 3中清除数组.

有些方法建议:( array = [];内存泄漏?)

其他人会说: array.splice(0);

如果您有任何其他,请分享.哪一个效率更高?

谢谢.

apache-flex flex3 actionscript-3

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

在兼容模式下从Flex3迁移到4后的运行时问题

我们正在将Flex-3.2应用程序迁移到Flex 4.1,主要是为了利用新的文本流/引擎功能.在第一步中,我们决定进行针对MX和Flex-3兼容模式的编译.

感谢一些有用的资源(

http://www.adobe.com/devnet/flex/articles/flexbuilder3_to_flashbuilder4.html

任何Flex 4迁移体验?

http://www.adobe.com/devnet/flex/articles/flex3and4_differences_02.html

)我能够编译我们的应用程序.

但我发现自己对运行时差异的数量感到惊讶,这些差异范围从我无法将ResultEvent.currentTarget转换为HTTPService(显然是在3.5中引入)到许多布局问题,以及事件调度中的差异(例如,我们的一个遗留组件监听它只是似乎没有得到的添加事件).

似乎关于此的文档很少.我想找到一个包含详细更改的列表,这样我们就不必依赖QA来绊倒所有问题.

这份文件列出了一些,但似乎并不详尽. 有人有更好的记录变更列表吗?

谢谢Stefan

PS.到目前为止我找到的具体例子清单:

1)在Flex 4中,不会触发add事件:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" minWidth="955" minHeight="600">

    <fx:Script>
        <![CDATA[

            private function notFired():void
            {
                trace("ADDED");
            }

            private function fired():void
            {
                trace("COMPLETE");
            }
        ]]>
    </fx:Script>

    <mx:TextArea add="notFired();" creationComplete="fired();"/>

</mx:Application>
Run Code Online (Sandbox Code Playgroud)

现在在Flex 3中执行相同操作,您将看到两个事件都会触发.

显然,这是一个错误.可能有可能解决这个问题,但肯定会大大降低我的水平或信任.

2)对话框/弹出窗口显示镜像的所有内容.

一个bug也是.易于解决,但有什么明显的滑动?

3)注入"Ôª"字符的问题.

见这里的帖子.

apache-flex flex3 flex4

19
推荐指数
1
解决办法
995
查看次数

使用Adobe AIR构建插件体系结构

我正在考虑选择Adobe AIR作为即将推出的项目的客户端实现技术.(之前的选择是C#和WPF,但最近我对Flash/Flex/AIR印象非常深刻.)

但是我的产品最重要的功能之一将是它的插件架构,允许第三方开发人员以有趣的方式扩展功能和GUI.

我知道如何在C#中设计架构:插件加载器将枚举本地"app/plugins /"目录中的所有程序集.对于每个程序集,它会枚举所有类,寻找"IPluginFactory"接口的实现.对于工厂创建的每个插件,我会询问它的MVC类,并将其GUI元素(菜单项,面板等)捕捉到现有GUI布局中的相应插槽中.

我想在AIR中完成同样的事情(从本地文件系统加载插件,而不是从Web加载).阅读本文之后,我的理解是,它是可能的,并且基本架构(将SWF加载到沙盒ApplicationDomains等中)与您在.NET中的方式非常相似.

但我对这些陷阱感到好奇.

如果您有任何人使用Flash播放器进行任何动态类加载(最好是在混合flash/flex应用程序中,特别是在AIR主机中),我很想知道您构建插件框架的经验以及遇到棘手情况的地方使用Flash播放器,以及flash,flex和AIR API.

例如,如果有人问我同样的问题,但考虑到Java平台,我肯定会提到JVM没有"模块"或"程序集"的概念.最高级别的聚合是"类",因此在插件系统中创建用于管理大型项目的组织结构可能很困难.我还将讨论多个类加载器的问题,以及每个类加载器如何维护自己独立的加载类实例(具有自己独立的静态变量).


以下是一些仍未解决的具体问题:

1)actionscript"Loader"类可以将SWF加载到ApplicationDomain中.但该appdomain究竟包含什么?模块?类?MXML组件是如何表示的?如何找到实现我的插件界面的所有类?

2)如果您已将插件从主应用程序加载到单独的ApplicationDomain中,从其他应用程序域调用代码是否更加复杂?关于可以通过app -main域间编组层的数据类型是否有任何重要的限制?编组是否过于昂贵?

3)理想情况下,我想将自己的大部分主代码作为插件开发(主应用程序只是一个插件加载shell)并使用插件架构将该功能提升到应用程序中.这会让你内心感到害怕吗?

air flash flex3 plugin-architecture dynamic-loading

16
推荐指数
2
解决办法
3805
查看次数

从Flex TextInput控件捕获用户输入:要使用哪个事件?

我应该使用changeor textInput事件来捕获TextInput控件上的用户输入吗?为什么?

apache-flex events flex3 textinput

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

AS中的内部类

例如:

 package{
    public class A {
       var test:String;
       public function A()
       }

}
 class B{

}
Run Code Online (Sandbox Code Playgroud)

代码在同一个文件中,我们调用B是内部类,然后如何调用类B的构造函数

apache-flex flex3 actionscript-3

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