Учебник по основам PHP. PHPBeginner

       

Shockwave Flash


PHP позволяет создавать файлы Shockwave Flash посредством библиотеки (созданной Paul Haeberli) Libswf, которую можно загрузить с http://reality.sgi.com/grafica/flash/. Прикомпилировать libswf к РНР можно параметром --w1th-swf[=

OIR],где DIR — место размещения каталогов include (содержит файл swf.h) и lib (содержит файл libswf.a). <

/FONT>

Следующий пример демонстрирует создание Flash-анимации:

<?php swf_openfile ("test.swf". 256. 256. 30. 1, 1. 1

. swf_ortho2 (-100. 100. -100. 100): swfjJefinelme

(1. -70. 0. 70. 0. .2). swfjiefinerect (4. 60. -10. 70. 0. 0).

swfjtefinerect (5. -60. 0. -70. 10. 0):

sv,f_addcolor (0. 0. 0. 0):

swfjjefinefont (10. "Mod"): swf_fontsize (5):

swfjfontslant (10).

swf_definetext (11. "This be Flash wit PHP!". 1):

swf_pushmatnx (): swf_translate



(-50. 80. 0). swf_placeobject (11. 60). swf_popmatrix ():

for ($1 0; $1 < 30: $i++) { p $p =

$i/(30-l):

svrf_pushmatnx (): m

swf_scale (l-($p*.9). 1. 1). 1

swf_rotate (60*$p. 'z'):

swf_translate (20+20*$p. Sp/1 5. 0):

swf_rotate (270*$p. 'i );

swf_addcolor ($p. 0. $p/l,2. -$p);

swf_placeobject (1. 50);

swf_placeobject (4. 50).

swf_p1aceobject (5. 50).

swfjpopmatnx (): swf_showframe (): }

for ($1 = 0: $1 < 30: $т++)

{ swfj-emoveobject (50): if {($i*4) == 0) { swf_showframe (): } }

swf_startdoactiof():

swf_actionstop (): swf_enddoaction():

swf_closeflle() ?>

Просмотреть результат исполнения сценария можно но адресу:

http:// www.designmultimedia.com/swfphp/test.swf.

libswf не поддерживается Windows. Разработка библиотеки была прекращена, а исходные коды недоступны.

swf_openfile

Открытие нового файла Shockwave Flash

void swf_openfile (string filename, float width, float height, float framerate, float r, float g, float b)

Создает файл filename с анимацией (шириной width, высотой height, частотой кадров framerate и цветом фона R.G.B).

Данная функция должна вызываться первой, иначе в сценарии возникнет ошибка «segfault». Если необходимо непосредственно отсылать файл браузеру, можно задать его имя как php://stdout.


swf_closefile

Закрытие текущего файла Shockwave Flash

void swf_cl osef "Л е ([int return_file])

Закрывает файл, открытый функцией swf_openfile(). При установке аргумента return_file функция возвращает содержимое SWF-файла.

// создает flash й'айл: выводит его и сохраняет в БД <?php

// Stext - аргумент сценария

// Параметры БД (для swf_savedata()) SDBHOST

"localhcst": SOBUSER = "иьег"; $DBPASS "secret1.

swf_openfile ("php //stdout". 256. 256. 30. 1. 1, i):

swf_def,nefont (10. "Ligon-Bold"): swfjon'size (12):

swf_fon.blant (10)

swf_definetext (11. $text. 1):

swf_pushmatnx ():

swf_translate (-50. 80. 0)

swf_placeobject (11. 60). swf_popmatnx ();

swf_showframe ():

swf_startdoaction (). swf_actiOPStop ():

swf_enddoaction ():

Sdata =

swf_closefile (1):

Sdata ?swf_savedata (Sdata) :

die ("Невозможно сохранить SWF файл"):

// сохранить файл в БД function swf_savedata ($data) {

global SD6HOST. SDBUSER. SDBPASS:

Sdbh = (amysql_connect

(SDBHOST. SDBUSER. SDBPASS):

if (!$dbh) { die (spnntf ("Error [Id]: us".

mysql_errno (). mysql_error(): }

Sstmt = "INSERT INTO swf_files

(file) VALUES f'$data')":

$sth - @mysql_query (Sstmt. Sdbh): if (!Ssth) {

die (sorintf ("Error [ВД: *s".

mysql_errno (). mysql_error ())); }

?mysql_free_result (Ssth);

(amysql_clo^e (Sdbh). } >

swf_labelframe

Пометка текущего кадра

void swf_labelframe (string name)

swf_showframe

Отображение текущего кадра

void swf_showframe (void);

swf_setframe

Переключение кадра

void swf_setframe (int framenumber)

swf_getframe

Получение номера текущего кадра

int swf_getframe (void);

swf_mulcolor

Установка множителя цвета RGBA

void swfjnul col or (float r, float g, float b, float a)

Функция устанавливает значения (они могут быть положительными или отрицательными), на которые будут умножаться цвета выводимых объектов. Этот цвет затем (косвенно) используется функциями swf_placeobject(), swfjnodifyobject() и swf_addbuttonrecord().



swf_addcolor

Установка слагаемого цвета RGBA

void swf_addco1or ( float г, float g, float b, float a)

Функция устанавливает значения (они могут быть положительными или отрицательными), которые будут добавляться к цвету выводимых объектов. Этот цвет затем (косвенно) используется функциями swf_placeobject(), swfjnodifyobject() и swf_addbuttonrecord().

swf_placeobject

Размещение объекта в текущем кадре

void swf_placeobject (int objid, int depth)

Размещает объект objid на уровне depth. Аргументы могут иметь значения от 1 до 65 535. При этом используются текущие: множитель и слагаемое цвета (swfjnulcolor() и swf_addcolor()) и матрица позиционирования объекта.

Полностью поддерживаются цвета RGBA.

swf_modifyobject

Изменение объекта

void swfjnodifyobject (int depth, int how)

Изменяет объект, расположенный на уровне depth, согласно аргументу how: если он имеет значение MOD_MATRIX, то изменяется положение объекта; если MOD_COLOR, то изменяется цвет. Эти константы можно комбинировать (MOD_MATR1X|MOD_COLOR).

MOD_COLOR использует текущие множитель и слагаемое цвета (swf_ mulcolor() и swf_addcolor()), a MOD_MATRIX — матрицу позиционирования объекта.

swf_removeobject

Удаление объекта

void swf_removeobject (int depth)

Удаляет объект, расположенный на уровне depth.

swf_nextid

Получение идентификатора следующего свободного объекта

int swfjiextid (void);

swf_startdoaction

Начало описания списка действий текущего кадра

void swf_startdoaction (void);

Функцию следует вызывать после завершения определения действий.

swf_actiongotoframe

Проигрывание кадра и остановка

void swf_actiongotoframe (int framenumber)

swf_actiongeturl

Получение URL анимации Shockwave Flash

void swf_actiongetur1 (string url, string target)

swf_actionnextframe

Перемещение вперед на один кадр

void swf_actionnextframe (void);

swf_actionprevframe

Перемещение назад на один кадр

void swf_actionprevframe (void);

swf_actionplay

Начало проигрывания анимации с текущего кадра

void swf_actionplay (void)



swf_actionstop

Остановка flash-анимации текущего кадра

void swf_actionstop (void);

swf_actiontogglequality

Переключение между высоким/низким качеством

void swf_actiontogglequality (void);

swf_actionwaitforframe

Пропуск действия, если кадр не был загружен

void swf_actionwaitforframe (int framenumber, int skipcount)

Функция проверяет видимость кадра framenumber и, если он не был загружен, пропускает указанное число действий skipcount. Полезно для анимаций типа "Loading...".

swf_actionsettarget

Установка контекста всех действий

void swf actionsettarget (string target)

Используется для управления другими flash-анимациями, проигрываемыми в текущий: момент.

swf_actiongotolabel

Отображение кадра с указанной меткой

void swf_actiongotolabel (string label)

После отображения проигрывание останавливается.

swf_enddoaction

Завершение текущего действия I void swf_enddoaction (void). Завершает текущее действие, начатое функцией swf_startdoaction().

swf_defineline

Создание линии

void swf_defineline (int objid, float xl, float yl, float x2, float y2. float width)

Рисует линию ((xl, yl) - (x2, y2)) шириной width.

swf_definerect

Создание прямоугольника

void swf_definerect (int objid, float xl. float yl, float x2, "float y2, float width)

Верхний левый угол задается (xl, yl), левый нижний (х2, у2). Ширина задается width (если она равна 0.0, прямоугольник будет закрашен).

swf_definepoly

Создание многоугольника

void swfjdefinepoly (int objid, array coords, int npoints, float width)

Углы задаются координатами (х, у) в массиве coords. Число углов — npoints. Ширина задастся width (если она равна 0.0, многоугольник будет закрашен).

swf_startshape

Начало создания сложной фигуры

void swf_startshape (int objid)

swf_shapelinesolid

Установка текущего стиля линии

void swf_shapelinesolid (float г, float g, float b, float a, float width)

Задаются параметры цвета rgba и ширина width (если указывается ширина 0.0, то линии рисоваться не будут).



swf_shapefilloff

Выключение заполнения текущей фигуры

void swf_shapefilloff (void);

swf _shapefillsolid

Установка стиля и цвета заполнения

void swf_shapefillsolid ( float г, float g, float b, float a)

Устанавливает 100 % стиль заполнения цветом

swf_shapefillbitmapclip

Установка заполнения усеченной текстурой рисунка

void swf_shapefillbitmapclip (int bitmapid)

swf_shapefillbitmaptile

Установка заполнения размноженной текстурой рисунка

void swf_shapefillbitmaptile (int bitmapid)

swf_shapemoveto

Перемещение текущей позиции

void swf_shapemoveto (float x, float y)

swf_shapelineto

Черчение линии

void swf_shapelineto (float x, float y)

Чертит линию от текущей позиции до указанной.

swf_shapecurveto

Рисование квадратической кривой Безье

void swf_shapecurveto (float xl, float yl. float x2, float y2)

Чертит кривую от точки (xl, yl) до точки (х2, у2). Текущая позиция затем устанавливается в точке (х2, у2).

swf_shapecurveto3

Рисование кубической кривой Безье

3void swf_shapecurveto3 (float xl. float yl, float x2. float y2. float x3, float y3)

Чертит кривую, используя точки (xl, yl) и (х2, у2) как внешне ориентирующие, а точку (хЗ, уЗ) — как конечную. Текущая позиция затем устанавливается в точке (хЗ, уЗ).

swf_shapearc

Рисование дуги

void swf_shapearc (float x, float у, float г, float angl, float ang2)

Начальный и конечный угол дуги задается angl и ang2; центр — (х,у); радиус - г.

swf_endshape

Завершение определения текущей фигуры

void swf_endshape (void);

swf_definefont

Определение шрифта

void swf_definefont (int fontid, string fontname)

Задает шрифт fontname в качестве текущего и присваивает ему идентификатор fontid.

swf_setfont

Смена текущего шрифта

void swf_setfont (int fontid)

swHontsize

Смена размера текущего шрифта

void swf_fontsize (float size)

swHontslant

Установка наклона текущего шрифта

void swf_fontslant (float slant)

Угол задается значением slant (положительное значение создает наклон вперед, отрицательное — назад).



swf_fonttracking

Установка интервала между буквами

void swf_fonttracking (float tracking)

Положительное значение увеличивает, а отрицательное — уменьшает интервал.

swf_getfontinfo

Получение информации о высоте букв

array swf_getfontinfo (void);

Возвращает ассоциативный массив из двух элементов:

  • Aheight — высота в пикселах заглавной буквы А;


  • xheight — высота в пикселах маленькой буквы х.


  • swf_definetext

    Создание строки текста

    void swfjlefinetext (int objid. string str, int docenter)

    Строка текста str создается с использованием текущего шрифта и его размера. Если в значении аргумента docenter указывается 1, то текст центрируется по горизонтали.

    swf_textwidth

    Расчет ширины строки

    float swf_textwidth (string str)

    Расчет использует размеры текущего шрифта.

    swf_definebitmap

    Определение рисунка

    void swf_definebitmap (int objid, string image_name)

    Добавляет рисунок GIF, JPEG, RGB или FI (он автоматически конвертируется в формат Flash JPEG или Flash color map).

    swf_getbitmapinfo

    Получение информации о рисунке

    array swf_getbitmapinfo (int bitmapid)

    Возвращает массив с информацией о рисунке bitmapid, содержащий элементы:

  • «size» — размер рисунка в байтах;


  • «width» — ширина рисунка в пикселах;


  • «height» — высота рисунка в пикселах.


  • swf_startsymbol

    Определение символа

    void swf_startsymbol (int objid)

    Превращает объект в символ. Символы — это микроанимации flash, которые могут проигрываться одновременно.

    swf_endsymbol

    Завершение определения символа

    void swf_endsymbol (void);

    Завершает определение символа, начатое функцией swf_startsymbo1().

    swf_ startbutton

    Начало определения кнопки

    void swf_startbutton (int objid. int type)

    Аргументом type задается, может ли фокус перемещаться без нажатия на кнопку мышью (TYPE_MENUBUTTON) или нет (TYPE_PUSHBUTTON).

    swf_addbuttonrecord

    Управление расположением, видом и активной областью текущей кнопки void swf_addbuttonrecord (int states, int shapeid, int depth)

    Аргументом states определяется, какие состояния может принимать кнопка: BSHitTest, BSDown. BSOver, BSUp; аргументом shapeid определяется внешний вид кнопки (идентификатор объекта), a depth -уровень расположения кнопки.



    swf_startButton ($objid. TYPEJCNUBUTTON):
    swf_addButtonRecord (BSDown|BSOver. Sbuttonlmageld. 340).
    swf_onCondition (MenuEnt?r).
    swf_actionGetUrl ("http-//www desTgnmultimed-a.com". "Jevell"):
    swf onCondltion (MenuExH):
    swf_actTonGetUrl ("". "_levell"); swf_endButton ();

    swf_oncondition

    Назначение события

    void swf_oncondition (int transition)

    Для кнопок TYPE_MENUBUTTON возможны параметры:

  • IdletoOverUp;


  • OverUptoIdle;


  • OverllptoOverDown;


  • OverDowntoOverUp;


  • IdletoOverDown;


  • OutDowntoIdle;


  • MenuEnter (Id!etoOverl)p| IdletoOverDown):


  • MenuExit (OverUptoIdlejOverDowntoIdle).


  • Для кнопок TYPE_PUSHBUTTON возможны параметры:

  • IdletoOverllp;


  • OverUptoIdle;


  • OverUptoOverDown;


  • OverDowntoOverUp;


  • OverDowntoOutDown;


  • OutDowntoOverDown;


  • OutDowntoIdle;


  • ButtonEnter (IdletoOverUp|OutDowntoOverDown);


  • ButtonExit (OverUptoIdle]OverDowntoOutDown).


  • swf_endbutton

    Завершение определения текущей кнопки

    void swf_endbutton (void);

    swf_viewport

    Выбор области для.последующего рисования

    void swf_viewport (double xmin. double xmax. double ymin, double ymax)

    swf_ortho

    Выбор объемной системы координат текущей области рисования

    void swf_ortho (double xmin. double xmax. double ymin, double ymax. double zmin. double zmax)

    swf_ortho2

    Выбор плоской системы координат текущей области рисования

    2void swf_ortho2 (double xmin, double xmax, double ymin. double ymax)

    Для преобразований перспективы может использоваться функция swf_ perspective().

    swf_perspective

    Определение трансформации перспективы проекции

    void swf_perspective (double fovy. double aspect, double near, double far)

    Аргумент fovy задает угол зрения по отношению к оси у, aspect — масштаб текущей области рисования. Аргументы near,far определяют границы проекции — ближнюю и дальнюю. Поскольку flash-проигрыватели имеют только двумерную матрицу, возможны искажения проецирования.

    swf_polarview

    Установка позиции наблюдения в полярных координатах

    void swf_polarview(double dist, double azimuth, double Incidence, double twist)



    dist задает расстояние от наблюдателя до начала системы координат; azimuth — угол азимута в плоскости х,у, измеренный от оси у; incidence — угол обзора в плоскости y,z, измеренный относительно оси z; twist — вращение видимой области относительно линии наблюдения (по правилу правой руки).

    swf_lookat

    Установка трансформации наблюдения

    void swfjookat (double view_x, double view_y. double view_z, double reference_x, double reference_y, double reference_z, double twist)

    Аргументами view_x, view_y, view_z задается позиция наблюдения; reference_x, reference_y, reference_z указывают наблюдаемую точку; a twi st — угол поворота наблюдения относительно оси z.

    swf_pushmatrix

    Занесение текущей матрицы трансформации в стек

    void swf_pushmatrix (void);

    swf_popmatrix

    Извлечение матрицы трансформации из стека

    void swf_popmatrix (void);

    swf_scale

    Масштабирование текущей трансформации

    void swf_scale (double x. double y, double z)

    Масштабные коэффициенты задаются аргументами х, у, z.

    swf_trnslate

    Транслирование текущей трансформации

    void swf_translate (double x, double y, double z)

    swf_rotate

    Поворот текущей трансформации

    void swf_rotate (double angle, string axis)

    Угол поворота angle задается относительно оси axis. Допустимые значения axis: "x", "у" и "z".

    swf_posround

    Разрешение или запрет округления координат объектов

    void swf_posround (int round)

    Значение 1 разрешает, а 0 запрещает округление.


    Содержание раздела