2009-08-30 9 views
1

基本的にPHPを使って.swfファイルを編集したり、単一の変数を変更したり、もっと変更したりする方法が不思議でした。これをどうやってやりますか?マシンコードを知らずに編集する方法はありますか?PHPを使って.swfファイルに書き込む

これを行う方法の例がある場合、どこで見つけることができますか?

ありがとうございます!

また、これを行う簡単な方法がある場合は、教えてください。

答えて

1

質問は古いですが、それは私が取り組んできたものと一致するので、私は他の人がそれが有用であると思うように何かを組み立てると考えました。このソリューションはAS3のみで動作します。インスタンス変数と定数の値を変更することができます。

あなたは以下のクラスがあるとします。

package pl.krakow.rynek { 
    import flash.display.Sprite; 

    public class Advertisement extends Sprite { 

     private var title:String = 'Euro 2012 LIVE!'; 

     /* ... */ 
    } 
} 

あなたが何か他のことにするVAR タイトルをしたいです。これを行うためのコードは次のとおりです。

<?php 

require_once 'flaczki/classes.php'; 

// parse the SWF file, decoding only those tags needed by the injector 
$input = fopen("input.swf", "rb"); 
$parser = new SWFParser; 
$injector = new AS3ConstantInjector; 
$swfFile = $parser->parse($input, $injector->getRequiredTags()); 

$classConstants = array(
    'pl.krakow.rynek.Advertisement' => array(
     'title' => 'Free Beer!' 
    ) 
); 

// inject the values and reassemble the file 
$injector->inject($swfFile, $classConstants); 
$output = fopen($outPath, "wb"); 
$assembler = new SWFAssembler; 
$assembler->assemble("output.swf", $swfFile); 

?> 

コードは自明です。 SWFファイルが最初に解析され、変更が加えられ、メモリ内構造がファイルに保存されます。 AS3ConstantInjector.inject()は、変更したいクラスの修飾された名前をキーにした配列の配列を2番目の引数として受け取ります。配列自体は、各クラスの新しい値を保持し、キーは変数/定数名として保持されます。

<?php 

require_once 'flaczki/classes.php'; 

$input = fopen("button.swf", "rb"); 
$parser = new SWFParser; 
$extractor = new AS3ConstantExtractor; 
$swfFile = $parser->parse($input, $extractor->getRequiredTags()); 
$classConstants = $extractor->extract($swfFile); 

print_r($classConstants); 

?> 

Flaczkiクラスはhttp://code.google.com/p/flaczki/downloads/list

でダウンロードすることができますがでプロジェクト開発ブログでFlaczkiフレームワークについての詳細を調べることができます、SWFファイル内の変数を参照してくださいAS3ConstantExtractorを使用するには

http://flaczkojad.blogspot.com/

+0

それは素晴らしいです、ありがとう! – Cyclone

2

Actionscriptを使用すると、外部データを読み込むのが非常に簡単です。XMLJSONは標準化された2つの方法であり、どちらもPHPで簡単に生成されます。あなたは正確に何をしようとしていますか?

+0

私は、フラッシュファイルのコピーをダウンロードできるようにしようとしていますが、そのフラッシュファイルをダウンロードしたユーザーにカスタムにする必要があります。 (つまり、彼らはフラッシュロゴを作成し、今すぐ.swfをダウンロードできます) – Cyclone

+0

カスタムアートワークを追加するだけですか? –

+0

@cyclone:owkay私は...このように、生成するのはiddだけです... marbyはこれを質問に含めます。 –

4

PHP

+0

フラッシュファイルにlibmingで書き込まれたデータはそのままですか? – Cyclone

1

チェックアウトSWF-libraryをで

PHPのドキュメントをlibmingを見てみましょうPHPスクリプトの外部ロジック。この方法では、swfを(再)コンパイルする必要はありません。

関連する問題