Heim Backend-Entwicklung PHP-Tutorial PHP生成Flash动画的实现代码_php技巧

PHP生成Flash动画的实现代码_php技巧

May 17, 2016 am 09:27 AM
php

其中有一组映射到 SWF 动画中的数据类型的对象:子图形、图形、文本、位图等等。在本文中,我使用了预编译的扩展 php_ming.dll 库用于 Windows 版本的 PHP。

清单 2 显示了使用 Ming 库实现的 HelloWorld 示例。


清单 2. Hello.php
				<br><?php <BR>$f = new SWFFont( '_sans' );<br><br>$t = new SWFTextField();<br>$t->setFont( $f );<br>$t->setColor( 0, 0, 0 );<br>$t->setHeight( 400 );<br>$t->addString( 'Hello World' );<br><br>$m = new SWFMovie();<br>$m->setDimension( 2500, 800 );<br>$m->add( $t );<br><br>$m->save( 'hello.swf' );<br>?><br>
Nach dem Login kopieren

在命令行中运行这段代码将生成文件 hello.swf。当我在 Web 浏览器中打开该文件时,看到了图 1 所示的结果。


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

回过头来查看这段代码,我做的第一件事是创建指向一个内置字体(_sans)的指针,然后创建文本字段,设定字体、颜色和大小,最后为其提供 一些文本内容(“Hello World”)。再接下来创建了一个 <font face="NSimsun">SWFMovie</font> 对象并设定其尺寸。最后,向动画中添加了文本元素并将动画保存到文件中。

作为直接构建文件的替代性方法,也可以使用下面的代码,使 SWF 动画像页面那样输出,而无需使用 save 方法:

header( 'Content-type: application/x-shockwave-flash' );<br>$m->output( );<br>
Nach dem Login kopieren

此过程类似于使用 PHP 中的 ImageMagick 库来构建位图。对于所有 Ming 示例,我都将使用 save 方法,但您可以根据喜好来选择是否使用 save 方法。

让文本动起来

只是将一些文本放入 Flash 动画中是没有多大意义的,除非您能让它动起来。因此我整合了清单 2 中的示例,它包括两段文本:一部分开始很小后来变得越来越大,而另一部分保持静态。


清单 3. Text.php
				<br><?php <BR>$f = new SWFFont( '_sans' );<br><br>$pt = new SWFTextField();<br>$pt->setFont( $f );<br>$pt->setColor( 0, 0, 0 );<br>$pt->setHeight( 400 );<br>$pt->addString( '1000' );<br><br>$tt = new SWFTextField();<br>$tt->setFont( $f );<br>$tt->setColor( 192, 192, 192, 90 );<br>$tt->setHeight( 350 );<br>$tt->addString( 'Points' );<br><br>$m = new SWFMovie();<br>$m->setDimension( 2500, 800 );<br><br>$pts = $m->add( $pt );<br>$pts->moveTo( 0, 0 );<br><br>$tts = $m->add( $tt );<br>$tts->moveTo( 1300, 200 );<br><br>for( $i = 0; $i  $m->nextframe();<br> $pts->scaleTo( 1.0 + ( $i / 10.0 ), 1.0 + ( $i / 10.0 ) );<br>}<br><br>$m->save( 'text.swf' );<br>?><br>
Nach dem Login kopieren

在命令行中执行这段代码时,它将生成 text.swf。在 Web 浏览器中打开该文件时,我看到了图 2 所示的图片。


图 2. text.swf 文件
text.swf 文件

文本 “1000” 开始时很小,大小为 350 个点。然后使用 <font face="NSimsun">scaleTo()</font> 方法使其增大为 750 个点,方法是对动画对象使用 <font face="NSimsun">nextframe()</font> 方法。

要理解其工作原理,需要了解一点 Flash 制作动画的方法。Flash 中的动画就像电影中的动画一样运行:按帧运行。子图形将按帧在动画框架中移动。一个主要差别是 Flash 不获取每帧的快照。它存储子图形对象在每帧的状态。

您可能会注意到,我有一个名为 <font face="NSimsun">$pt</font> 的变量,该变量具有文本 “1000”。随后当我把 <font face="NSimsun">$pt</font> 添加到动画中时,获得了通过 <font face="NSimsun">add()</font> 方法返回的名为 <font face="NSimsun">$pts</font> 的新对象。该对象是 <font face="NSimsun">SWFDisplayItem</font>, 表示子图形的实例。然后我可以围绕动画框架的表面逐帧移动实例。 这有点儿混乱,但我可以拥有同时移动的多个版本的 “1000” 文本子图形或 “points” 文本子图形。

