我试着到处寻找使用Flex vs. Flash的优缺点的简明列表.
来自编程背景,我非常喜欢Flex.它很容易上手,因为它可以使用flash类,为什么我要使用Flash而不使用flex?
柔性:
优点:
缺点:
闪
优点:
缺点:
如果我错过了迄今所说的任何内容,请纠正我.
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,但这也不太理想.
我有一个数据提供者和我的数组的过滤函数,它被分配给我的数据提供者.
如何将数据提供者(item.data)的每一行中的属性列表传递给过滤器函数?
例如,如果我的对象包含:
然后我想在我的过滤功能中查看姓名,电子邮件和地址.不幸的是,我不知道这些属性将会是什么.
有任何想法吗?
我有一个对象,其中包含我想要绑定到表单元素的十几个字段,以便我可以使用该对象将数据发送回服务器进行保存.
我的容器对象的定义:
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.答案没有告诉我的是实现该界面的细节(需要什么?什么不是?),以及是否有更简单的方法 …
从Array()中间删除一个特定条目的最快方法是什么?
数组很大,有字符串.
我不想只设置Array [5] = null,而是将数组大小减少一个,而array [5]应该包含数组[6]的内容等.
我一直在寻找在ActionScript 3中清除数组.
有些方法建议:( array = [];内存泄漏?)
其他人会说: array.splice(0);
如果您有任何其他,请分享.哪一个效率更高?
谢谢.
我们正在将Flex-3.2应用程序迁移到Flex 4.1,主要是为了利用新的文本流/引擎功能.在第一步中,我们决定进行仅针对MX和Flex-3兼容模式的编译.
感谢一些有用的资源(
http://www.adobe.com/devnet/flex/articles/flexbuilder3_to_flashbuilder4.html
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)注入"Ôª"字符的问题.
我正在考虑选择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)并使用插件架构将该功能提升到应用程序中.这会让你内心感到害怕吗?
我应该使用changeor textInput事件来捕获TextInput控件上的用户输入吗?为什么?
例如:
package{
public class A {
var test:String;
public function A()
}
}
class B{
}
Run Code Online (Sandbox Code Playgroud)
代码在同一个文件中,我们调用B是内部类,然后如何调用类B的构造函数
flex3 ×10
apache-flex ×8
flash ×2
actionscript ×1
air ×1
binding ×1
comparison ×1
events ×1
flex4 ×1
mxml ×1
textinput ×1