用PHP动态创立Flash动画

清单 2 显示了使用 Ming 库实现的 HelloWorld 示例,在命令行中运行这段代码将生成文件 hello.swf,Web 2.0 引入了 Rich Internet Application,一种用于构建 Rich Internet Application(RIA)的方法就是使用动态,一种用于构建 Rich Internet Application(RIA)的方法就是使用动态,Web 2.0 引入了 Rich Internet Application,Ming 动画库最初出现在PHP4.05版本里,PHP和Ming库

其间有一组映射到 SWF
动画中的数据类型的目的:子图形、图形、文本、位图等等。在本文中,作者动用了预编写翻译的恢弘
php_ming.dll 库用于 Windows 版本的 PHP。

Web 2.0 引进了 Rich Internet Application。但 Rich Internet Application
的意义是怎样?通常,它象征向应用程序中增多具备莫斯中国科学技术大学学响应技巧的贸易操作。具体来讲,它意味着能够立即改造页面中的小部件、Web
表单和告诉,而无需从服务器中检索新页面。

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库,和应用别的模块一样,然后使用该Curry的函数。由于选取前务必先加载模块,与把Ming作为当中等高校函授数编写翻译的格局比较,要有少好些天性的降落。
Ming库是完全无偿的,大家能够到创小编的网址下载,地址是:
一经大家科学安装和配置了Ming库,大家能够创制贰个PHP对象,从PHP里调用Ming的函数,通过调用函数和总体性,就能够定义大家的动画片了。在PHP模块里有12个指标,提供了Flash的一部分功力,也许有多少个指令能够来调整发行时的参数设定。上面就看看哪些行使它来创制动画。
采用Macromedia
Flash成立SWF格式的动画片,大家先创建一些标识,Flash有三种等级次序的标志:图形、动画剪辑、开关。一旦大家成立了这个标识,大家就足以把它们复制加入景里,每三个拷贝称为二个实例,可以放大肆多的实例到我们的气象里。接下来就足以定义那几个指标的行为了,也正是概念动作和移动轨迹,也得以定义动画的参数,如尺寸大小和背景颜色,假如须要,能够保存成.SWF文件。
应用PHP的Ming库创立Flash动画,和Macromedia
Flash同样,必须先成立一些符号,这几个标识就是PHP对象的实例,然后定义这么些指标在动画场景里的职位和相互关系,接着定义对象在每一帧里的动作,最终定义动画本人。我们可以直接把SWF直接出口到浏览器,也足以保留成SWF格式的文件,以备后用。Flash的长处就是图形化的用户接口,利用Ming库不但能够进一步简明的调节目的,而且具有特别的扩展性和再用性。
下边大家就用贰个完好无缺的例证来拜候哪些使用Ming库:

清单 2 呈现了应用 Ming 库完毕的 HelloWorld 示例。

选用 Ming 库动态创设 Flash 动画

一种用于营造 Rich Internet Application(福睿斯IA)的法门就是接纳动态
HTML(Dynamic HTML,DHTML),它是
Ajax、Javascrīpt、层叠样式表(Cascading Style Sheet,CSS)和 HTML
的重组(请参阅 参考资料)。不过 DHTML 并不是向 Web
应用程序中增添互动操作的惟一方法。另一种首要方法是选用 Adobe
flash Player,使用它为 Web
站点加多交互操作已经有十年的历史。

<?php

清单 2. Hello.php

Rich Internet Application 是 Web 2.0 中的新前卫词,况且就 Web 2.0
的实质来说,八个第一零部件正是 Adobe Flash。驾驭怎么将 Flash
动画集成到应用程序中,并运用 Ming 库动态生成 Flash 动画。

率先版的 Flash 曾是用于创造动画图片的工具,而风靡版本的 Flash
已经得以托管贰个一体化的分界面,可用以调节 Web 服务拜谒并运用
ECMAscrīpt(Javascrīpt 的正儿八经版本)来提供完整的台本扶助。