绘制一些图形

接下来要处理的是矢量图形。首先仅绘制一条简单的直线,它从框架的左侧顶部到右侧底部。


清单 4. Line.php
				<br><?php <BR>$m = new SWFMovie();<br>$m->setDimension( 300, 300 );<br><br>$s = new SWFShape();<br>$s->setLine( 10, 0, 0, 0 );<br>$s->movePenTo( 10, 10 );<br>$s->drawLineTo( 290, 290 );<br>$m->add( $s );<br><br>$m->save( 'line.swf' );<br>?><br>
Nach dem Login kopieren

在命令行中运行此脚本,然后查看输出的 .swf 文件,效果如图 3 所示。


图 3. 绘制简单的直线
绘制简单的直线

好的 —— 这十分简单,也不怎么令人激动。那么我做了什么?创建了一个新的 <font face="NSimsun">SWFShape</font> 对象,然后向其中添加了一些笔触移动和直线。然后我将其作为子图形添加到了动画中。

为了让它变得更有趣,我使用了与刚才文本中使用的相同的帧式动画。但在本例中,我用下面所示的代码使这条直线围绕动画的中心旋转。


清单 5. 旋转直线
				<br><?php <BR>$m = new SWFMovie();<br>$m->setDimension( 300, 300 );<br><br>$s = new SWFShape();<br>$s->setLine( 5, 0, 0, 0 );<br>$s->movePenTo( -100, -100 );<br>$s->drawLineTo( 100, 100 );<br>$ts = $m->add( $s );<br><br>$ts->moveTo( 150, 150 );<br><br>for( $i = 0; $i  $ts->rotate( 10 );<br> $m->nextframe();<br>}<br><br>$m->save( 'rotate.swf' );<br>?><br>
Nach dem Login kopieren

在本例中,我从 -100, -100 到 100, 100 画了一条直线。这将把直线的中心放在坐标 0,0 处。这样,当我在旋转图形时,直线的中心将发生旋转。

当我向动画中添加图形时,将移动返回到框架中心的 <font face="NSimsun">SWFDisplayItem</font>。然后用 <font face="NSimsun">rotate()</font> 方法使它旋转并每旋转一周就增大其框架。

使用图片

文本和诸如直线、圆、弧、曲线和矩形之类的简单矢量图形都是十分优秀的,但在理想的情况下,您必须能访问这些 Flash 动画中的图片。值得庆幸的是,Ming 库使您可以轻松的使用图片,如下所示。


清单 6. 使用图片
				<br><?php <BR>$img = new SWFBitmap( file_get_contents( 'megan.jpg' ) );<br><br>$s = new SWFShape();<br>$imgf = $s->addFill( $img );<br>$s->setRightFill( $imgf );<br>$s->movePenTo( 0, 0 );<br>$s->drawLineTo( $img->getWidth(), 0 );<br>$s->drawLineTo( $img->getWidth(), $img->getHeight() );<br>$s->drawLineTo( 0, $img->getHeight() );<br>$s->drawLineTo( 0, 0 );<br><br>$m = new SWFMovie();<br>$m->setDimension( $img->getWidth() * 2, $img->getHeight() * 2 );<br>$is = $m->add( $s );<br>$is->moveTo( $img->getWidth() / 2, $img->getHeight() / 2 );<br><br>for( $i = 0; $i { <br>$is->skewx( 0.02 );<br>$is->skewy( -0.03 );<br>$m->nextframe();<br>}<br><br>$m->save( 'image.swf' );<br>?><br>
Nach dem Login kopieren

在命令行中运行此脚本并在浏览器中查看 image.swf,结果如图 4 所示。


图 4. 生成的图片动画
生成的图片动画

此脚本在开始时读取了本地的 .jpeg 文件(在本例中,是我女儿 Megan 的照片)。然后创建一个矩形,并在其中填充图片。在那之后,它在10 帧处使用了位移效果使图片稍微移动。

继续移动

我只是触及了 Ming 库可为您提供的操作的表面。在这里我没有展示交互部分,在交互部分您可以将简单的脚本与元素连接起来。(但是,如果换成是交互操作,如果您有一个十分复杂 的 Flash 动画,则可能需要考虑使用 Flash 开发工具来构建 Web 应用程序内与 Web 服务对话的 Flash 动画。)

构建更加复杂的 Flash 动画的另外一种选择是使用诸如 Adobe Flex 或 Laszlo 之类的制作工具,这两种工具都提供了用于为 Flash 动画的用户界面布局的 XML 语法以及一个更轻松地例程,可用于开发为界面提供互动操作的 JavaScript。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles