cakephp中插入flash
CakePHP 当前版 本:1.2.0.7962 Final
swfObject 当 前版本:2.1
具体步骤如下:
- 下载swfObject,把swfobject.js放到 /webroot/js 目录下
- 将下面代码保存到 /views/helpers/flash.php
/**
* @author Alexander Morland
* @license MIT
* @version 1.2
* @modified 19. nov. 2008
*/
class
FlashHelper extends
AppHelper {
var
$helpers
=
array
(
'Javascript'
)
;
/**
* Used for remembering options from init() to each renderSwf
*
* @var array
*/
var
$options
=
array
(
'width'
=>
500
,
'height'
=>
500
)
;
/**
* Used by renderSwf to set a flash version requirement
*
* @var string
*/
var
$defaultVersionRequirement
=
'9.0.0'
;
/**
* Used by renderSwf to only call init if it hasnt been done, either
* manually or automatically by a former renderSwf()
*
* @var boolean
*/
var
$initialized
=
false
;
/**
* Optional initializing for setting default parameters and also includes the
* swf library. Should be called once, but if using several groups of flashes,
* MAY be called several times, once before each group.
*
* @example echo $flash->init();
* @example $flash->init(array('width'=>200,'height'=>100);
* @return mixed String if it was not able to add the script to the view, true if it was
*/
function
init(
$options
=
array
(
)
)
{
if
(
!
empty
(
$options
)
)
{
$this
->
options
=
am(
$this
->
options
,
$options
)
;
}
$this
->
initialized
=
true
;
$view
=&
ClassRegistry::
getObject
(
'view'
)
;
if
(
is_object
(
$view
)
)
{
$view
->
addScript
(
$this
->
Javascript
->
link
(
'swfobject'
)
)
;
return
true
;
}
else
{
return
$this
->
Javascript
->
link
(
'swfobject'
)
;
}
}
/**
* Wrapper for the SwfObject::embedSWF method in the vendor. This method will write a javascript code
* block that calls that javascript method. If given a dom id as fourth parameter the flash will
* replace that dom object. If false is given, a div will be placed at the point in the
* page that this method is echo'ed. The last parameter is mainly used for sending in extra settings to
* the embedding code, like parameters and attributes. It may also send in flashvars to the flash.
*
* For doucumentation on what options can be sent, look here:
* http://code.google.com/p/swfobject/wiki/documentation
*
* @example echo $flash->renderSwf('counter.swf'); // size set with init();
* @example echo $flash->renderSwf('flash/ad.swf',100,20);
* @example echo $flash->renderSwf('swf/banner.swf',800,200,'banner_ad',array('params'=>array('wmode'=>'opaque')));
* @param string $swfFile Filename (with paths relative to webroot)
* @param int $width if null, will use width set by FlashHelper::init()
* @param int $height if null, will use height set by FlashHelper::init()
* @param mixed $divDomId false or string : dom id
* @param array $options array('flashvars'=>array(),'params'=>array('wmode'=>'opaque'),'attributes'=>array());
* See SwfObject documentation for valid options
* @return string
*/
function
renderSwf(
$swfFile
,
$width
=
null
,
$height
=
null
,
$divDomId
=
false
,
$options
=
array
(
)
)
{
$options
=
am (
$this
->
options
,
$options
)
;
if
(
is_null
(
$width
)
)
{
$width
=
$options
[
'width'
]
;
}
if
(
is_null
(
$height
)
)
{
$height
=
$options
[
'height'
]
;
}
$ret
=
''
;
if
(
!
$this
->
initialized
)
{
$init
=
$this
->
init
(
$options
)
;
if
(
is_string
(
$init
)
)
{
$ret
=
$init
;
}
$this
->
initialized
=
TRUE
;
}
$flashvars
=
'{}'
;
$params
=
'{wmode : "opaque"}'
;
$attributes
=
'{}'
;
if
(
isset
(
$options
[
'flashvars'
]
)
)
{
$flashvars
=
$this
->
Javascript
->
object
(
$options
[
'flashvars'
]
)
;
}
if
(
isset
(
$options
[
'params'
]
)
)
{
$params
=
$this
->
Javascript
->
object
(
$options
[
'params'
]
)
;
}
if
(
isset
(
$options
[
'attributes'
]
)
)
{
$attributes
=
$this
->
Javascript
->
object
(
$options
[
'attributes'
]
)
;
}
if
(
$divDomId
===
false
)
{
$divDomId
=
uniqid
(
'c_'
)
;
$ret
.=
'<div id="'
.
$divDomId
.
'"></div>'
;
}
if
(
isset
(
$options
[
'version'
]
)
)
{
$version
=
$options
[
'version'
]
;
}
else
{
$version
=
$this
->
defaultVersionRequirement
;
}
if
(
isset
(
$options
[
'install'
]
)
)
{
$install
=
$options
[
'install'
]
;
}
else
{
$install
=
''
;
}
$swfLocation
=
$this
->
webroot
.
$swfFile
;
$ret
.=
$this
->
Javascript
->
codeBlock
(
'swfobject.embedSWF("'
.
$swfLocation
.
'", "'
.
$divDomId
.
'", "'
.
$width
.
'", "'
.
$height
.
'", "'
.
$version
.
'","'
.
$install
.
'", '
.
$flashvars
.
', '
.
$params
.
', '
.
$attributes
.
');'
)
;
return
$ret
;
}
|
使用方法:
- 例一:
echo
$flash
->
renderSwf
(
'test.swf'
,
400
,
200
,
'flashy'
)
;
echo
'<div id="flashy">没有安装flash插件</div>'
;
|
- 例二:
$flash
->
init
(
array
(
'width'
=>
200
,
'height'
=>
100
)
)
;<
br />
echo
$flash
->
renderSwf
(
'test1.swf'
)
;<
br />
echo
$flash
->
renderSwf
(
'test2swf'
)
;
|
- 例三:
echo
$flash
->
renderSwf
(
'flashfiles/fl_countdown_v3_3.swf?mo=1&da=24&snd=off&co=AA3333'
,
800
,
250
,
false
,
array
(
'params'
=>
array
(
'movie'
=>
'?mo=1&da=24&snd=off&co=AA3333'
)
)
)
;
|
参考:FlashHelper – a wrapper for the SwfObject js class
原文:http://junnan.org/blog/?p=297