1.7.1??????????????问题
使用AS里的方法改变MXML里子对象的属性
1.7.2??????????????方法
通过元件的id属性来找到这个对象,并通过id属性来设置其他的属性或调用方法
1.7.3??????????????讨论
我们很容易将AS和MXML代码想成两个不同的部分,但实际上他们并没有分开,看下面的例子:
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
????<mx:Script>
????????<![CDATA[
?
????????????private function changeAppearance():void
????????????{
????????????????this.width = Number(widthInputField.text);
????????????????this.height = Number(heightInputField.text);
????????????}
????????]]>
????</mx:Script>
????<mx:Image id="imageDisplay"/>
????<mx:Text text="Enter a width"/>
????<mx:TextInput id="widthInputField"/>
????<mx:Text text="Enter an height"/>
????<mx:TextInput id="heightInputField"/>
????<mx:Button click="changeAppearance()" label="Change Size"/>
</mx:HBox>
就像你看到的,在changeAppearance方法里,用this来引用元件本身(即HBox),然后通过width和height属性来改变长和宽。通过TextFields的text属性我们可以从widthInputField和heightInputFields获得输入值。我们同样使用id属性来引用每个TextInput。每个组件都必须有唯一的id来对应他本身,而且只有一个层级,所以即使这个元件被嵌套在其他的子对象里,我们一样可以通过这个id来找到他。来看看下面这个例子,动态的设定子对象的属性:
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="520" height="650">
????????????private var fileName:String = "";
????????????private function saveResume():void
????????????????//....a service call to send the data and set the filename
????????????????fileNameDisplay.text = "Your resume has been saved as?"+fileName;
????<mx:Text id="fileNameDisplay" text="" width="500"/>
????<mx:RichTextEditor id="richTextControl" width="500" height="400"/>
????<mx:Button id="labelButton" label="Submit Resume" click="saveResume()"/>
</mx:VBox>
上面的例子中,我们可以使用子对象的id来引用他或者改变他的属性。默认情况下,任何对其父级对象有使用权的对象都可以引用这个对象。