Linuxデスクトップのサーバーで実行しているアプリケーションを開発しています。Linux での Flash の欠点 (読み: 難しすぎる) のため、私は Windows でアプリの (小さな) フラッシュ部分を開発しています。現在、フラッシュ トレーサーを使用してフラッシュ部分の出力をキャプチャしようとしていますが、これも非常に難しいことがわかっています。Linux でトレースの出力を監視できる他の方法はありますか? ありがとう...
6 に答える
これも役立つことを願っています(私が来たグーグル検索のために):
トレースを行うには、 http: //www.adobe.com/support/flashplayer/downloads.htmlからのFlash Playerのデバッガーバージョンが必要です (具体的には「デバッガー」バージョンを探してください。最初の外観では見つけるのが困難です)。
次に、自宅のmm.cfgファイルに次の内容が含まれています
ErrorReportingEnable=1 TraceOutputFileEnable=1 MaxWarnings=50
そして、あなたは行ってもいいです-ブラウザを再起動します。トレースが入力され始めると、ログファイルが次の場所に表示されます。
~/.macromedia/Flash_Player/Logs/flashlog.txt
何かのようなもの
tail ~/.macromedia/Flash_Player/Logs/flashlog.txt -f
トレースをたどるのに十分なはずです。
私が何年にもわたって使用してきた、別の驚くほど単純な回避策は、swf内に直接出力モジュールを作成することです。これはすべて、MovieClipをテキストフィールドに添付するキーボードショートカットです。私のすべてのトレースは、出力ウィンドウではなく(またはそれに加えて)このテキストフィールドに移動します。もちろん、何年にもわたってウィンドウをドラッグ可能、サイズ変更可能などに改良してきました。しかし、単純なロギングのために他のアプローチは必要ありませんでした。100%信頼性があり、すべてのプラットフォームで再利用できます。
[編集-コメントへの応答]javascriptのalert()関数のようなアラートはありません。ただし、内部テキストフィールドの使用は次のように簡単です。
ACTIONSCRIPT1バージョン
(下部の注記を参照)
/* import ExternalInterface package */
import flash.external.*;
/* Create a movieclip for the alert. Set an arbitrary (but very high) number for the depth
* since we want the alert in front of everything else.
*/
var alert = this.createEmptyMovieClip("alert", 32000);
/* Create the alert textfield */
var output_txt = alert.createTextField("output_txt", 1, 0, 0, 300, 200);
output_txt.background = true;
output_txt.backgroundColor = 0xEFEFEF;
output_txt.selectable = false;
/* Set up drag behaviour */
alert.onPress = function()
{
this.startDrag();
}
alert.onMouseUp = function()
{
stopDrag();
}
/* I was using a button to text EI. You don't need to. */
testEI_btn.onPress = function()
{
output_txt.text = (ExternalInterface.available);
}
注:これはAS1で正常に機能し、AS2に適切に変換されます(そうする場合は強力なデータ入力を使用するのが最適ですが、厳密には必須ではありません)。FlashPlayers8-10で動作するはずです。ExternalInterfaceはFlash8で追加されたため、以前のプレーヤーバージョンでは機能しません。
ACTIONSCRIPT3バージョン
var output_txt:TextField = new TextField();
addChild(output_txt);
output_txt.text = (String(ExternalInterface.available));
あなたがそれを少し強化したいなら:
var alert:Sprite = new Sprite();
var output_txt:TextField = new TextField();
output_txt.background = true;
output_txt.backgroundColor = 0xEFEFEF;
output_txt.selectable = false;
output_txt.width = 300;
output_txt.height = 300;
alert.addChild(output_txt);
addChild(alert);
alert.addEventListener(MouseEvent.MOUSE_DOWN, drag);
alert.addEventListener(MouseEvent.MOUSE_UP, stopdrag);
output_txt.text = (String(ExternalInterface.available));
function drag(e:MouseEvent):void
{
var alert:Sprite = e.currentTarget as Sprite;
alert.startDrag();
}
function stopdrag(e:MouseEvent):void
{
var alert:Sprite = e.currentTarget as Sprite;
alert.stopDrag();
}
[/編集]
実行時にトレース出力のみが必要な場合は、FirefoxでFirebugを使用してから、Flash.external.ExternalInterfaceを使用して、Firebugが提供するconsole.log()Javascriptメソッドを呼び出すことができます。
私はその戦略を何度も使用して、大きな成功を収めてきました。
Linuxでflexコンパイラを使用してactionscriptファイルを作成します。[embed(source = "file")]画像やフォントを含むすべてのアセットに対して、Linuxでのactionscript開発は開発者にとって非常に使いやすいと思います。
繰り返しになりますが、私はフラッシュが逆にUnixフレンドリーになったことに最も興味があります:)
FlashTracer を実装するには、次のアドレスにアクセスし、最新のファイルがあることを確認してください。 http://www.sephiroth.it/firefox/flashtracer/ . インストールしてブラウザを再起動します。
Adobe にアクセスして、最新のフラッシュ デバッガーを入手してください。FlashTracer は Firefox の追加機能であるため、Firefox バージョンをダウンロードしてインストールします。
Firefox に最新のフラッシュ デバッガーとフラッシュ トレーサーがあるので、mm.cfg を見つける必要があります。
PC 上の場所:C:\Documents and Settings\username
の内部はmm.cfg
次のとおりです。
ErrorReportingEnable=1
TraceOutputFileEnable=1
MaxWarnings=100 //Change to your own liking.
保存したら、Firefox を開き、[ツール] > [フラッシュ トレーサー] に移動して、フラッシュ トレーサー ウィンドウに移動します。ポップアップするパネルの右下隅に 2 つのアイコンがあるので、レンチをクリックして、パスがログ ファイルの保存先に設定されていることを確認します。また、フラッシュトレーサーがオンになっていることを確認してください。下部に再生/一時停止ボタンがあります。
私は現在この実装を使用しており、うまくいくことを願っています。Flash Tracer は少し古いですが、FireFox の最新バージョンで動作します。FireFox 3.0.10で使用しています。
Thunderboltは、組み込みの firebug サポートを備えた優れたロギング フレームワークです。