gpt4 book ai didi

apache-flex - 从外部 AS 访问 MXML 中定义的元素

转载 作者:行者123 更新时间:2023-12-04 03:00:49 25 4
gpt4 key购买 nike

我有一个带有表单的 MXML,里面有两个 TextInput。我讨厌在 MXML 文件中包含任何代码(我来自 JavaScript 格式)所以我使用了

mx:Script source="external.as"

标记以包含在任何 MXML 文件中使用的任何代码。问题是,如果我在 external.as 文件中有这段代码:

private function populateFromForm():void{
var vo:ValidObject= new ValidObject();
vo.market = marketInput.text;
vo.segment = segmentInput.text;
vo.priceLow = priceLowInput.text;
vo.priceHigh = priceHighInput.text;
}

其中 marketInput、segmentInput、priceLowInput 和 priceHighInput 是 MXML 文件中定义的 TextInput。当我尝试编译时,我得到一个 1120: Access to undefined property XXXXX

我尝试在函数之前添加以下行:

public var marketInput:TextInput;
public var segmentInput:TextInput;
public var priceLowInput:TextInput;
public var priceHighInput:TextInput;

但我得到的是 1151:A conflict exists with definition XXXX in namespace internal 这很有意义。

有没有办法做到这一点,而不必将所有输入引用作为函数的参数传递给函数?

最佳答案

您需要创建对 TextInputs 父容器实例的引用,然后使用该引用来访问 TextInputs 及其属性。我认为我们需要对您的文件结构进行一些说明。您如何创建父容器的实例?我认为这就是您需要做的:

我的表格.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:TextInput id="marketInput" />
<mx:TextInput id="segmentInput" />
<mx:TextInput id="priceLowInput" />
<mx:TextInput id="priceHighInput" />
</mx:VBox>

保存VOContainer.as:

package
{
public class SaveVoContainer extends Container
{
private var myForm:MyForm = new MyForm();

public function SaveVOContainer
{
this.addChild(myForm);
}

private function populateFromForm():void{
var vo:ValidObject= new ValidObject();
vo.market = myForm.marketInput.text;
vo.segment = myForm.segmentInput.text;
vo.priceLow = myForm.priceLowInput.text;
vo.priceHigh = myForm.priceHighInput.text;
}
}
}

关于apache-flex - 从外部 AS 访问 MXML 中定义的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com