我想知道如何使用PHP基本编辑.swf文件,以更改单个变量或更改。我会如何去做这件事?有没有办法在不知道机器码的情况下编辑它?使用PHP写入.swf文件
如果有一个如何做到这一点的例子,我可以在哪里找到它?
谢谢!
或者,如果有更简单的方法去做这件事,请让我知道!
我想知道如何使用PHP基本编辑.swf文件,以更改单个变量或更改。我会如何去做这件事?有没有办法在不知道机器码的情况下编辑它?使用PHP写入.swf文件
如果有一个如何做到这一点的例子,我可以在哪里找到它?
谢谢!
或者,如果有更简单的方法去做这件事,请让我知道!
问题是旧的,但由于它恰好与我一直在努力的一致,所以我想我会把东西放在一起,以防其他人发现它有用。该解决方案仅适用于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()期望作为第二个参数的数组,该数组由你想要修改的类的限定名键控。数组本身为每个类保存新值,其中键为变量/常量名。
要查看的SWF文件中的变量,使用AS3ConstantExtractor:
<?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框架在项目开发的博客http://flaczkojad.blogspot.com/
使用libming写入闪存文件的数据是否与之保持一致? – Cyclone 2009-08-30 16:32:25
检查出SWF-library在PHP libming
PHP文件
而不是想着如何生成SWF文件,却反其道而行之,让内部行为取决于PHP脚本中的外部逻辑。这样你就不需要(重新)编译你的swf。
非常好,谢谢! – Cyclone 2012-08-12 15:39:14