PDA

Просмотр полной версии : создание xml файла на AS3


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

baron27
29.01.2008, 16:40
Только средствами PHP

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

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

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


А если я 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

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