用PHP动态创建Flash动画_php基础

Macromedia 公司出品的 Flash 动画软件现已经成为Web页面上非常流行的表现工具,网站开发者利用它引起浏览者的兴趣。然而不幸的是,仅仅使用ActionScript创建动画受到很大的限制,Macromedia已经宣布,打算放弃Flash Generator产品,转而采用支持Flash MX的Cold Fusion,我们的网站将向何处去呢?现在,我们可以利用Ming PHP库来轻松地动态创建Flash动画,并且和我们的代码无缝集成。我们可以根据数据库里的数据创建出各种不同效果的动画。
Ming 动画库最初出现在PHP4.05版本里,替代了以前版本的LibSwf模块。Ming 库采用C编写,支持多种语言,下面先看一下如何利用PHP来制作动画。该库使用简单,和 PHP 紧密集成,但是,该库仍然处于实验阶段,目前的版本是0.2a,在线的教程、例子、和帮助手册可以让我们方便地学习,Ming里的函数组织的很有条理,方便PHP和Flash开发者查找。使用 PHP和Ming库,不但让我们的网站有华丽的装饰,而且可以减少开发Flash动画的费用和繁复的劳动。
使用Ming库有两种方式,我们可以内嵌到PHP里(对Unix平台而言),也可以把它作为一个PHP模块来运行,里面的函数支持所有的平台,使用时也无需实例化。如果我们把Ming库作为PHP模块来运行的话,我们必须明确地调用Ming库,和使用其他模块一样,然后使用该库里的函数。由于使用前必须先加载模块,与把Ming作为内部函数编译的方式相比,要有一点性能的下降。
Ming库是完全免费的,我们可以到创作者的网站下载,地址是:http://www.opaque.net/ming/,该网站有详细的使用手册和帮助,在使用前,请先看看安装和配置说明,地址是:http://www.opaque.net/ming/install.html。另外,在PHP网站上也有使用手册和详细说明,地址是:http://www.php.net/ming。
一旦我们正确安装和配置了Ming库,我们可以创建一个PHP对象,从PHP里调用Ming的函数,通过调用函数和属性,就可以定义我们的动画了。在PHP模块里有13个对象,提供了Flash的一些功能,也有几个命令可以来控制发行时的参数设定。下面就看看如何利用它来创建动画。
使用Macromedia Flash创建SWF格式的动画,我们先创建一些符号,Flash有三种类型的符号:图形、动画剪辑、按钮。一旦我们创建了这些符号,我们就可以把它们复制到场景里,每一个拷贝称为一个实例,可以放任意多的实例到我们的场景里。接下来就可以定义这些对象的行为了,也就是定义动作和运动轨迹,也可以定义动画的参数,如尺寸大小和背景颜色,如果需要,可以保存成.SWF文件。
利用PHP的Ming库创建Flash动画,和Macromedia Flash一样,必须先创建一些符号,这些符号就是PHP对象的实例,然后定义这些对象在动画场景里的位置和相互关系,接着定义对象在每一帧里的动作,最后定义动画自己。我们可以直接把SWF直接输出到浏览器,也可以保存成SWF格式的文件,以备后用。Flash的优点就是图形化的用户接口,利用Ming库不但可以更加简单的控制对象,而且具有无限的扩展性和再用性。
下面我们就用一个完整的例子来看看如何使用Ming库:

<?php

/* 首先创建一个符号,并填充颜色 */
$square = new SWFShape();
$sqfill = $square->addFill(0, 0, 0xff);
$square->setRightFill($sqfill);  
$square->movePenTo(-250,-250);
$square->drawLineTo(250,-250);
$square->drawLineTo(250,250);
$square->drawLineTo(-250,250);
$square->drawLineTo(-250,-250);

/* 在动画剪辑里使用上面的符号,并添加一些脚本 */
$sqclip = new SWFSprite();
$i = $sqclip->add($square);
$i->setDepth(1);
$sqclip->setframes(25);
$sqclip->add(new SWFAction("stop();"));  
$sqclip->nextFrame();
$sqclip->add(new SWFAction("play();"));  
for($n=0; $n<24; $n++) {
$i->rotate(-15);
       $sqclip->nextFrame();
}

/* 下面创建按钮 */

function rect($r, $g, $b)  {
$s = new SWFShape();
$s->setRightFill($s->addFill($r, $g, $b));
$s->drawLine(500,0);
$s->drawLine(0,500);
$s->drawLine(-500,0);
$s->drawLine(0,-500);
return $s;
}

$b = new SWFButton();
$b->addShape(rect(0xff, 0, 0), SWFBUTTON_UP | SWFBUTTON_HIT);
$b->addShape(rect(0, 0xff, 0), SWFBUTTON_OVER);
$b->addShape(rect(0, 0, 0xff), SWFBUTTON_DOWN);  
$b->addAction(new SWFAction("setTarget('/box'); gotoandplay(2);"), SWFBUTTON_MOUSEDOWN);

/* 下面创建动画,并添加上面的符号和按钮 */

$m = new SWFMovie();
$m->setDimension(4000,3000);

$i = $m->add($sqclip);
$i->setDepth(3);
$i->moveTo(1650, 400);
$i->setName("box");

$i = $m->add($b);
$i->setDepth(2);
$i->moveTo(1400,900);

