|

- 帖子
- 161
- 积分
- 79
- 技术分
- 20
- 来自
- 商创技术
- 在线时间
- 340 小时
- 注册时间
- 2004-12-17
|
1#
发表于 2007-10-7 11:10
| 只看该作者
图片展览滚动效果[原创]
转载请注明作者,谢谢!
制作思路:
(1):构建好XML文件,进行载入判断,取得xml节点
(2):在一个大的影片剪辑内,进行复制要加载图片的影片剪辑,按X轴方向水平排列
(3):使用[被遮照的影片剪辑.setMask(遮照的影片剪辑)] 创建遮照效果
(4):滚动区域的判断-
- stop();
- System.useCodepage = true;
- var link_xml:XML = new XML();
- link_xml.ignoreWhite = true;
- link_xml.onLoad = function(success) {
- if (success) {
- //trace(this);
- nextFrame();
- } else {
- trace("Error loading XML");
- }
- };
- link_xml.load("content_xml.as");
复制代码- /**
- * Description 版权所有2007@lbynet http://www.www.52hai.com/User0/140
- * @author _lby
- * @version 0.1
- * @discription:图片展览滚动效果;
- */
- stop();
- var _this = _root.link_xml.firstChild;
- var len:Number = _this.childNodes.length;
- //trace(len);
- var img_path_arr:Array = [];
- var link_arr:Array = [];
- Loader_fun = function () {
- for (var i:Number = 0; i<len; i++) {
- img_path_arr[i] = _this.childNodes[i].childNodes[0].childNodes[0].nodeValue;
- link_arr[i] = _this.childNodes[i].childNodes[1].childNodes[0].nodeValue;
- //进行copy影片剪辑排列
- content_mc.image_mc.duplicateMovieClip("image_mc"+i, 100+i);
- content_mc.image_mc._visible = false;
- content_mc["image_mc"+i]._x = content_mc.image_mc._width*i;
- content_mc["image_mc"+i]._y = 0;
- //加载图片;
- var mc:MovieClip = content_mc["image_mc"+i];
- mc.i = i;
- mc._alpha = 60;
- mc.onRollOver = function() {
- this._alpha = 100;
- trace(this.i);
-
- };
- mc.onRollOut = function() {
- this._alpha = 60;
- };
- mc.onRelease = function() {
- getURL(link_arr[this.i]);
- };
- var loadListener:Object = new Object();
- //参数mc为当前被加载进来的,这里为content_mc["image_mc"+i].load_mc
- loadListener.onLoadComplete = function(mc:MovieClip) {
- mc._parent.preloader._visible = false;
- };
- loadListener.onLoadError = function(mc:MovieClip) {
- mc._parent.preloader._visible = true;
- trace("加载图片失败");
- };
- if (img_path_arr != null && img_path_arr != "" && img_path_arr != undefined) {
- var imgLoader:MovieClipLoader = new MovieClipLoader();
- imgLoader.addListener(loadListener);
- imgLoader.loadClip(img_path_arr[i], content_mc["image_mc"+i].load_mc);
- }
- }
- };
- Loader_fun();
- content_mc.setMask(mask_mc);
- /*
- //自定义滚动类
- import DragRegion;
- new DragRegion(content_mc,mask_mc);
- */
- /* 滚动判断 */
- content_mc.onEnterFrame = function() {
- this._x = -((this._width-mask_mc._width)/mask_mc._width)*mask_mc._xmouse;
- //trace(this._x);
- if (this._x<-(100*len-500)) {
- //超出的为100*len-500
- this._x = -(100*len-500);
- } else if (this._x>-50) {
- this._x = 0;
- }
- };
复制代码 补充下面部分,如有错,请指正:

认真分析下面图解也不难理解- this._x = -((this._width-mask_mc._width)/mask_mc._width)*mask_mc._xmouse;
复制代码 因为content_mc 与 mask_mc 的高度一样,所以只要根据上面表达式求得 content_mc的x坐标 与 mask_mc._xmouse之间的关系
content_mc 与 mask_mc 的宽度之差 ,得到多出来的部分宽度,如上图所示的R1
再除于 mask_mc 的宽度,得到一个比例,这个比例是多出部分占mask_mc的百分比,
这个比较等价于 mask_mc._xmouse(将作为鼠标在 mask_mc上移动的偏移距离量) 与 content_mc._x 的比例
所以得到- this._x = -((this._width-mask_mc._width)/mask_mc._width)*mask_mc._xmouse;
复制代码 this是指content_mc
[ 本帖最后由 love黄家驹 于 2007-10-11 21:05 编辑 ] |
1
2
3
4
5
效果图片
-
-
content_XML.as (2.33 KB)
XML文件
-
-
~preview_secure.swf (2.78 KB)
lbynet.swf
|