私は、たとえば、どこでも利用できる静的メソッドを作成する方法を考え出し:パブリック静的ロギングメソッドを入力フィールドに書き込む方法を教えてください。
UtilLib.as:
package
{
public final class UtilLib
{
public static function getTimeStamp():uint
{
var now:Date = new Date();
return now.getTime();
}
}
}
を私はUtilLib.getTimeStamp()を実行してどこでもこれをアクセスすることができます - 今、私はlog(msg:String)という新しいステイックメソッドを作成します。これは、複数行の入力フィールドにメッセージを記録する必要があります。
しかし、この入力フィールドはいつもどこかに作成しなければならず、常にアクセス可能で表示可能でなければならず、これは関数のパラメータを常に通過させたくないため、多くの問題が発生します私はオブジェクトを介して渡す必要がありますも..)。
私は静的なログメソッドがそれに書き込むことができるように "public textfield"をどうすればできますか?
更新日: 静的なコンストラクタで次のクラスを試しました(私は思う)。ただし、テキストフィールドオブジェクトは表示されません。私はそれを作成した後にaddChild(debugField)を行うと、それは私に1180
をエラーが発生しますLogger.as
package
{
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldType;
public class Logger extends Sprite
{
public static var debugField:TextField;
/* static block */
{
trace("Logger initializing.");
debugField = new TextField();
debugField.width = 500;
debugField.height = 100;
debugField.x = 100;
debugField.y = 400;
debugField.background = true;
debugField.backgroundColor = 0xFFFFFF;
debugField.defaultTextFormat = new CustomTextFormat();
debugField.mouseWheelEnabled = true;
debugField.multiline = true;
debugField.type = TextFieldType.DYNAMIC;
}
public static function log(msg:String):void
{
if (debugField) debugField.appendText(msg);
}
}
}
私はこのようにそれを初期化します。
var test:Logger = new Logger();
addChild(test);
そして私は新しいのログ次のようなメッセージ:
Logger.log("test");
残念ながら、textFieldは表示されません。
私は分かりません。作成したテキストフィールドをどこにでもアクセス可能にすることは何ですか? – Tom
テキストフィールドはどこにでもアクセスすることはできませんが、メッセージロガーはです。メッセージロガーは、メッセージがログに記録されたときにイベントを送出します。だからどこでも、メッセージ・ログをテキスト・フィールドに表示するだけで、メッセージ・ログを通知して表示することができます。 – michaelavila
私はすべてのオブジェクトのテキストフィールドを再作成したくないので、適合しません。 – Tom