0

私は非常に単純な問題か複雑な問題を抱えています。それを見つけるのはあなた次第です。私は URL Loader クラスを初心者用グラフィックス プログラムである Stencyl に組み込むことに取り組んできました。私は HTML、CSS、および PHP に堪能ですが、actionscript は私にとってまったく新しいものなので、実際に手で使用することができました。ここに私が持っているものがあります: 私のドメインでホストされている 4 つのファイルがあります:

Webpage.html

スタイルシート.css

RequestData.php

FlashDoc.swf

html および css コードは単純で、問題はなく、swf ファイルは html ドキュメントに埋め込まれています。Flash ファイルは、テキスト フィールド、送信ボタン、および 2 つの動的テキスト フィールドを備えた単純なフォームです。コードは次のようになります。

// 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.";

}

?>

これは、何らかの理由で機能していません。その結果、空白のテキスト フィールドが 2 つだけになり、アクション スクリプト初心者なので、何が起きているのかわかりません。どんな助けでも大歓迎です。お時間をいただきありがとうございます。

4

1 に答える 1

0

AS3 に慣れていない場合、問題に対する答えは単純で驚くべきものです。

AS3 では、flash.* クラスは、setter が使用されると、渡されたオブジェクトのコピーを作成して保存する傾向があります。これらはコピーを保存するため、セッターの後の元のインスタンスに対する変更はコピーに適用されず、無視されます。

例えば ​​、DisplayObject.filters、のContextMenu.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 に答える