2009-06-15 5 views
1

PHPとの組み合わせでActionscript 2.0を使用しています。これでPHPファイルを呼び出してデータを受け取ることができますが、すぐにそのデータを使用する必要があります。私のクラス変数。AS2:sendandloadでクラス変数をロードする

これは私が欲しいものです:私は、これはAS2には大きな問題であることが判明しました

class user { 

var lastname:String; 

function user(in_ID:Number){ 
     var ontvang:LoadVars = new LoadVars(); 
     var zend:LoadVars = new LoadVars(); 
     zend.ID = in_ID; 
     zend.sendAndLoad("http://localhost/Services/getUser.php", ontvang, "POST"); 
     ontvang.onLoad = function(success:Boolean) { 
      if (success) { 
       lastname = ontvang.lastname; 
      } else { 
       lastname = 'error'; 
      } 
     }; 
} 
} 

、「あなたは、XMLデータを読み込む場合、私はそれを回避するために、この記事を見つけましたが、私はすることができますトンそれはLoadVarsオブジェクトで動作するように取得するように見える: http://www.actionscript.org/forums/showthread.php3?t=144046

すべてのヘルプは、あなたのonLoadハンドラが呼び出されると、それはLoadVarsオブジェクトインスタンスのメンバ関数であるかのように、それは、呼び出されます。..

答えて

2

をいただければ幸いですあなたのユーザーインスタンスではありません。あなたは1を作成するときに -

import mx.utils.Delegate; 

class user { 

    var lastname:String; 
    var ontvang:LoadVars; 

    function user(in_ID:Number){ 
       ontvang = new LoadVars(); 
       var zend:LoadVars = new LoadVars(); 
       zend.ID = in_ID; 
       ontvang.onLoad = Delegate.create(this, onLoad);     
       zend.sendAndLoad("http://localhost/Services/getUser.php", ontvang, "POST"); 

       }; 
    } 

    function onLoad(success:Boolean) : Void 
    { 
     if (success) { 
      lastname = ontvang.lastname; 
     } else { 
      lastname = 'error'; 
     } 
    } 
} 

は負荷が非同期であることを忘れてはいけない:

この周りにいくつかの方法があり、一つは例えば、意図したとおりに動作する関数を作成するためにDelegate.create()を使用することですあなたのユーザーオブジェクトのうち、メンバー変数はすぐには利用できません。あなたのアプリケーションがこれらの非同期イベントによって駆動されるように、LoadVarsのように(例えば、呼び出し元によって提供されるコールバック関数を使用して)、ユーザオブジェクトが準備状況を通知できるようにする必要があります。

+0

大丈夫2点: 1. Delegateクラスはどこにありますか? 2. onLoad関数では、ontvang.lastnameを呼び出しますが、onLoad関数内にはontvang変数はありません。 ありがとうございました! – Pmarcoen

+0

私はちょうどインポートmx.utils.Delegateを追加する必要があったようです。 私は今、ontvang.lastnameの代わりにthis.lastnameを使ってみました。 私のメインファイルには私が今持っています var u = new user(1); tekst.text = u.getLastname(); しかし私はまだ私のテキストフィールドに '未定義'となります。 – Pmarcoen

+0

申し訳ありません - 修正されました。 ontvangはクラスメンバーである必要があったので、onLoad中にそれを取り上げる必要がありました。 –

関連する問題