0

我有一个非常简单或复杂的问题,由你来找出答案。我一直在努力尝试将 URL Loader 类合并到初学者图形程序 - Stencyl 中。我精通 HTML、CSS 和 PHP,但 actionscript 对我来说是全新的,所以我真的可以用手使用。这是我所拥有的:我的域上托管了 4 个文件:

网页.html

样式表.css

请求数据.php

FlashDoc.swf

html 和 css 代码很简单,没有问题,并且 swf 文件嵌入在 html 文档中。flash 文件是一个简单的表单,带有一个文本字段、提交按钮和两个动态文本字段。代码如下:

// Btn listener
submit_btn.addEventListener(MouseEvent.CLICK, btnDown);
// Btn Down function
function btnDown(event:MouseEvent):void {


// Assign a variable name for our URLVariables object
var variables:URLVariables = new URLVariables();
// Build the varSend variable
// Be sure you place the proper location reference to your PHP config file here
var varSend:URLRequest = new URLRequest("http://www.mywebsite.com/config_flash.php");
varSend.method = URLRequestMethod.POST;
varSend.data = variables;
// Build the varLoader variable
var varLoader:URLLoader = new URLLoader;
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
varLoader.addEventListener(Event.COMPLETE, completeHandler);

variables.uname = uname_txt.text;
variables.sendRequest = "parse"; 
// Send the data to the php file
varLoader.load(varSend);

// When the data comes back from PHP we display it here 
function completeHandler(event:Event):void{

var phpVar1 = event.target.data.var1;
var phpVar2 = event.target.data.var2;

result1_txt.text = phpVar1;
result2_txt.text = phpVar2;

} 


}

然后我有一个包含以下代码的小 PHP 文件:

<?php
// Only run this script if the sendRequest is from our flash application
if ($_POST['sendRequest'] == "parse") {
// Access the value of the dynamic text field variable sent from flash
$uname = $_POST['uname'];
// Print  two vars back to flash, you can also use "echo" in place of print
print "var1=My name is $uname...";
print "&var2=...$uname is my name.";

}

?>

由于某种原因,这不起作用。结果只是两个空白文本字段,并且是一个动作脚本菜鸟,我不知道发生了什么。任何帮助将不胜感激。感谢您的时间。

4

1 回答 1

0

如果您不习惯 AS3,您的问题的答案既简单又令人惊讶。

在 AS3 中,当使用 setter 时,flash.* 类倾向于制作和存储传递对象的副本。由于它们存储一个副本,因此在 setter 之后对原始实例的任何修改都不会应用于副本,因此会被忽略。

例如DisplayObject.filtersContextMenu.customItems或的情况URLRequest.data

在您的代码中,您在填充varSend.data = variables 之前variables进行设置。你应该做相反的事情:

variables.uname = uname_txt.text;
variables.sendRequest = "parse"; 
varSend.data = variables;
// Send the data to the php file
varLoader.load(varSend);

只有一些班级这样做,即使那样,他们通常也不会对所有的二传手都这样做。

于 2013-10-10T17:02:04.857 回答