标签: mxml

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万
查看次数

可以在不使用MXML的情况下使用Flex Framework/Components吗?

是否可以在不使用MXML的情况下使用Flex Framework和组件?我非常了解ActionScript,并且不想乱用一些新的XML语言只是为了获得一些简单的UI.任何人都可以提供一个包含.as文件的例子,该文件可以编译(理想情况下通过FlashDevelop,虽然只是告诉如何使用Flex SDK也可以)并使用Flex Framework?例如,只显示弹出打开警报的Flex按钮将是完美的.

如果不可能,有人可以提供一个最小的MXML文件,它将引导一个自定义AS类,然后可以访问Flex SDK吗?

apache-flex mxml flashdevelop actionscript-3

19
推荐指数
3
解决办法
9885
查看次数

Flex:MXML"Component"和MXML"Module"之间有什么区别?

正如标题所示,"组件"(新建 - > MXML组件)和"模块"(新建 - > MXML模块)之间有什么区别?

谢谢,大卫

apache-flex mxml

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

通过MXML扩展MXML自定义组件

我想做的事情:创建一个包含一些子节点的MXML组件,然后通过MXML扩展它以创建一个包含更多子节点的新组件,而不会丢失原始集合.换一种说法

创建一个组件bc.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">

    <s:Button id="b1" label="button1"/>
</s:BorderContainer>
Run Code Online (Sandbox Code Playgroud)

然后将其扩展到单独的组件mc.mxml

<?xml version="1.0" encoding="utf-8"?>
<borderContainerX:bc xmlns:fx="http://ns.adobe.com/mxml/2009" 
                     xmlns:s="library://ns.adobe.com/flex/spark" 
                     xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:borderContainerX="borderContainerX.*">

    <s:Button id="b2" y="100" label="button2"/>
</borderContainerX:bc>
Run Code Online (Sandbox Code Playgroud)

并获得一个带有2个按钮的组件.

我已经看到了这是怎么不同的线程要么不可能,(1)或变通办法来做到这一点(2,3)如果事情已经使用Flex 4的出现改变,或者如果我们仍然坚持这些一直想知道解决方案3线程中的最后一个回复似乎提示Flex 4修复它?

apache-flex mxml flex4

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

Flex:是否存在无痛的程序化数据绑定?

到目前为止,我只做了一些Flex开发,但我更喜欢以编程方式在mxml文件上创建控件的方法,因为(如果我错了,纠正我!)我已经收集到你可以'它有两种方式 - 也就是说,在单独的ActionScript类文件中具有类功能,但是在mxml中声明了包含的元素.

生产力方面似乎没有太大差异,但以编程方式进行数据绑定似乎有点不那么简单.我看了一下mxml编译器如何转换数据绑定表达式.结果是一堆生成的回调和比mxml表示中更多的行.所以这里有一个问题:有没有办法以编程方式进行数据绑定,而不涉及受伤的世界?

apache-flex data-binding mxml actionscript-3

13
推荐指数
2
解决办法
8702
查看次数

如何将\ save文件放入应用程序目录?(adobe air)

如何将\ save文件放入应用程序目录?(adobe air)(请输入代码示例)

air filesystems mxml file actionscript-3

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

oldschool flash开发人员什么时候应该使用flex?

Flash和Flex之间的主要区别是什么?我有超过五年的flash经验,并且使用它和ActionScript3进行开发感觉很舒服.我发现自己对Flex越来越好奇,想知道什么时候最好使用flash或flex.还有,使用MXML可以完成的一切都可以用AS3完成吗?我对AS3和OOP有很深的理解,并且想知道在Flex中使用AS3和MXML之间的差异.

apache-flex flash mxml actionscript-3

10
推荐指数
2
解决办法
1958
查看次数

在运行时将Flex组件宽度设置为100%?

如果我正在创建输入字段MXML,我可以将宽度设置为100%.但我似乎无法在运行时通过ActionScript执行此操作.

这有效:

<mx:TextInput ... width="100%" />
Run Code Online (Sandbox Code Playgroud)

这不会编译,宽度是一个数字,而不是一个字符串:

var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.width = "100%"
Run Code Online (Sandbox Code Playgroud)

如何100%在运行时通过ActionScript 设置组件的大小?

apache-flex flash mxml actionscript-3 flex4

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

如何用mxml继承状态?

我有以下面板组件,名为AdvancedPanel with controlBarContent:

<!-- AdvancedPanel.mxml -->
<s:Panel>
  <s:states>
    <s:State name="normal" />
    <s:State name="edit" />
  </s:states>
  <s:controlBarContent>
    <s:Button 
      includeIn="edit"
      label="Show in edit"
      />
    <s:Button 
      label="Go to edit"
      click="{currentState='edit'}"
      />
  </s:controlBarContent>
</s:Panel>
Run Code Online (Sandbox Code Playgroud)

我创建了第二个面板,名为CustomAdvancedPanel,基于AdvancedPanel,因为我不想重新声明controlBarContent

<!-- CustomAdvancedPanel.mxml -->
<local:AdvancedPanel>
  <s:Button includeIn="edit" label="Extra edit button" />
</local:AdvancedPanel>
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为CustomAdvancedPanel中的"edit"状态未根据编译器声明.我必须在CustomAdvancedPanel.mxml中重新声明编辑状态,如下所示:

  <!-- CustomAdvancedPanel.mxml with edit state redeclared -->
    <local:AdvancedPanel>
      <local:states>
        <s:State name="normal" />
        <s:State name="edit" />
      </local:states>
      <s:Button includeIn="edit" label="Extra edit button" />
    </local:AdvancedPanel>
Run Code Online (Sandbox Code Playgroud)

在应用程序组件中使用CustomAdvancedPanel会显示一个带有"Go to edit"按钮的空面板.但是当我单击它时,"额外编辑按钮"变为可见,但是控制栏内的"在编辑中显示"按钮则不可见.

当CustomAdvancedPanel为空,没有重新声明的状态和"额外编辑按钮"时,面板工作正常.

我认为这是因为在AdvancedPanel中声明的State对象与CustomAdvancedPanel不同,因此状态是不同的,即使它们具有相同的名称.然而.我不能在CustomAdvancedPanel中使用AdvancedPanel的状态而不用(重新)在mxml中声明它们.

有没有办法实现这种状态重用?或者有更好的方法来获得相同的结果吗?

apache-flex mxml states flex4

9
推荐指数
1
解决办法
3017
查看次数

在DataGrid中使用验证器 - Flex

我有一个可编辑的DataGrid,类似于:

<mx:Datagrid editable="true" dataProvider="{arrayListPreferences}" id="preferencesGrid">
    <mx:columns>
        <mx:DataGridColumn header="col1" dataField="preference" editable="false"/>
        <mx:DataGridColumn header="col2" dataField="value" editable="true"/>
    </mx:columns>
</mx:Datagrid>
Run Code Online (Sandbox Code Playgroud)

当用户编辑数据时,他点击了一个按钮,并调用一个将数据保存到数据库的功能,在此功能中,我必须在发送数据之前验证数据.我想使用简单的验证器(NumberValidator,StringValidator等),但我不知道如何将此验证器的源设置为第二列中的指定行.

apache-flex datagrid mxml actionscript-3

8
推荐指数
1
解决办法
8243
查看次数