2013-07-28 2 views
0

Я ожидаю, что это будет легко, но многие поисковые системы Google и проверка объектов в точках разлома не нашли ответа.Настройка свойств свойства Spark из ActionScript

я могу определить состояния в MXML:

<s:states>  
    <s:State name="state_1" />  
    <s:State name="state_2" />  
</s:states> 

Тогда я могу это сделать:

<s:Label id="lblTest" text="Hello" x.state_1="20" x.state_2="100" /> 

В Actionscript можно установить значения свойств:

lblTest.x = 150; 

Вопрос: Как бы Я установил x.state_1 и x.state_2 для lblTest из ActionScript независимо от текущего состояния?

ответ

3

Нет ничего такого, что было бы очень просто при работе в ActionScript. При компиляции файла MXML с государственными конкретными свойствами, Actionscript код, как это получает генерируется в конструкторе:

states = [ 
    new State ({ 
    name: "state_1", 
    overrides: [ 
     new mx.states.SetProperty().initializeFromObject({ 
     target: "lblTest", 
     name: "x", 
     value: 20 
     }) 
    ] 
    }) 
    , 
    new State ({ 
    name: "state_2", 
    overrides: [ 
     new mx.states.SetProperty().initializeFromObject({ 
     target: "lblTest", 
     name: "x", 
     value: 100 
     }) 
    ] 
    }) 
]; 

Если вы создаете свои состояния в Actionscript, вы могли бы сделать что-то подобное. Если вы хотите изменить установленные для штата свойства, которые уже были установлены, это не так просто. Вам нужно будет найти объект SetProperty в массиве overrides каждого состояния и заменить его/изменить.

Действительно, мощь свойств, специфичных для конкретного состояния, позволяет их легко определить в MXML. Не забывайте, что вы можете использовать привязки, чтобы установить значение свойств в основном получить то, что вы хотите бесплатно:

<s:Label id="lblTest" text="Hello" x.state_1="{state_1_value}" x.state_2="100" /> 
+0

Аха ... очень познавательно ... Теперь я могу видеть, наложения в отладчике под this.states. Я искал под lblTest. Это информация, которая мне нужна для продвижения вперед. Спасибо. – struggler

+0

При дальнейшем изучении, в дополнение к решению привязки, путь вперед предлагается этими подсказками в случае, если кто-то еще хочет преследовать эту строку: trace (this.states [0] .name); - получает имя первого состояния в массиве состояний. И следующий код добавляет переопределение ... var sp: SetProperty; sp = new SetProperty (lblTest, "y", 50); this.states [0] .overrides.push (sp); Как только вы знаете эти вещи, остальное легко. – struggler

Смежные вопросы