我想知道如何使用php基本上编辑.swf文件,更改单个变量或更改更多。我该怎么做呢?有没有办法在不知道机器代码的情况下编辑它?
如果有一个如何做到这一点的例子,我在哪里可以找到它?
谢谢!
或者,如果有更简单的方法可以做到这一点,请告诉我!
答案 0 :(得分:4)
看一下libming
上的php文档答案 1 :(得分:2)
答案 2 :(得分:1)
查看php中的SWF-library
答案 3 :(得分:1)
问题是陈旧的,但由于它恰好与我一直在做的事情相吻合,我想我会把一些东西放在一起以防其他人发现它有用。该解决方案仅适用于AS3。它允许您更改实例变量和常量的值。
假设您有以下课程:
package pl.krakow.rynek {
import flash.display.Sprite;
public class Advertisement extends Sprite {
private var title:String = 'Euro 2012 LIVE!';
/* ... */
}
}
您希望var title 是其他内容。这样做的代码如下:
<?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);
?>
可以在http://code.google.com/p/flaczki/downloads/list
下载Flaczki课程您可以在项目开发博客http://flaczkojad.blogspot.com/找到有关Flaczki框架的更多信息
答案 4 :(得分:0)
不要考虑如何生成swf文件,而是执行相反的操作,让内部行为依赖于php脚本中的外部逻辑。这样你就不需要(重新)编译你的swf了。