在CakePHP中使用swfObject
cakephp中插入CakePHP当前版本:1.2.0.7962 FinalswfObject当前版本:2.1具体步骤如下:下载swfObject,把swfobject.js放到 /webroot/js目录下将下面代码保存到 /views/helpers/flash.php/*** @author Alexander Morland* @license MIT* @version 1.2* @mo
·
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' ) ; - 例三:
参考:FlashHelper – a wrapper for the SwfObject js class
原文:http://junnan.org/blog/?p=297
更多推荐
已为社区贡献1条内容
所有评论(0)