flash 播放图片改进

网上流行的图片幻灯片效果播放插件pixviewer.swf相信很多人都在用,但因为有很多问题无法解决让人很苦恼。

比如最多只支持6个图片,这个我可以忍;比如只支持jpg格式的图片,我也可以忍;比如图片大小完全适应显示框,图片拉伸变形,说是实在的这个我本可以忍,但被扭曲形象的领导没法忍。他拍案而起,怒火中烧,所以我们干了好几个月的辛苦,毁在了一个播放插件上。

如果你也有同样的痛苦经历,那你幸福了,因为我忍不过领导这关,所以我千辛万苦的找到源文件,并把图片变形问题改进了,使大于显示框大小的图片锁定纵横比缩放。

源文件下载地址 http://files.cnblogs.com/jesse/focus.rar (未修改)

找到 focus_ok.fla文件

打开 Action Layer: 帧1  修改如下方法

function preloader1(target)
{
    var _l1 = target;
    mc = _l1.pic;
    var _l2 = int(mc.getBytesLoaded() / mc.getBytesTotal() * 100);
    if (_l2 >= 100)
    {
        delete _l1["onEnterFrame"];
		// 锁定图片纵横比,居中显示图片
		var scale = 0.0;
		if(_l1._width > borderwidth-2)
		{
			scale = _l1._width / (borderwidth-2);
			_l1._width = borderwidth-2;
			_l1._height =  _l1._height / scale;
		}
		if(_l1._height > borderheight-2)
		{
			scale = _l1._height / (borderheight-2);
			_l1._width = _l1._width / scale;
			_l1._height = borderheight-2;
		}
		_l1._x = (borderwdith - _l1._width) / 2 + 1;
		_l1._y = (-1 * _l1._height / 2) - textheight/2 + 1;
        //_l1._width = borderwidth;
        //_l1._height = borderheight;
    } // end if
} // End of the function


打开 Action Layer: 帧2  修改如下方法

function preloader(target, flagSwfPre) {
	var _l1 = target;
	var _l3 = _root;
	mc = _l1.pic;
	var _l2 = int(mc.getBytesLoaded()/mc.getBytesTotal()*100);
	_l3.loader.gotoAndStop(_l2);
	if (_l2>=100) {
		delete _l1["onEnterFrame"];
		setProperty("_root.buttonbanner.num"+(_l1.getDepth()+1), _alpha, "100");
		if (_l1 == _level0.image0) {
			mc._alpha = 100;
			_l3.buttonbanner.num1.gotoAndStop(3);
			_l3.current_pic = 0;
			_l3.timer.gotoAndPlay(2);
		}
		// end if  
		// 锁定图片纵横比,居中显示图片
		var scale = 0.0;
		if (_l1._width>borderwidth-2) {
			scale = _l1._width/(borderwidth-2);
			_l1._width = borderwidth-2;
			_l1._height = _l1._height/scale;
		}
		if (_l1._height>borderheight-2) {
			scale = _l1._height/(borderheight-2);
			_l1._width = _l1._width/scale;
			_l1._height = borderheight-2;
		}
		_l1._x = (borderwdith-_l1._width)/2+1;
		_l1._y = (-1*_l1._height/2)-textheight/2+1;
		//_l1._width = borderwidth;
		//_l1._height = borderheight;
		if (flagSwfPre == 1) {
			mc.stop();
		}
		// end if  
	}
	// end if  
}// End of the function


注意: 减2 或加1 都是为考虑边框的问题

还有很多问题因为我对action script 不懂,所以没有修改(可以继续忍下去),希望忍无可忍的兄弟将你修改好的无须再忍的代码分享一下!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值