PDA

Просмотр полной версии : MXML и ActionScript3: передача значения методу


Athanaziz
17.06.2012, 15:42
Здравствуйте, уважаемые форумчане!

Помогите, пожалуйста, советом начинающему.
Такой вопрос: есть поле ввода TextInput и нужно передать его значение типа String в следующий скрипт:

public function Checker(passCode:String, isValidCode:Boolean):Boolean{
passCode = "значение";
if (passCode == "другое значение"){
isValidCode = true;
return true;
}
else
return false;
}

Словом, нечто вроде проверки пароля, в результате которой должна включаться кнопка
<s:Button enabled="{isValidCode}"...
Но кнопка не работает при вводе правильного значения и у меня есть подозрения, что значение не передается в метод. Есть ли метод, который бы гарантированно отправлял значение из текстового поля в функцию?

Zebestov
17.06.2012, 15:49
1. Есть подходящий раздел "Flex" — почему было не задать вопрос там?
2. Код следует оформлять тегами (кнопка AS3 в панели редактора сообщения)

Athanaziz
17.06.2012, 16:43
Вы очень добры ко мне, сер! Надеюсь, теперь все правильно?
Я не часто пишу на форумах, потому прошу меня извинить, если что-то не так :)

Может мне хоть кто-то помочь или вопрос совсем некорректный? О_о

alatar
17.06.2012, 18:30
1. Вызвать свой код вы можете, например, по событию change вашего TextInput.
2. Вот это: <s:Button enabled="{isValidCode}"... в том виде как вы себе представляете работать не будет, т.к. вы пытаетесь менять локальную переменную, а не геттер/сеттер isValidCode.
3. Для проверки пользовательского ввода во флексе есть валидаторы (http://help.adobe.com/ru_RU/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7ff0.html), которые реализуют единый интерфейс проверки.
4. Если вы таким образом решили проверять пароли, вас ждет беда.

dimarik
18.06.2012, 00:48
[Bindable]
private var _input:String;

private function isValidCode(value:String):Boolean {
return value.match(some_regexp) !== null;
}

<s:Button enabled="{this.isValidCode(this._input)}" />

Этот валидатор пароли ест на "ура". Ах, да, _input легко заменяется на TextInput#text


private function isValidCode(value:String):Boolean {
return value.match(/^passWord$/) !== null;
}

<s:Button enabled="{this.isValidCode(this.textInput)}" />
<s:TextInput id="textInput" />

Athanaziz
18.06.2012, 01:24
Всем огромное спасибо )