Flash As3.0 PHP переменные? - PullRequest
       12

Flash As3.0 PHP переменные?

0 голосов
/ 08 апреля 2010

Можно ли сделать переменные php общедоступными и доступными в любом месте на временной шкале?

Сценарий, который я включил, работает нормально, если я устанавливаю его только как класс документа (он не будет работать, если я попытаюсь импортировать его). Переменные передают текст в динамические текстовые поля на главной временной шкале.

Проблема: Он будет извлекать информацию и отображать ее при первой загрузке SWF, но если я перейду ко второму кадру, а затем вернусь, то информация будет стерта. Он также не будет передавать переменные во второй кадр. Единственный способ увидеть переменные после возврата к первому кадру - это перезагрузить весь SWF. Я довольно сильно застрял в этой точке, пытаясь сделать переменные постоянными во всех кадрах.

это мой код:

package {
import flash.display.MovieClip;
import flash.events.*;
import flash.net.*;
import flash.display.Stage;

public class Main extends MovieClip
{
    public function Main() {

        var request:URLRequest = new URLRequest("http://localhost/mytest2/dataLayer.php");
        request.method = URLRequestMethod.GET;

        var loader:URLLoader = new URLLoader();
        loader.dataFormat = URLLoaderDataFormat.VARIABLES;
        loader.addEventListener(Event.COMPLETE, completeHandler);
        loader.load(request);

        function completeHandler(evt:Event) {

            var username = evt.target.data.username;
            var pclass = evt.target.data.pclass;
            var hpoints = evt.target.data.hpoints;
            var spoints = evt.target.data.spoints;

            username_txt.text = username;
            class_txt.text = pclass;
            hpoints_txt.text = hpoints;
            spoints_txt.text = spoints;

        }
    }
}
}

Ответы [ 2 ]

0 голосов
/ 14 апреля 2010

Что вы можете сделать, это создать отдельный класс с вашими переменными внутри, например:

  package
  {
      public static var username:String;
      public static var pclass:String;
      public static var hpoints:Number;
      public static var spoints:Number;
      public class my_globals
      {
          public function my_globals():void {
            var request:URLRequest = new URLRequest("http://localhost/mytest2/dataLayer.php");
            request.method = URLRequestMethod.GET;

            var loader:URLLoader = new URLLoader();
            loader.dataFormat = URLLoaderDataFormat.VARIABLES;
            loader.addEventListener(Event.COMPLETE, completeHandler);
            loader.load(request);

          }

          private function completeHandler(evt:Event) {
            username = evt.target.data.username;
            pclass = evt.target.data.pclass;
            hpoints = evt.target.data.hpoints;
            spoints = evt.target.data.spoints;  
         }

      }
  } 

В первом кадре вашего .fla создайте новый экземпляр этого класса, и в каждом кадре вы можете импортировать класс и получать доступ через статические переменные, другим решением будет также создание функций get и set.

import my_globals;

var globals:my_globals = new my_globals();

username_txt.text = my_globals.username;
class_txt.text = my_globals.pclass;
hpoints_txt.text = my_globals.hpoints;
spoints_txt.text = my_globals.spoints;

Надеюсь, это поможет, Ура, Будет

0 голосов
/ 08 апреля 2010

Почему бы не использовать тег FlashVars / атрибут?

Чтобы сделать последовательность переменных PHP доступной для Flash, объедините их в массив и используйте http_build_query для создания параметра flashvars:

$vars = array('var_one' => $var_one, 'var_two' => $var_two);
$flashvars = http_build_query($vars);

// ...

echo "<PARAM NAME=FlashVars VALUE=\"$flashvars\">";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...