3

我是 Flex 的新手,我不喜欢你必须为你编写的每个控件声明编写命名空间 mx: 的方式。它使代码混乱。我想写:

<Panel ...

而不是

<mx:Panel ...

我试着写

xmlns="http://www.adobe.com/2006/mxml"

对于顶级元素而不是

xmlns:mx="http://www.adobe.com/2006/mxml"

在顶层声明中。这项工作在一定程度上有效,但破坏了一些现有代码。一方面,文档中定义的 XML 数据都附加了 aaa: 作为运行时的命名空间。我还注意到我非常小的示例程序中的其他问题。

有没有办法做到这一点,或者这是一个失败的原因?以及一些关于为什么的背景信息将不胜感激。

更新:感谢大家的回复,但我想听听实际尝试过这个并认为这很重要的人的意见。尽管你们中的大多数人告诉我这是一个坏主意,但我并不气馁。我现在有几个程序以这种方式顺利运行。并计划在我所有的 flex 应用程序中执行此操作。一个技巧似乎对我有用,尽管我不能声称它会普遍适用。如果您在文档中需要单独的命名空间,例如 HTTPService 参数,您可以在该元素中创建一个命名空间,如下所示:

    <HTTPService id="服务" url="http://blah.com"
        方法="POST" 结果="gotResult(事件)">
        <请求 xmlns:p="*">
            <p:param1>p1</p:param1>
            <p:param2>p2</p:param2>
        </请求>
    </HTTP服务>

希望这可以帮助某人。我对我的代码现在的干净程度感到非常满意,几乎和普通的 html 文件一样干净。至于那些认为编写 mx: 整个代码更清晰的人,我完全不同意。我认为要求您在代码中过度重复相同字符序列的语言(您应该将其视为文档)存在设计缺陷。给你打个比方:如果你在读一篇关于巴拉克奥巴马的文章,每句话都包含“巴拉克奥巴马”这个词,你会怎么看,那会很烦人,不是吗?

4

6 回答 6

7

我认为随着项目变大,删除 mx 命名空间几乎肯定会给您带来名称冲突的麻烦。

我个人认为 mx 命名空间使代码更清晰而不是更混乱,特别是如果你有基于组件的 flex 开发或很多你自己的控件。在过去的两年里,我拥有一个大型的 flex 代码库,我发现 mx 命名空间并不显眼,尤其是当您有内嵌的自定义对象(例如项目渲染器)时。

我的建议(不科学地断言)是忍受它,特别是如果您在删除它时发现问题。我敢打赌你会在一段时间后不再注意到它。

于 2008-11-12T17:11:40.030 回答
2

只是为了成为分歧的声音......

在挖掘Ely Greenfields代码时,他经常这样做——我不确定 Flex SDK 团队中的其他开发人员是否这样做,但它确实为这样做的论点提供了一些可信度……对吗?

于 2008-11-14T01:03:37.887 回答
2

您需要 mx 或一些 xmls:[SOMETHING HERE] 因为这是引用控件定义的 XML 命名空间。这就像在普通代码中使用命名空间一样。

只写 Panel 是模棱两可的,可能会与其他人的 Panel 实现发生冲突。因此,我们向 Flex 声明 Panel 属于哪个命名空间 ( http://www.adobe.com/2006/mxml ),并使用 mx 作为别名。

Microsoft 的 WPF XAML 也要求这样做。

于 2008-11-12T17:08:20.520 回答
1

我同意这里的大多数其他答案,最好离开它。最终,您将希望将其他名称空间用于自定义组件等内容,然后您将需要一个名称空间来进行区分。然后你会得到一些有命名空间的和一些没有命名空间的。

我会说,如果没有其他原因,您应该离开它,因为有一天其他人可能不得不查看您的代码,他们可能会发现使用 mx 比不使用 mx 更具可读性。

于 2008-11-19T20:54:44.233 回答
0

mx: 只是告诉 Flex Panel(连同任何其他组件)是 Flex 框架的一部分的一种方式,它内置在 Flex 中。这有助于 Flex 知道在哪里寻找面板,并使您的编译过程更快。

您还可以使用 local: 来访问您创建的组件。示例:如果我想向我的面板添加一些功能,我会键入一些代码,并将其保存为自定义面板,称为 MyPanel。它们,我可以用来告诉 Flex MyPanel 是我的组件,它可以找到我项目中的某个位置。当然,你可以随意命名它:-)

我同意你的观点,mx: 起初看起来不美观,尤其是当你已经具备 HTML 或 XML 方面的深厚背景时,但你会习惯它的。

于 2009-05-02T12:32:55.317 回答
0

请记住,如果您正在开发应在包括移动设备在内的各种平台上运行的应用程序,最好尽可能坚持使用纯 spark,因为如今大多数移动设备都支持它。在某些情况下,人们被迫使用诸如手风琴之类的 mx 控件。在这种情况下,如果您确实有时间实现它,明智的做法是使用工具或 spark 中的基本控件来创建这些更高级或更复杂的控件来代替使用。

于 2012-06-22T18:29:52.890 回答