Передача переменных из Flash в PHP - PullRequest
0 голосов
/ 04 сентября 2010

Создание флеш-проекта, в котором пользователи могут посещать сайт и включать / выключать объекты в доме (например, свет, телевизор, компьютер и т. Д.). Следующий пользователь, который посетит дом на веб-сайте, увидит огни или бытовые приборы были включены. Переменные Flash передаются в PHP, и эти переменные сохраняются в файле XML. (Для проверки того, что сохраняется в файле XML, при каждом щелчке открывается файл --vars.xml.) В файле vars.xml я вижу, что объекты дома, которые были включены в последний раз, сохраняются. в файле XML - НО в файле SWF, ТОЛЬКО один из объектов, перечисленных в XML, включен. Только последний объект, по которому щелкнули, будет отображать ON - не все объекты в файле XML.)

package {
  import flash.display.MovieClip;
  import flash.events.MouseEvent;
  import flash.events.Event;
  import flash.text.*;
  import flash.net.*;

  public class House extends MovieClip {

    var request:URLRequest = new URLRequest("vars.xml")
    var loader:URLLoader = new URLLoader();


    // Constructor--------------------------------------------------------------------
    public function House()


    {

        loader.addEventListener(Event.COMPLETE, parseXML);
        loader.load(request); 

}

// function sendPhp ------------------------------------------------------------------
    function sendPhp():void
    {

        // send vars to php
        var request:URLRequest = new URLRequest("write_xml.php"); // the php file to send data to
        var variables:URLVariables = new URLVariables(); // create an array of POST vars


        for (var i:int=0; i<onList.length; i++) {
            variables["v"+i] = onList[i];
        }

        //variables['powerUsage'] = totalTxt.text;

        request.data = variables; // send the vars to the data property of the requested url (our php file)
        request.method = URLRequestMethod.POST; // use POST as the send method
        try
        {
            var sender:URLLoader = new URLLoader();
            sender.load(request); // load the php file and send it the variable data
            navigateToURL(new URLRequest("vars.xml"), '_blank'); //show me the xml
        } 
        catch (e:Error) 
        {
            trace(e); // trace error if there is a problem
        }
    }


// function parseXML ------------------------------------------------------------------

function parseXML(evt:Event)
{
    var xdata:XML = new XML(loader.data); // using E4x

    //xdata.child(0);

    for (var j:int=0; j<xdata.length(); j++) {
        onList[j] = xdata.child(j);

        for (var k:int=0; k<HouseObjects.length;k++) {
            //root[onList[j]].gotoAndStop(3);
            if (onList[j] == HouseObjects[k].name) {
                HouseObjects[k].gotoAndStop(3);
                //trace("tracing house objects"+ HouseObjects[k]);
                trace("onList[j]: " + onList[j]);
                trace("Array onList: " + onList);

            }

        }

    }

}



 } //end of class

} // end of package

1 Ответ

1 голос
/ 05 сентября 2010

Вам на самом деле не нужно помещать весь этот код здесь, и это правда, что вы должны сделать свое приложение более безопасным, особенно после показа всей этой информации!Если ваш XML не является проблемой, проверьте часть Actionscript, в частности функцию parseXML ().

Можете ли вы отслеживать имена включенных компонентов?Если да, сконцентрируйтесь на том, что происходит в вашей петле.Если ваш xml в порядке, проблема не в передаче данных из PHP во Flash.

Мне нравится домик на дереве!;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...