Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Передача по HTTPService (http://www.flasher.ru/forum/showthread.php?t=131314)

RPGman 17.10.2009 16:08

Передача по HTTPService
 
Доброго времени суток. Возникла такая проблема:
Пытаюсь передать текстовые значения в php скрипт, который должен записать эти данные в БД. С nameChar все проходит отлично, данные записываються, а вот остальные почему то нет. Подскажите где допущена ошибка?
Вот код:
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application layout="absolute" width="400" height="300" xmlns:mx="http://www.adobe.com/2006/mxml">
        <mx:Script><![CDATA[
                import mx.controls.Text;
                import mx.rpc.events.ResultEvent; //при написании кода вручную, эти импорты появляються сами, первый нужен для
                import mx.controls.Alert; //определения результата, второй для вывода всплывающих окон
 
                private var pic_arr_m:Array = ["img/men1-1.png", "img/men1-2.png", "img/men1-3.png", "img/men1-4.png"]; //создаем масив, который хранит путь к картинкам мужского пола
                private var pic_arr_w:Array = ["img/women2-1.png", "img/women2-2.png", "img/women2-3.png", "img/women2-4.png"]; //создаем масив, который хранит путь к картинкам женского пола
                private var i:int = 0; //числовая переменная равна 0
                private var gr:String;
                private var avaIm:Text;
 
                /* Функция создания чара, отправляет данные которые ввел пользователь */
                private function onCreateChar():void {
                        createRequest.send();
                }
                /* Функция выбора RadioButton мужского пола */
                private function iMen():void {
                        avatar.load(pic_arr_m[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку
                        gr = "1";
                }
                /* Функция выбора RadioButton женского пола */
                private function iWomen():void {
                        avatar.load(pic_arr_w[0]);
                        gr = "2";
                }
                /* Функция нажатия кнопки "Пред." */
                private function onLeft():void {
                        if (men.selected == true){ //если выбран пол "Мужской", то
                                avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i"
                                i--; //переменная уменьшаеться на 1
                                if (i == -1) { //если переменная "i" равна -1, то
                                        i = 3; //"i" равна 3
                                }
                        }
                                if (women.selected == true) { //если выбран пол "Женский", то
                                        avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i"
                                        i--; //переменная уменьшаеться на 1
                                        if (i == -1) { //если переменная "i" равна -1, то
                                                i = 3; //"i" равна 3
                                        }
                                }
                }
                /* Функция нажатия кнопки "След." */
                private function onRight():void {
                        if (men.selected == true){ //если выбран пол "Мужской", то
                                avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i"
                                i++; //переменная увеличиваеться на 1
                                if (i == 4) { //если переменная "i" равна 4, то
                                        i = 0; //"i" равна 0
                                }
                        }
                        if (women.selected == true) { //если выбран пол "Женский", то
                                avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i"
                                i++; //переменная увеличиваеться на 1
                                if (i == 4) { //если переменная "i" равна 4, то
                                        i = 0; //"i" равна 0
                                }
                        }
                }
 
                private function ava():void {
                        if (men.selected == true) {
                                if (pic_arr_m[0] == true) {
                                        avaIm.text = "img/men1-1.png";
                                }
                                if (pic_arr_m[1] == true) {
                                        avaIm.text = "img/men1-2.png";
                                }
                                if (pic_arr_m[2] == true) {
                                        avaIm.text = "img/men1-3.png";
                                }
                                if (pic_arr_m[3] == true) {
                                        avaIm.text = "img/men1-4.png";
                                }
                        }
                        if (women.selected == true) {
                                if (pic_arr_w[0] == true) {
                                        avaIm.text = "img/women2-1.png";
                                }
                                if (pic_arr_w[1] == true) {
                                        avaIm.text = "img/wpmen2-2.png";
                                }
                                if (pic_arr_w[2] == true) {
                                        avaIm.text = "img/women2-3.png";
                                }
                                if (pic_arr_w[3] == true) {
                                        avaIm.text = "img/women2-4.png";
                                }
                        }
                }
 
                /* Функция определения результата */
                private function onResult(e:ResultEvent):void {
                                if (int(e.result) > 0) { //если результат больше 0, тоесть существует, то
                                        //var link:URLRequest = new URLRequest("http://localhost/game.php"); //создаем ссылку
                                        //navigateToURL(link, "_self"); //переадресовываем по ссылке
                                } else { //в другом случае, если результат не существует, то
                                        switch (int(String(e.result))) { //считываем данные
                                                case -1 : //если данные равны "-1", то выводим всплывающее окно
                                                        Alert.show("Неудалось подключиться к базе данных. Попробуйте позже", "Ошибка!");
                                                        break;
                                                case -2 : //если данные равны "-2", то выводим всплывающее окно
                                                        Alert.show("Такое имя уже существует", "Ошибка!");
                                                        break;
                                                case -3 : //если данные равны "-3", то выводим всплывающее окно
                                                        Alert.show("Вы не ввели имя", "Ошибка!");
                                                        break;
                                        }
                                }
                }
        ]]>               
        </mx:Script>
        <mx:HTTPService id="createRequest" useProxy="false" method="POST" result="onResult(event)" url="reg_comp.php">
        <mx:request>
            <mx:nameChar>{nameChar.text}</mx:nameChar>
                        <mx:avatar>{avaIm.text}</mx:avatar>
                        <mx:gr>{gr.toString()}</mx:gr>
        </mx:request>
    </mx:HTTPService>
    <mx:Button label="Далее" click="onCreateChar()" x="140" y="252" width="100" height="22"/>
    <mx:TextInput id="nameChar" textAlign="center" x="111" y="222" width="160" height="22"/>
    <mx:Image id="avatar" source="img/men1-1.png" x="171" y="93" width="33" height="33"/>
    <mx:RadioButton id="men" label="Мужской" groupName="gander" selected="true" click="iMen()" x="19" y="41" width="73" height="22"/>
    <mx:RadioButton id="women" label="Женский" groupName="gander" click="iWomen()" x="19" y="67" width="74" height="22"/>
    <mx:Label text="Имя" x="176" y="198" width="36" height="18"/>
    <mx:Button label="Пред." click="onLeft()" x="78" y="141" width="100" height="22"/>
    <mx:Button label="След." click="onRight()" x="200" y="141" width="100" height="22"/>
</mx:Application>


switcher! 17.10.2009 17:54

Код AS3:

                private var gr:String;
                private var avaIm:Text;

поменяй на:
Код AS3:

                [Bindable]
                private var gr:String;
 
                [Bindable]
                private var avaIm:Text;

должно помочь

RPGman 17.10.2009 18:44

Помогло только для gr, а avaIm все равно не записывает. Может тут что то не правильно:
Код AS3:

private function ava():void {
                        if (men.selected == true) {
                                if (pic_arr_m[0] == true) {
                                        avaIm.text = "img/men1-1.png";
                                }
                                if (pic_arr_m[1] == true) {
                                        avaIm.text = "img/men1-2.png";
                                }
                                if (pic_arr_m[2] == true) {
                                        avaIm.text = "img/men1-3.png";
                                }
                                if (pic_arr_m[3] == true) {
                                        avaIm.text = "img/men1-4.png";
                                }
                        }
                        if (women.selected == true) {
                                if (pic_arr_w[0] == true) {
                                        avaIm.text = "img/women2-1.png";
                                }
                                if (pic_arr_w[1] == true) {
                                        avaIm.text = "img/wpmen2-2.png";
                                }
                                if (pic_arr_w[2] == true) {
                                        avaIm.text = "img/women2-3.png";
                                }
                                if (pic_arr_w[3] == true) {
                                        avaIm.text = "img/women2-4.png";
                                }
                        }
                }


switcher! 17.10.2009 21:20

1. где ты создаешь экземпляр Text для avaIm?
Код AS3:

private var avaIm:Text;

это объявление переменной. Туда по умолчанию заносится undefined (или null... не помню точно, но не суть)
А у undefined, нет никакого свойства text

2. C flex я еще на большое "Вы", но насколько я знаю, биндится (связывается) непосредственно указанная переменная. Т.е.
Код AS3:

                [Bindable]
                private var avaIm:Text;

avaIm будет реагировать на, например, перезапись ссылки на другой экземпляр класса Text.
Это значит, что надо биндить целевое свойство. Например, используя BindingUtils.bindProperty(...)

P.S. И кончай разбрасываться исходниками! :mad:
Это тебе не php скрипт... :rtfm:


Часовой пояс GMT +4, время: 20:39.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.