/* 最后,我们把它输出到浏览器 */

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

好了,在你的机器上运行一下看看,是不是和用Flash创建的一样!要得到更多的函数说明,请参考操作手册。

时间: 2024-10-27 04:04:59

用PHP动态创建Flash动画_php基础的相关文章

用PHP动态创建Flash动画

flash动画|创建|动态 Macromedia 公司出品的 Flash 动画软件现已经成为Web页面上非常流行的表现工具,网站开发者利用它引起浏览者的兴趣.然而不幸的是,仅仅使用ActionScript创建动画受到很大的限制,Macromedia已经宣布,打算放弃Flash Generator产品,转而采用支持Flash MX的Cold Fusion,我们的网站将向何处去呢?现在,我们可以利用Ming PHP库来轻松地动态创建Flash动画,并且和我们的代码无缝集成.我们可以根据数据库里的数据

用 PHP 动态创建 Flash 动画

创建|动态 Macromedia 公司出品的 Flash 动画软件现已经成为Web页面上非常流行的表现工具,网站开发者利用它引起浏览者的兴趣.然而不幸的是,仅仅使用ActionScript创建动画受到很大的限制,Macromedia已经宣布,打算放弃Flash Generator产品,转而采用支持Flash MX的Cold Fusion,我们的网站将向何处去呢?现在,我们可以利用Ming PHP库来轻松地动态创建Flash动画,并且和我们的代码无缝集成.我们可以根据数据库里的数据创建出各种不同效

让PHP动态生成Flash动画

想象过在网站上动态生成flash动画吗,本文就让你步入php flash的激动时代. 一.需要的软件 swf的支持库:http://reality.sgi.com/grafica/flash/dist.99.linux.tar.Z,这个包里面有文档,你可以用c来使用它. 还有当然是php4了,可以从http://www.php.net得到. 二.安装 1.libswf.a安装 #cp dist.99.linux.tar.Z /usr/local #tar xvzf dist.99.linux.t

利用PHP动态生成VRML网页_php基础

多年前本人开始从事三维动画方面的学习,后学习了PHP,发现可以通过PHP动态生成VRML文档,有点类似于Generator动态生成Flash的方式.  由于VRML博大精深,这里只介绍一个简单的例子,还可以将各种VRML结点存入数据库中,这样的虚拟现实网页将--,爽!  下面是源程序.注意:在服务器上,要将让PHP处理wrl格式的文档,否则后果将是没有任何虚拟现实.本源程序直接存成wrl文件,在浏览器中要安装插件,可以到我的另一个主页上去下载:http://go.163.com/~sjtucao

JavaScript与DOM组合动态创建表格实例_基础知识

简介 这篇文章简单介绍了DOM 1.0一些基本而强大的方法以及如何在JavaScript中使用它们.你可以学到如何动态地创建.获取.控制和删除HTML元素.这些DOM方法同样适用于XML.所有全面支持DOM 1.0的浏览器都能很好地运行本篇的实例,比如IE5,Firefox等.概况 - Sample1.html 这篇文章通过实例代码介绍DOM.请从尝试下面的HTML例子开始.它使用DOM 1的方法由JavaScript动态创建一个HTML表格.它创建一个由四个包含文本内容的单元格组成的小表格.单

使用函数递归实现基于php和MySQL的动态树型菜单_php基础

    树型菜单在很多桌面应用系统中都有非常广泛的应用,其主要优点是结构清晰,利于使用者非常清楚的知道目前自己所在的位置.但在web上树型菜单的应用因为没有理想的现成组件可以拿过来直接使用,所以一般的情况下,程序员主要是通过JavaScript来实现一些简单的树型结构菜单,但这些菜单往往都是事先定好各菜单项目,以及各菜单项目之间的层次关系,不利于扩充,一旦需要另一个菜单结构时,往往还需要重新编写,因此使用起来不是很方便.     经过对函数递归的研究,我发现这种树型菜单可以通过递归函数,使树型菜

php中动态修改ini配置_php基础

1,运行时改变配置 在前一篇中曾经谈到,ini_set函数可以在php执行的过程中,动态修改php的部分配置.注意,仅仅是部分,并非所有的配置都可以动态修改.关于ini配置的可修改性,参见:http://php.net/manual/zh/configuration.changes.modes.php 我们直接进入ini_set的实现,函数虽然有点长,但是逻辑很清晰: 复制代码 代码如下: PHP_FUNCTION(ini_set) {     char *varname, *new_value

php单例模式实现(对象只被创建一次)_php基础

单例类至少拥有以下三种公共元素:     必须拥有一个构造函数,并且必须被标记为private.    拥有一个保存类的实例的静态成员变量.    拥有一个访问这个实例的公共的静态方法 具体使用方面,我在下面php实例中注释的很清楚: 复制代码 代码如下: <?php /**  * by www.phpddt.com  */ class Mysql{  //该属性用来保存实例  private static $conn;  //构造函数为private,防止创建对象  private funct

xml+php动态载入与分页_php基础

这是在看太平洋网的评论时看到的,太平洋网是用jsp做为后台语言,用来产生xml文件.然后在把数据绑定到html上的.我就用php也做了一个以下是源文件. -----------------xml.htm------------------<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html