Flash As3.0 PHP变量?

时间:2010-04-07 21:55:44

标签: php flash actionscript-3 variables

是否有可能将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 :(得分:0)

为什么不使用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\">";

答案 1 :(得分:0)

你可以做的是用里面的varibles创建一个单独的类,例如:

  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;

希望这有帮助, 干杯, 将