是否有可能将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;
}
}
}
}
答案 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;
希望这有帮助, 干杯, 将