/* 首先创造贰个标志,并填写颜色 */
$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);

    
<?php
$f = new SWFFont( '_sans' );

$t = new SWFTextField();
$t->setFont( $f );
$t->setColor( 0, 0, 0 );
$t->setHeight( 400 );
$t->addString( 'Hello World' );

$m = new SWFMovie();
$m->setDimension( 2500, 800 );
$m->add( $t );

$m->save( 'hello.swf' );
?>

Web 2.0 引入了 Rich Internet Application。但 Rich Internet Application
的含义是怎么着?平常,它代表向应用程序中增加具备莫斯中国科学技术大学学响应工夫的交易操作。具体来讲,它表示能够立刻更换页面中的小部件、Web
表单和告诉,而不需求从服务器中搜求新页面。

了解 Flash

/* 在动画剪辑里应用方面包车型地铁标志,并累加一些脚本 */
$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();
}

在指令行中运转这段代码将调换文书 hello.swf。当本人在 Web
浏览器中开采该公文时,看到了图 1 所示的结果。

一种用于创设 Rich Internet Application(奥迪Q3IA)的办法就是采纳动态
HTML(Dynamic HTML,DHTML),它是
Ajax、JavaScript、层叠样式表(Cascading Style Sheet,CSS)和 HTML
的咬合(请参阅
参谋资料)。但是DHTML 并非向 Web
应用程序中丰盛互动操作的惟一方法。另一种重大措施是应用 Adobe Flash
Player,使用它为 Web 站点增加交互操作已经有十年的野史。

Flash Player 是合而为一到运转 Microsoft® Windows®、Mac OS X 和
linux® 的微管理器的 Web
浏览器中的三个插件。截至本文完稿时,最新版本的 Flash Player 是
V8。它是能够无偿得到的,大多数浏览器都附带安装了此插件。它可怜风靡並且有所优良的客户机渗透力
—— 而这种渗透力随着 YouTube 和 谷歌 Video
那类服务的产出得到了增进,那一个劳务都利用 Flash 展现录制流。

/* 上面创制按键 */

图 1. 使用 Ming 的 HelloWorld 示例
图片 1

第一版的 Flash 曾是用来创设动画图片的工具,而最新版本的 Flash
已经能够托管一个完好无缺的分界面,可用于调控 Web 服务拜会并行使
ECMAScript(JavaScript 的专门的学业版本)来提供整机的脚本扶助。

Flash Player 只是天平的一面。要发挥作用,Flash Player 还供给运用一个Flash 动画。此类动画一般是利用一种 Flash
的开采工具编写翻译的公文,其文件扩张名为.swf。但正如你就要本文中阅览的那么,还足以应用 Ming
库用差没多少与动态创制图片一样的艺术来动态营造 .swf 文件,并在 Web
服务器上绘制图形。Ming 库利用由 php
代码营造的靶子和章程在新的 .swf 文件中创设操作代码。

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;
}

回过头来查看这段代码,作者做的首先件事是创办指向贰个内置字体(_sans)的指针,然后创设文本字段,设定字体、颜色和大小,最终为其提供
一些文件内容(“Hello World”)。再接下来成立了二个 SWFMovie
对象并设定其尺寸。最后,向动画中增多了文件元素并将动画片保存到文件中。

了解 Flash

你能够通过二种办法中的大肆一种办法来查看 Web 站点中的 .swf
文件。第一种艺术只需导航到 .swf 文件的 U陆风X8L。那样做将把 Web
服务器的总体内容区域替换为 Flash
动画。此方法便于实行调治,但根本的用法依旧将动画嵌入到 HTML Web 页面包车型大巴<object> 标识中。该 <object> 标志然后再经过 UENCOREL 引用 SWF
动画。<object>
方法的长处在于你能够把动画放在页面的任意地方,并可透过 Javascrīpt
代码举办动态调控,就好像管理页面中的任何别的因素同样。

