<?php 
/** 
 * This example shows a background on frame 1, followed by images of a running dog (Moki) with a transparent background on the other frames. 
 * 
 * Note! This technique has an important shortcoming: when looping, the background will be shown by its own, each new loop. 
 * It is not possible to start looping _after_ the background has been drawn. 
 * This means that if the dog was running at a fixed position, you would see a flash of background every 10th frame. 
 * 
 * The image of the running dog was taken from http://almirah.deviantart.com/art/Moki-Run-Cycle-174572876 
 */ 
 
use movemegif\domain\FileImageCanvas; 
use movemegif\GifBuilder; 
 
// just for debugging 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
 
// include movemegif's namespace 
require_once __DIR__ . '/../php/autoloader.php'; 
 
$builder = new GifBuilder(320, 180); 
$builder->setRepeat(); 
 
// background image 
$builder->addFrame() 
    ->setCanvas(new FileImageCanvas(__DIR__ . '/moki/landscape.jpg')); 
 
// dogs runs from left to the right 
$imageIndex = 0; 
for ($x = -140; $x <= 310; $x += 10) { 
 
    $builder->addFrame() 
        // load single frame from GIF file, and autodetect transparency color 
        ->setCanvas(new FileImageCanvas(__DIR__ . '/moki/' . $imageIndex . '.gif')) 
        // number of 1/100 seconds per frame 
        ->setDuration(8) 
        // position this frame on the bottom half of the image 
        ->setTop(60)->setLeft($x) 
        // when done painting one frame of the dog, restore the state to just before the dog was drawn 
        ->setDisposalToOverwriteWithPreviousFrame() 
    ; 
 
    // next dog image 
    if (++$imageIndex == 10) { 
        $imageIndex = 0; 
    } 
} 
 
$builder->output('moki.gif'); 
 
 |