изменение свойств компонента SkinnableComponent в Actionscript - PullRequest
1 голос
/ 26 июля 2010

Flex 4 разделяет визуальные компоненты на скины.Итак, как нам получить доступ к этим визуальным элементам из компонента Skinnable?Вот мой код:

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


<fx:Script>
<![CDATA[
import mx.controls.TextInput;

private var txt:String;

public function setText(s:String) {
txt = s;
// the following line doesn't work
var input:TextInput = this.skin.getChildByName("msg") as TextInput;
input.text = s;
}

]]>
</fx:Script>


</s:SkinnableComponent>

Мне просто нужно установить текст в TextInput в скине brushedSkin.Но я понятия не имею, как это сделать во Flex 4.

1 Ответ

3 голосов
/ 09 сентября 2011

Сначала вы должны указать в своем SkinnableComponent так называемый контракт между разработчиком и разработчиком.Затем вы должны подождать, пока ваш компонент завершит свою реализацию, чтобы получить доступ к его частям скина.

В вашем конкретном случае вы измените код следующим образом:

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


<fx:Script>
<![CDATA[
import mx.controls.TextInput;

[SkinPart(required="true")]
public var input:TextInput;

private var txt:String;

public function setText(s:String) {
    txt = s;
    if (initialized)
        input.text = txt;
} 
]]>
</fx:Script>

</s:SkinnableComponent>

Затем убедитесь, чтоВаш класс скина содержит следующее объявление (вероятно, вам просто нужно переименовать msg -TextInput для ввода):

<s:TextInput id="input"/>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...