为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

使用 PHP 快速生成 Flash 动画

2020-03-08 8页 doc 25KB 3阅读

用户头像

is_589748

暂无简介

举报
使用 PHP 快速生成 Flash 动画使用PHP 快速生成Flash 动画 Rich Internet Application 是Web 2.0 中的新时髦词,并且就Web 2.0 的实质而言,一个关键组件就是Adobe Flash。了解如何将Flash 动画集成到应用程序中,并使用Ming 库动态生成Flash 动画。 Web 2.0 引入了Rich Internet Application。但Rich Internet Application 的含义是什么?通常,它意味着向应用程序中添加具有高度响应能力的交易操作。具体来说,它意味着可以即时更改页面中的小...
使用 PHP 快速生成 Flash 动画
使用PHP 快速生成Flash 动画 Rich Internet Application 是Web 2.0 中的新时髦词,并且就Web 2.0 的实质而言,一个关键组件就是Adobe Flash。了解如何将Flash 动画集成到应用程序中,并使用Ming 库动态生成Flash 动画。 Web 2.0 引入了Rich Internet Application。但Rich Internet Application 的含义是什么?通常,它意味着向应用程序中添加具有高度响应能力的交易操作。具体来说,它意味着可以即时更改页面中的小部件、Web 表单和报告,而无需从服务器中检索新页面。 一种用于构建Rich Internet Application(RIA)的方法就是使用动态HTML(Dynamic HTML, DHTML),它是Ajax、JavaScript、层叠样式表(Cascading Style Sheet,CSS)和HTML 的组合(请参阅参考资料)。但是DHTML 并不是向Web 应用程序中添加互动操作的惟一方法。另一种重要方法是使用Adobe Flash Player,使用它为Web 站点添加交互操作已经有十年的历史。 第一版的Flash 曾是用于创建动画图片的工具,而最新版本的Flash 已经可以托管一个完整的界面,可用于控制Web 服务访问并使用ECMAScript(JavaScript 的正式版本)来提供完整的脚本支持。 了解Flash Flash Player 是集成到运行Microsoft? Windows?、Mac OS X 和Linux? 的计算机的Web 浏览器中的一个插件。截至本文完稿时,最新版本的Flash Player 是V8。它是可以免费获得的,大多数浏览器都附带安装了此插件。它十分流行并且具有优秀的客户机渗透力—— 而这种渗透力随着YouTube 和Google Video 这类服务的出现得到了提高,这些服务都使用Flash 显示视频流。 Flash Player 只是天平的一端。要发挥作用,Flash Player 还需要使用一个Flash 动画。此类动画通常是使用一种Flash 的开发工具编译的文件,其文件扩展名为.swf。但正如您将在本文中看到的那样,还可以使用Ming 库用几乎与动态创建图片相同的方法来动态构建.swf 文件,并在Web 服务器上绘制图形。Ming 库利用由PHP 代码构建的对象和方法在新的.swf 文件中构建操作代码。 您可以通过两种方法中的任意一种方法来查看Web 站点中的.swf 文件。第一种方法只需导航到.swf 文件的URL。这样做将把Web 服务器的整个内容区域替换为Flash 动画。此方法便于进行调试,但主要的用法还是将动画嵌入到HTML Web 页面的 标记中。该 标记然后再通过URL 引用SWF 动画。 方法的优点在于您可以把动画放在页面的任意位置,并可通过JavaScript 代码进行动态控制,就像处理页面中的任何其他元素一样。 清单1 显示的是一个引用SWF 动画的 标记的示例。 清单1. 嵌入式Flash 动画 这组标记将引用一个名为lines.swf 的动画。内部的 标记用于确保Flash 动画 可以在安装了插件的各种浏览器中播放。 标记还把Flash Player 的高度和宽度分别指定为550 像素和400 像素。非常值得注意的是,Flash 动画中的图形都是基于矢量的,这意味着当您使用Flash 命令绘制线条和文本时,那些元素都被存储为坐标并且按照匹配显示区域的比例进行缩放。如您所见,Flash 动画有自己的坐标系统,您可以按照适合自己的方法使代码尽可能整洁。 Ming 本文中提供的使用Flash 动画的第一种方法是使用Ming 库动态生成它们。Ming 库是一个PHP 库,其中有一组映射到SWF 动画中的数据类型的对象:子图形、图形、文本、位图等等。我将不讨论如何构建和安装Ming,因为其操作是特定于平台的而且并不特别简单(请参阅参考资料)。在本文中,我使用了预编译的扩展php_ming.dll 库用于Windows 版本的PHP。 必须指出的是,Ming 仍处于开发阶段。截至本文完稿时,库的版本是V0.4,并且较老版本中的一些命令在最新版本中不能使用。我使用了V0.4 撰写本文,因此,要使用这段代码,您需要使用这个版本。 清单2 显示了使用Ming 库实现的HelloWorld 示例。 清单2. Hello.php 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' );?> 在命令行中运行这段代码将生成文件hello.swf。当我在Web 浏览器中打开该文件时,看到了图1 所示的结果。 图1. 使用Ming 的HelloWorld 示例 回过头来查看这段代码,我做的第一件事是创建指向一个内置字体(_sans)的指针,然后创建文本字段,设定字体、新濠天地娱乐城66bb.org颜色和大小,最后为其提供一些文本内容(“Hello World”)。再接下来创建了一个SWFMovie 对象并设定其尺寸。最后,向动画中添加了文本元素并将动画保存到文件中。 作为直接构建文件的替代性方法,也可以使用下面的代码,使SWF 动画像页面那样输出,而无需使用save 方法: header( 'Content-type: application/x-shockwave-flash' );$m->output( ); 此过程类似于使用PHP 中的ImageMagick 库来构建位图。对于所有Ming 示例,我都将使用save 方法,但您可以根据喜好来选择是否使用save 方法。 让文本动起来 只是将一些文本放入Flash 动画中是没有多大意义的,除非您能让它动起来。因此我整合了清单 2 中的示例,它包括两段文本:一部分开始很小后来变得越来越大,而另一部分保持静态。 清单3. Text.php 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' );?> 在命令行中执行这段代码时,它将生成text.swf。在Web 浏览器中打开该文件时,我看到了图2 所示的图片。 图2. text.swf 文件 文本“1000”开始时很小,大小为350 个点。然后使用scaleTo() 方法使其增大为750 个点,方法是对动画对象使用nextframe() 方法。 要理解其工作原理,需要了解一点Flash 制作动画的方法。Flash 中的动画就像电影中的动画一样运行:按帧运行。子图形将按帧在动画框架中移动。一个主要差别是Flash 不获取每帧的快照。它存储子图形对象在每帧的状态。 您可能会注意到,我有一个名为$pt 的变量,该变量具有文本“1000”。随后当我把$pt 添加到动画中时,获得了通过add() 方法返回的名为$pts 的新对象。该对象是SWFDisplayItem,表示子图形的实例。然后我可以围绕动画框架的表面逐帧移动实例。这有点儿混乱,但我可以拥有同时移动的多个版本的“1000”文本子图形或“points”文本子图形。 绘制一些图形 接下来要处理的是矢量图形。首先仅绘制一条简单的直线,它从框架的左侧顶部到右侧底部。 清单4. Line.php setDimension( 300, 300 );$s = new SWFShape();$s->setLine( 10, 0, 0, 0 );$s->movePenTo( 10, 10 );$s->drawLineTo( 290, 290 );$m->add( $s );$m->save( 'line.swf' );?> 在命令行中运行此脚本,然后查看输出的.swf 文件,效果如图3 所示。 图3. 绘制简单的直线 好的—— 这十分简单,也不怎么令人激动。那么我做了什么?创建了一个新的SWFShape 对象,然后向其中添加了一些笔触移动和直线。然后我将其作为子图形添加到了动画中。 为了让它变得更有趣,我使用了与刚才文本中使用的相同的帧式动画。但在本例中,我用下面所示的代码使这条直线围绕动画的中心旋转。 清单5. 旋转直线 setDimension( 300, 300 );$s = new SWFShape();$s->setLine( 5, 0, 0, 0 );$s->movePenTo( -100, -100 );$s->drawLineTo( 100, 100 );$ts = $m->add( $s );$ts->moveTo( 150, 150 );for( $i = 0; $i < 100; $i++ ) { $ts->rotate( 10 ); $m->nextframe();}$m->save( 'rotate.swf' );?> 在本例中,我从-100, -100 到100, 100 画了一条直线。这将把直线的中心放在坐标0,0 处。这样,当我在旋转图形时,直线的中心将发生旋转。 当我向动画中添加图形时,公司排名008km.org将移动返回到框架中心的SWFDisplayItem。然后用rotate() 方法使它旋转并每旋转一周就增大其框架。 使用图片 文本和诸如直线、圆、弧、曲线和矩形之类的简单矢量图形都是十分优秀的,但在理想的情况下,您必须能访问这些Flash 动画中的图片。值得庆幸的是,Ming 库使您可以轻松的使用图片,如下所示。 清单6. 使用图片 addFill( $img );$s->setRightFill( $imgf );$s->movePenTo( 0, 0 );$s->drawLineTo( $img->getWidth(), 0 );$s->drawLineTo( $img->getWidth(), $img->getHeight() );$s->drawLineTo( 0, $img->getHeight() );$s->drawLineTo( 0, 0 );$m = new SWFMovie();$m->setDimension( $img->getWidth() * 2, $img->getHeight() * 2 );$is = $m->add( $s );$is->moveTo( $img->getWidth() / 2, $img->getHeight() / 2 );for( $i = 0; $i < 10; $i++ ) { $is->skewx( 0.02 );$is->skewy( -0.03 );$m->nextframe();}$m->save( 'image.swf' );?> 在命令行中运行此脚本并在浏览器中查看image.swf,结果如图 4 所示。 图4. 生成的图片动画 此脚本在开始时读取了本地的.jpeg 文件(在本例中,是我女儿Megan 的照片)。然后创建一个矩形,并在其中填充图片。在那之后,它在10 帧处使用了位移效果使图片稍微移动。 继续移动 我只是触及了Ming 库可为您提供的操作的表面。在这里我没有展示交互部分,在交互部分您可以将简单的脚本与元素连接起来。(但是,如果换成是交互操作,如果您有一个十分复杂的Flash 动画,则可能需要考虑使用Flash 开发工具来构建Web 应用程序内与Web 服务对话的Flash 动画。) 构建更加复杂的Flash 动画的另外一种选择是使用诸如Adobe Flex 或Laszlo 之类的制作工具,这两种工具都提供了用于为Flash 动画的用户界面布局的XML 语法以及一个更轻松地例程,okooo澳客网e505.org可用于开发为界面提供互动操作的JavaScript。 XML Chart 和XML Gauge 给我留下深刻印象的两个Flash SWF 是XML Chart 和XML Gauge,可在maani.us 获得(请参阅参考资料)。使用动画就可以轻松地为Web 站点提供动态的规格和图形,您只需在PHP 应用程序中创建XML 页面。 第一步是从站点下载SWF。然后将其嵌入到Web 页面的 标记中并将URL 提供给XML 数据摘要。制作一个PHP 页面按照控制所需的格式导出XML。这些动画的XML 格式在站点中得到了详细说明并且非常易于创建。 结束语 Flash 带来了一种机会,使您可轻松将大量交互操作添加到Web 应用程序。就像一些小部件样式的控件一样,从微不足道开始,变得越来越流行。XML Chart 和XML Gauge 提供了机会让您在投入大量时间了解Ming、Flex 或Laszlo 之前先尝试使用这些类型的Flash 小部件。无论如何,值得花时间去了解Flash 及其功能来扩展Web 2.0 PHP 应用程序的功能及交互操作。
/
本文档为【使用 PHP 快速生成 Flash 动画】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索