$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);

用作一向创设文件的替代性方法,也足以利用下边包车型客车代码,使 SWF
动画像页面那样输出,而没有需求选择 save 方法:

Flash Player 是融为一体到运营 Microsoft® Windows®、Mac OS X 和 Linux®
的处理器的 Web 浏览器中的二个插件。甘休本文完稿时,最新版本的 Flash
Player 是
V8。它是能够无偿获得的,大好些个浏览器都附带安装了此插件。它极其盛行况且有着优异的客户机渗透力
—— 而这种渗透力随着 YouTube 和 谷歌 Video
那类服务的出现获得了巩固,那几个服务都施用 Flash 展现摄像流。

清单 1 突显的是贰个援用 SWF 动画的 <object> 标志的演示。

/* 下边成立动画,并累加上边的暗号和开关 */

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

Flash Player 只是天平的单方面。要发挥成效,Flash Player 还要求运用叁个Flash 动画。此类动画一般是利用一种 Flash
的开拓工具编写翻译的文本,其文件扩大名字为.swf。但正如您就要本文中旁观标那样,还是能运用 Ming
库用大约与动态成立图片同样的点子来动态构建 .swf 文件,并在 Web
服务器上制图图形。Ming 库利用由 PHP 代码创设的对象和措施在新的 .swf
文件中塑造操作代码。

清单 1. 嵌入式 Flash 动画

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

此进程看似于选拔 PHP 中的 ImageMagick 库来创设位图。对于有着 Ming
示例,笔者都将应用 save 方法,但你能够依据喜好来挑选是不是利用 save 方法。

你能够由此二种方式中的自便一种格局来查阅 Web 站点中的 .swf
文件。第一种方法只需导航到 .swf 文件的 U奥迪Q5L。那样做将把 Web
服务器的一切内容区域替换为 Flash
动画。此措施便于进行调节和测验,但要害的用法还是将动画片嵌入到 HTML Web 页面包车型大巴
<object> 标记中。该 <object> 标志然后再通过 UEvoqueL 援用 SWF
动画。<object> 方法的独到之处在于你能够把动画放在页面包车型大巴随便地方,并可经过
JavaScript 代码举办动态调整,就如管理页面中的任何其余因素同样。

   
<OBJECT classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″
codebase=”
        version=6,0,40,0″
WIDTH=”550″ HEIGHT=”400″>
<PARAM NAME=”movie” VALUE=”lines.swf”>
<EMBED src=”lines.swf” WIDTH=”550″ HEIGHT=”400″
TYPE=”application/x-shockwave-flash”
PLUGINSPAGE=”;
</EMBED>
</OBJECT>

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

让文本动起来

清单 1 显示的是一个引用 SWF 动画的 <object> 标识的身体力行。

那组标识将引用三个名字为 lines.swf 的卡通。

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

只是将有个别文书归入 Flash
动画中是平素比非常少大体义的,除非你能让它动起来。因此小编整合了清单 2中的示例,它包涵两段文本:一部分始发十分的小后来变得更其大,而另一局地保险静态。

清单 1. 嵌入式 Flash 动画

/* 最终,大家把它输出到浏览器 */

清单 3. Text.php

    
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#
    version=6,0,40,0"
WIDTH="550" HEIGHT="400">
<PARAM NAME="movie" VALUE="lines.swf">
<EMBED src="lines.swf" WIDTH="550" HEIGHT="400"
TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
</EMBED>
</OBJECT>

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

    
<?php
$f = new SWFFont( '_sans' );

$pt = new SWFTextField();
$pt->setFont( $f );
$pt->setColor( 0, 0, 0 );
$pt->setHeight( 400 );
$pt->addString( '1000' );

$tt = new SWFTextField();
$tt->setFont( $f );
$tt->setColor( 192, 192, 192, 90 );
$tt->setHeight( 350 );
$tt->addString( 'Points' );

