4.traceが使えない!
環境を整える
FLASH作成時、必ずお世話になるtraceですが、現環境下ではその出力を見ることができません。
いや、見る方法はあるのかもしれませんが、私にはできません。
もともと、MX2004での作業時にいろんな値をチェックするため、自分で値などを表示させるMCを作って使用してました。
Hello!って文字が表示できるわけだらか、同じように表示させればいいか、とそのようなクラスを作ってみました。
そのスクリプトが以下のものです。
クリアボタンを押すと内容消去。全体をドラッグして移動できます。
// メッセージ表示クラス
package {
import flash.display.*;
import flash.text.*;
import flash.events.*;
import flash.net.URLRequest;
// messageboxクラスの宣言
public class messagebox extends Sprite {
public var container:Sprite = new Sprite();//呼び出し元で使うため private だとエラー
private var b_txt:TextField;
private var clearbt:Loader;
public function messagebox() {// コンストラクタ
//containerの形状指定
var cx:int = 0;
var cy:int = 0;
var cw:int = 200;
var ch:int = 400;
container.graphics.beginFill(0xCCCCCC);
container.graphics.drawRect(cx,cy,cw,ch);
container.graphics.endFill();
container.x=300;
container.y=0;
//イベントリスナー設定(ドラッグ用)
container.addEventListener(MouseEvent.MOUSE_DOWN, mousedown);
container.addEventListener(MouseEvent.MOUSE_UP, mouseup);
// 表示用のテキストフィールドを作る
b_txt = new TextField();
b_txt.x=0;
b_txt.y=0;
b_txt.width =200;
b_txt.height=400;
//テキストのフォーマット
var format:TextFormat=new TextFormat();
format.font ="_等幅"; //フォント名
format.size =14; //サイズ
format.color =0x333333;//色
b_txt.setTextFormat(format);
container.addChild(b_txt);
//クリアボタン設定
var tURL:String = "clearbt.swf";//クリアボタン画像ファイル
var urImage:URLRequest = new URLRequest( tURL );
clearbt = new Loader();
clearbt.load( urImage );
clearbt.x=174;
clearbt.y=4;
clearbt.scaleX=0.7;
clearbt.scaleY=0.7;
container.addChild(clearbt);
//イベントリスナー設定(クリアボタン用)
clearbt.addEventListener(MouseEvent.CLICK, onClick);
}
public function show(txt:String):void {//表示するメソッド
b_txt.appendText(txt+"\n");
}
private function onClick(evt:MouseEvent):void {//クリアボタン
b_txt.text="";
}
private function mousedown(evt:MouseEvent):void {//ドラッグスタート
container.startDrag(false);
}
private function mouseup(evt:MouseEvent):void {//ドラッグストップ
container.stopDrag();
}
}
}
あ。¥が逆スラッシュになってる?まあコピペすれば¥になるから許して下さい(^^;
使ってみよう
実際に使用する時は使うスクリプトで以下のようにします。
先のHello.asに組み込んでいます。■の部分がメッセージ表示用に追加した部分です。
package {
import flash.display.*;
import flash.text.*;
public class Hello extends MovieClip {
private var message:messagebox;//■
function Hello() {
message = new messagebox();//■
addChild(message.container);//■
var a_txt:TextField = new TextField();
addChild(a_txt);
a_txt.text = "Hello!";
message.show("Hello!を出力しました");//■
}
}
}
細かい突っ込みは置いといて、、、とりあえず、これでtrace代わりにはなるでしょう。
ファイルの文字コードをUTF-8にしておかないと、文字化けしてましたのでご注意を。
実は、、、
後で知ったのですが、Flash TracerなるFirefoxのアドオンがあるそうです。
それを使うとtraceの出力を見ることができるんだとか。
試しにやってみたのですが、何が悪いのかわかりませんが、とにかくうまくいかず、、、
原因探るのも面倒だし、自作のクラスでもええわ!と思って深く追求しませんでした。