Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   создание xml файла на AS3 (http://www.flasher.ru/forum/showthread.php?t=107298)

dandandan 29.01.2008 16:22

создание xml файла на AS3
 
Видел много примеров загрузки и использования XML. Но не видел ни одного примера создания XML документа.
Да, я понимаю как его создать, но как его потом загрузить на сайт? Только средствами PHP или есть возможность средствами flash? Документ надо закинуть в ту же директорию где находится swf файл.

baron27 29.01.2008 16:40

Только средствами PHP

BlooDHounD 29.01.2008 17:32

эх ... дайте мне возможно средствами флэша заливать файлы на удалённый компьютер, и я завтра завоюю мир.

dandandan 29.01.2008 20:06

Цитата:

Сообщение от BlooDHounD
эх ... дайте мне возможно средствами флэша заливать файлы на удалённый компьютер, и я завтра завоюю мир.

ну зачем же завоевывывать.


А если я swf файл локально буду запускать (не через веб браузер). Можно ли локально xml сохранить?

BlooDHounD 29.01.2008 20:45

эх ... дайте мне возможность возможность сохранять файлы локально и завтра я сделаю вам тоже самое через интернет :)

Silverghost 30.01.2008 00:12

Вам поможет AIR или PHP. Смотря что нужно сделать.

Reflection 07.02.2008 13:16

Помогите разобраться где я допустил ошибку
Из книги "ActionScript 3.0 сборник рецептов" (вроде уже сверял не раз на ошибку/опечатку)
делается флэшка в ней в поле вводится имя и нажимается кнопка послать
данные передаются в пхп а из -пхп в текстовый документ который должен сам создаться , но у меня не работает че-то

Код swf :

Код:

package {
        import flash.display.*;
        import flash.text.*;
        import flash.filters.*;
        import flash.events.*;
        import flash.net.*;
       
        public class xmlsend extends Sprite {
               
                private var _message:TextField;
                private var _username:TextField;
                private var _save:SimpleButton;
               
                public function xmlsend(){
                        initializeDisplay();
                }
               
                private function initializeDisplay():void {
                        _message =new TextField();
                        _message.autoSize=TextFieldAutoSize.LEFT;
                        _message.x=10;
                        _message.y=10;
                        _message.text="Enter message";
                       
                        _username=new TextField();
                        _username.width=100;
                        _username.x=10;
                        _username.height=18;
                        _username.y=30;
                        _username.type=TextFieldType.INPUT;
                        _username.border=true;
                        _username.background=true;
                       
                        _save =new SimpleButton();
                        _save.upState = createSaveButtonState(0xFFCC33);
                        _save.overState=createSaveButtonState(0xFFFFFF);
                        _save.downState=createSaveButtonState(0xCCCCCC);
                        _save.hitTestState=_save.upState;
                        _save.x=10;
                        _save.y=50;
                        _save.addEventListener(MouseEvent.CLICK,hendleSave);
                       
                        addChild(_message);
                        addChild(_username);
                        addChild(_save);
                }
               
                private function createSaveButtonState(color:uint):Sprite {
                       
                        var state:Sprite=new Sprite();
                       
                        var label:TextField=new TextField();
                        label.text="Save";
                        label.x=2;
                        label.height=18;
                        label.width=30;
                        var background:Shape=new Shape();
                        background.graphics.beginFill(color);
                        background.graphics.lineStyle(1,0x000000);
                        background.graphics.drawRoundRect(0,0,32,18,9);
                        background.filters=[new DropShadowFilter(1)];
                        state.addChild(background);
                        state.addChild(label);
                        return state;
                }
               
                private function hendleSave(event:MouseEvent):void {
                       
                        var score:int=Math.floor(Math.random()*10);
                       
                        var dataToSave:XML=<gamescore>
                                                <username>{_username.text}</username>
                                                <score>{score}</score>
                                        </gamescore>;
                                                               
                        var request:URLRequest=new URLRequest("gamescores.php");
                                                               
                        request.data=dataToSave;
                       
                        request.contentType="text/xml";
                       
                        request.method=URLRequestMethod.POST;
                       
                        var loader:URLLoader=new URLLoader();
                       
                        loader.addEventListener(Event.COMPLETE,hendleResponse);
                       
                        loader.load(request);
                }
               
                private function hendleResponse(event:Event):void {
                        try {
                                var success:XML=new XML(event.target.data);
                                if (success.toString()=="1") {
                                        _message.text="Сохранено успешно";
                                } else {
                                        _message.text="В процессе сохр. возникла ошибка";
                                }
                        } catch (e:TypeError) {
                                _message.text="не удалось разобрать хмл-ответ сервера";
                        }
                }
        }
}



А вот код gamescores.php :
Код:

<?php
//читаем XML из RAW POST DATA
$xml =$GLOBALS['HTTP_RAW_POST_DATA'];

//обрабатываем ХМЛ, используя расширение DOM PHP
$document =xmldoc($xml);
//читаем корневой элемент <gameinfo>
$rootElement=$document->root( );
//читаем дочерние узлы  <username> и <score>
$childNodes=$rootElement->children( );

$data= "";

//перебираем дочерние узлы и помещаем их в массив
foreach($childNodes as $childNode) {
//добавляем данные в массив
$name=$childNode->tagName( );
$value=$childNode->get_content( );
$data[$name]=$value;

}
//добавляем данные в score.txt (формат : username|score)
$fp =  fopen("scores.txt","a+");
$dataString=$data['username']. "|" . $data['score']. "\n";
fputs($fp,$dataString,strlen($dataString));
fclose($fp);

//возвращаем код успешности операции во flash
echo "<success>1</success>";
?>

и еще вопрос если это все заработае могу ли я тут просто изменить score.txt на score.xml чтобы сохранить в xml ?
swf я вставляю в хтмл или в пхп index кидаю все это на сервер запускаю в браузере и не работает :(
Маленькая просьба. если найдёте объясните как начинающему :)

dandandan 07.02.2008 20:47

Цитата:

еще вопрос если это все заработае могу ли я тут просто изменить score.txt на score.xml чтобы сохранить в xml ?
Можешь. //добавляем данные в score.txt (формат : username|score)
$fp = fopen("scores.txt","a+");
здесь txt поменять на xml

А код гляну через пару деньков.


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

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