$m = new SWFMovie();
$m->setDimension( 2500, 800 );

$pts = $m->add( $pt );
$pts->moveTo( 0, 0 );

$tts = $m->add( $tt );
$tts->moveTo( 1300, 200 );

for( $i = 0; $i < 10; $i++ ) {
 $m->nextframe();
 $pts->scaleTo( 1.0 + ( $i / 10.0 ), 1.0 + ( $i / 10.0 ) );
}

$m->save( 'text.swf' );
?>

那组标志将引用三个名称叫 lines.swf 的卡通。内部的 <embed> 标志用于确保Flash 动画可以在装置了插件的各个浏览器中播放。

好了,在你的机械上运营一下看看,是否和用Flash创设的完全一样!要收获更加多的函数表达,请参谋操作手册。

在指令行中执行这段代码时,它将调换 text.swf。在 Web
浏览器中开采该文件时,笔者见到了图 2 所示的图样。

标志还把 Flash Player 的万丈和增长幅度分别钦点为 550 像素和 400
像素。特别值得注意的是,Flash
动画中的图形都以依靠矢量的,这意味当您使用 Flash
命令绘制线条和文件时,那个成分都被累积为坐标并且依照相称显示区域的比重进行缩放。如你所见,Flash
动画有友好的坐标连串,您能够坚守适合自身的主意使代码尽也许整洁。

你可能感兴趣的篇章:

  • php运转时动态创造函数的格局
  • PHP使用方式重载实现动态成立属性的get和set方法
  • PHP动态创制Web站点的主意
  • PHP动态地成立属性和议程, 对象的复制,
    对象的可比,加载钦命的文书,自动加载类文件,命名空间
  • 二个ASP创制动态目的的厂子类(类似PHP的stdClass)
  • 什么运用动态分享对象的方式来安装PHP
  • PHP通过反射动态加载第三方类和取得类源码的实例
  • PHP使用GIFEncoder类生成gif动态滚动字幕
  • PHP使用GIFEncoder类生成的GIF动态图片验证码
  • PHP
    动态随机生成验证码类代码
  • php
    动态推行带有参数的类措施
  • php使用变量动态成立类的目的用法示例

图 2. text.swf 文件
图片 2


文本 “一千” 初步时比很小,大小为 350 个点。然后利用 scaleTo()
方法使其增大为 750 个点,方法是对动画片对象使用 nextframe() 方法。

Ming

要驾驭其行事原理,必要了然一些 Flash 制作动画的办法。Flash
中的动画仿佛电影中的动画同样运行:按帧运营。子图形将按帧在动画框架中移动。二个最主要分裂是
Flash 不获取每帧的快照。它存款和储蓄子图形对象在每帧的图景。

正文中提供的施用 Flash 动画的率先种办法是运用 Ming 库动态变化它们。Ming
库是一个 PHP 库,在那之中有一组映射到 SWF
动画中的数据类型的指标:子图形、图形、文本、位图等等。作者将不钻探怎么着创设和装置
Ming,因为其操作是一定于阳台的还要并不特别轻易(请参阅
参照他事他说加以考察资料)。在本文中,笔者利用了预编写翻译的强大php_ming.dll 库用于 Windows 版本的 PHP。

您恐怕会小心到,我有四个名叫 $pt 的变量,该变量具备文本
“一千”。随后当自己把 $pt 增加到动画中时,得到了通过 add()
方法重回的名叫 $pts 的新指标。该指标是 SWFDisplayItem
表示子图形的实例。然后自个儿得以围绕动画框架的外部逐帧移动实例。
那有的混乱,但本人得以具备相同的时间活动的四个本子的 “一千” 文本子图形或
“points” 文本子图形。

总得提议的是,Ming 仍处在开采阶段。结束本文完稿时,库的本子是
V0.4,何况较老版本中的一些下令在新式版本中不能够应用。作者动用了 V0.4
撰写本文,由此,要使用这段代码,您须求利用那几个本子。