[英]the connection between the flash as3.0 (flash pro) with PHP and MySql
[英]Flash As3.0 PHP 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;
}
}
}
}
为什么不使用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\">";
您可以做的是创建一个单独的类,其中包含您的变量,例如:
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;
希望这会有所帮助,干杯,威尔
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.