使用PHP写入.swf文件

时间:2009-08-30 16:12:59

标签: php flash

我想知道如何使用php基本上编辑.swf文件,更改单个变量或更改更多。我该怎么做呢?有没有办法在不知道机器代码的情况下编辑它?

如果有一个如何做到这一点的例子,我在哪里可以找到它?

谢谢!

或者,如果有更简单的方法可以做到这一点,请告诉我!

5 个答案:

答案 0 :(得分:4)

看一下libming

http://docs.php.net/manual/en/book.ming.php

上的php文档

答案 1 :(得分:2)

使用Actionscript,加载外部数据非常简单:XMLJSON是两种标准化的方法,两者都可以通过PHP轻松生成。你究竟想做什么?

答案 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了。