在編寫網(wǎng)頁時,常常需要使用動畫效果來吸引用戶的注意力。而Ming庫就是PHP提供的一個非常強大的工具,能夠讓我們在網(wǎng)頁中加入Flash動畫,使頁面更加生動有趣。
舉個例子,我們可以用Ming庫來創(chuàng)建一個簡單的動畫,如下所示:
$m = new SWFMovie(); $m->setDimension(320, 240); $m->setBackground(0xff, 0xff, 0xff); $f = $m->add($m->newShape()); $f->setLine(20, 0xff, 0, 0); $f->drawLine(40, 0, 100, 0); $f->movePenTo(160, 120); $f->drawLine(40, 0, 100, 0); $m->nextFrame(); header('Content-type: application/x-shockwave-flash'); $m->output();
上面代碼中,首先創(chuàng)建了一個SWFMovie對象。我們設(shè)置了寬為320px、高為240px,背景顏色為白色。然后我們用add()方法向該對象添加一個形狀(Shape),設(shè)置線條的粗細(xì)為20像素,顏色為紅色,并且用drawLine()方法畫出一條長度為40像素的水平直線。接著,我們用movePenTo()方法將畫筆移動到(160, 120)的位置,然后再用drawLine()方法畫出另一條長度為40像素的水平直線。最后,就是使用SWFMovie的output()方法將動畫輸出到瀏覽器中。
通過Ming庫,我們還可以創(chuàng)建復(fù)雜的動畫,如下所示:
# 創(chuàng)建SWFMovie對象,設(shè)置寬高和幀率 $m = new SWFMovie(); $m->setDimension(300, 300); $m->setRate(20); # 創(chuàng)建形狀,設(shè)置填充顏色和線條顏色 $s = $m->add(new SWFShape()); $s->setRightFill($s->addFill(0xff, 0xff, 0xff)); $s->setLine(1, 0, 0, 0); # 繪制兩個圓 $f = $s->addFill(0xff, 0, 0); $s->setRightFill($f); $s->movePenTo(100, 150); $s->drawCircle(50); $f2 = $s->addFill(0, 0, 0xff); $s->setRightFill($f2); $s->movePenTo(200, 150); $s->drawCircle(50); # 創(chuàng)建縮放動畫 $t = $m->add(new SWFSprite()); $t->add($s); $t->nextFrame(); $t->add(new SWFAction("this.scaleTo(2);")); $t->nextFrame(); $t->add(new SWFAction("this.scaleTo(.5);")); $t->nextFrame(); # 輸出動畫 header("Content-type: application/x-shockwave-flash"); $m->output();
上面的代碼中,我們首先創(chuàng)建了一個SWFMovie對象,設(shè)置寬高分別為300px,幀率為20。然后我們又用add()方法向該對象中添加了一個形狀(SWFShape),并設(shè)置了填充顏色、線條顏色和線條寬度。接著,我們用addFill()方法添加兩個顏色分別為紅色和藍(lán)色的填充,并用movePenTo()方法將畫筆移動到畫布的(100,150)和(200,150)兩個位置處,然后分別用drawCircle()方法繪制出兩個半徑為50的圓形。
接下來,我們創(chuàng)建了一個縮放動畫,使用SWFSprite對象來完成。SWFSprite是一個可嵌套的容器,可以包含其他SWFSprite或SWFMovie對象。在這里,我們將SWFSprite添加到SWFMovie中,并將前面創(chuàng)建的形狀添加到SWFSprite中。然后,我們用nextFrame()方法切換到下一幀,再使用SWFAction對象添加兩個動作:縮小一倍和擴大兩倍。最后再次用nextFrame()方法切換到下一幀,并輸出動畫到瀏覽器中。
Ming庫不僅支持SWFMovie、SWFShape和SWFSprite,還支持許多其他類型的對象和方法,如:字體、文本、位圖、動作等。使用Ming庫,你可以創(chuàng)建出非常豐富的動畫效果來,它絕對是一個非常優(yōu)秀的工具。