くの、めんどくさいんだよなーっ動的にログイン方法書にinputfield?
-
20-08-2019 - |
質問
きっかけになるかもしれないと作成方法について静的な方法は、例えば:
UtilLib.:
package
{
public final class UtilLib
{
public static function getTimeStamp():uint
{
var now:Date = new Date();
return now.getTime();
}
}
}
アクセスできますもののようにUtilLib.getTimeStamp()-現したい新規作成しstaicと呼ばれる手法log(msg:String).このログインする必要がありますメッセージをマルチラインinputfield.
の問題があるこinputfieldしなければならなかからアクセスできなければならびに可視にならないようにしたいで、関数のパラメータの時間をとことん(さんさすがでブレガントなホテルでした。..).
いくの、めんどくさいんだよなー"公textfield"私の静的なログの方法から書き込みを行うことができまのですか?
更新: 私たは次のクラスは、静的コンストラクタ(ます。しかし、テキストフィールドのオブジェクトがない。い場合は、addChild(debugField)を作成した後でちょっとエラー1180.
Logger.として
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);
}
}
}
I初期化このようになります:
var test:Logger = new Logger();
addChild(test);
およびログインした新しいメッセージのようになります:
Logger.log("test");
残念ながら、textFieldになっているのです。
解決
基本的に必要なもの:
- どこかにメッセージのログをとるのは世界的にアクセス
- する機能を更新テキストフィールドまでは、ログメッセージの変化
簡単なソリューションオブジェできていれば次のようになるはずです:
例
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.Event;
public class Example extends Sprite {
private var messageLog:TextField;
public function Example() {
createTextField();
MessageLogger.getInstance().addEventListener( MessageLogger.LOG, handleMessageLoggerUpdate );
MessageLogger.getInstance().log( "Message!" );
}
private function handleMessageLoggerUpdate( event:Event ):void {
messageLog.text = MessageLogger.getInstance().getLog();
}
private function createTextField():void {
messageLog = new TextField();
addChild( messageLog );
}
}
}
MessageLogger
package {
import flash.events.EventDispatcher;
import flash.events.Event;
public class MessageLogger extends EventDispatcher {
private static var instance:MessageLogger;
public static function getInstance():MessageLogger {
if ( !instance ) {
instance = new MessageLogger( new InstanceKey() );
}
return instance;
}
public static var LOG:String = "MessageLoader#log";
private var messageLog:String;
public function MessageLogger(key:InstanceKey) {
messageLog = "";
}
public function log( message:String ):void {
messageLog += message;
notify();
}
public function getLog():String {
return messageLog;
}
private function notify():void {
dispatchEvent( new Event( LOG ) );
}
}
}
class InstanceKey {}
そして、ここで重要なことはこのメッセージのログはどこからでも利用
MessageLogger.getInstance().log( "Your Message Here" );
ものを通知時にメッセージはログインを使用
MessageLogger.getInstance().addEventListener( MessageLogger.LOG, listenerFunction );
の時点の現在のメッセージのログを使用することで取得可能
MessageLogger.getInstance().getLog();
他のヒント
新しいログインクラスとしてスク以外のリスクについて静的なコンストラクタです。ログインを追加方法はこのクラスです。の静的コンストラクタを保存し、ロギングの分野への民間可変となります。現在お問い合わせ頂く前に、ロギングのメソッドを呼び静的コンストラクタは入力フィールドだきます。このクラスの作成設定の入力フィールド宛先として、今までのログ機能からです。
従来の方法できるようになってしまいますstaticメソッドとプライベート変数を渡します。パスポインタをテキストボックス.
その代わりに
public static function getTimeStamp():uint { ... }
い
public static function writeTimeStamp(messageBox):uint { ... }
の書式が誤っていないとしてdevもいう意味するのか。から、ブロックのコードでアクセス messageBox
また地元の変数となります。ものです。
(名称を"名前のメソッド機能再構成に成功しました。.きも止められないので返し変っていることを確認してくださいする必要がんを変更する必要が宣言さい。)
おの更新などのデバッグのテキストフィールドを付加しなければなりに表示リストのどこかということです。今では信じられないでしょうかを作成し使用するログの方法。を追加したり表示オブジェクトの表示リストを呼び出しaddChild(displayObject:DisplayObject):Boolean;にDisplayObjectContainerないことがある子どもの。