Использование PHP для записи в файлы .swf - PullRequest
1 голос
/ 30 августа 2009

Мне было интересно, как в основном отредактировать файл .swf с помощью php, чтобы изменить одну переменную или изменить больше. Как бы я поступил так? Есть ли способ отредактировать его, не зная машинного кода?

Если есть пример, как это сделать, где я могу его найти?

Спасибо!

Или, если есть более простой способ сделать это, пожалуйста, дайте мне знать!

Ответы [ 5 ]

4 голосов
/ 30 августа 2009

взгляните на libming

php документация на http://docs.php.net/manual/en/book.ming.php

2 голосов
/ 30 августа 2009

С помощью Actionscript очень просто загрузить внешние данные: XML и JSON - это два стандартизированных способа сделать это, и оба легко генерируются PHP. Что именно вы пытаетесь сделать?

1 голос
/ 11 августа 2012

Вопрос старый, но так как он совпадает с тем, над чем я работал, я решил, что соберу что-то вместе, если другие найдут это полезным. Решение работает только для AS3. Это позволяет вам изменять значения переменных и констант экземпляра.

Предположим, у вас есть следующий класс:

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

    public class Advertisement extends Sprite {

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

        /* ... */
    }
}

Вы хотите, чтобы переменная 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);

?>

Классы Flaczki можно скачать по адресу http://code.google.com/p/flaczki/downloads/list

Подробнее о фреймворке Flaczki вы можете узнать в блоге по разработке проекта по адресу http://flaczkojad.blogspot.com/

1 голос
/ 30 августа 2009

проверить SWF-библиотеку в php

0 голосов
/ 30 августа 2009

Вместо того, чтобы думать о том, как генерировать SWF-файлы, сделайте обратное, и пусть внутреннее поведение зависит от внешней логики в PHP-скрипте. Таким образом, вам никогда не нужно (пере) компилировать ваш SWF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...