本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2013-01-17 · 原址 http://space.flash8.net/bbs/thread-342918-1-1.html ← Flash 保存计划
返回列表 回复 发帖

图片展览滚动效果[原创]

转载请注明作者,谢谢!


制作思路:
             (1):构建好XML文件,进行载入判断,取得xml节点
             (2):在一个大的影片剪辑内,进行复制要加载图片的影片剪辑,按X轴方向水平排列
             (3):使用[被遮照的影片剪辑.setMask(遮照的影片剪辑)] 创建遮照效果
             (4):滚动区域的判断

  1. stop();
  2. System.useCodepage = true;
  3. var link_xml:XML = new XML();
  4. link_xml.ignoreWhite = true;
  5. link_xml.onLoad = function(success) {
  6. if (success) {
  7.   //trace(this);
  8.   nextFrame();
  9. } else {
  10.   trace("Error loading XML");
  11. }
  12. };
  13. link_xml.load("content_xml.as");
复制代码
  1. /**
  2. * Description 版权所有2007@lbynet http://www.www.52hai.com/User0/140
  3. * @author _lby
  4. * @version 0.1
  5. * @discription:图片展览滚动效果;
  6. */
  7. stop();
  8. var _this = _root.link_xml.firstChild;
  9. var len:Number = _this.childNodes.length;
  10. //trace(len);
  11. var img_path_arr:Array = [];
  12. var link_arr:Array = [];
  13. Loader_fun = function () {
  14. for (var i:Number = 0; i<len; i++) {
  15.   img_path_arr[i] = _this.childNodes[i].childNodes[0].childNodes[0].nodeValue;
  16.   link_arr[i] = _this.childNodes[i].childNodes[1].childNodes[0].nodeValue;
  17.   //进行copy影片剪辑排列
  18.   content_mc.image_mc.duplicateMovieClip("image_mc"+i, 100+i);
  19.   content_mc.image_mc._visible = false;
  20.   content_mc["image_mc"+i]._x = content_mc.image_mc._width*i;
  21.   content_mc["image_mc"+i]._y = 0;
  22.   //加载图片;
  23.   var mc:MovieClip = content_mc["image_mc"+i];
  24.   mc.i = i;
  25.   mc._alpha = 60;
  26.   mc.onRollOver = function() {
  27.    this._alpha = 100;
  28.    trace(this.i);
  29.    
  30.   };
  31.   mc.onRollOut = function() {
  32.    this._alpha = 60;
  33.   };
  34.   mc.onRelease = function() {
  35.    getURL(link_arr[this.i]);
  36.   };
  37.   var loadListener:Object = new Object();
  38.   //参数mc为当前被加载进来的,这里为content_mc["image_mc"+i].load_mc
  39.   loadListener.onLoadComplete = function(mc:MovieClip) {
  40.    mc._parent.preloader._visible = false;
  41.   };
  42.   loadListener.onLoadError = function(mc:MovieClip) {
  43.    mc._parent.preloader._visible = true;
  44.    trace("加载图片失败");
  45.   };
  46.   if (img_path_arr != null && img_path_arr != "" && img_path_arr != undefined) {
  47.    var imgLoader:MovieClipLoader = new MovieClipLoader();
  48.    imgLoader.addListener(loadListener);
  49.    imgLoader.loadClip(img_path_arr[i], content_mc["image_mc"+i].load_mc);
  50.   }
  51. }
  52. };
  53. Loader_fun();
  54. content_mc.setMask(mask_mc);
  55. /*
  56. //自定义滚动类
  57. import DragRegion;
  58. new DragRegion(content_mc,mask_mc);
  59. */
  60. /* 滚动判断 */
  61. content_mc.onEnterFrame = function() {
  62. this._x = -((this._width-mask_mc._width)/mask_mc._width)*mask_mc._xmouse;
  63. //trace(this._x);
  64. if (this._x<-(100*len-500)) {
  65.   //超出的为100*len-500
  66.   this._x = -(100*len-500);
  67. } else if (this._x>-50) {
  68.   this._x = 0;
  69. }
  70. };
复制代码
补充下面部分,如有错,请指正:




认真分析下面图解也不难理解
  1. 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 的比例   

所以得到
  1. this._x = -((this._width-mask_mc._width)/mask_mc._width)*mask_mc._xmouse;
复制代码
this是指content_mc

[ 本帖最后由 love黄家驹 于 2007-10-11 21:05 编辑 ]

1

1.jpg

2

2.jpg

3

3.jpg

4

4.jpg

5

5.jpg

效果图片

lbynet.jpg

content_XML.as (2.33 KB)

XML文件

~preview_secure.swf (2.78 KB)

lbynet.swf

http://www.shch8.com
:loveliness: 源文件下载~

图片展览滚动.rar (8.76 KB)

源文件下载

http://www.shch8.com
下载了,谢谢楼主
非常不错的说,下载了。感谢
看看。。。。。。。。

很有趣,as呀!

不错,希望我也能做出来,套用一下
青龙々
收了~~谢谢!:lol
好东西 收了
this._x = -((this._width-mask_mc._width)/mask_mc._width)*mask_mc._xmouse;
这个怎么理解 难的想了:lol
原帖由 passi0n 于 2007-10-11 16:12 发表
好东西 收了
this._x = -((this._width-mask_mc._width)/mask_mc._width)*mask_mc._xmouse;
这个怎么理解 难的想了:lol
已经进行补充,原帖已经修改,请参考


下面进行扩展:


[ 本帖最后由 love黄家驹 于 2007-10-11 21:07 编辑 ]

图片展览滚动.swf (2.94 KB)

图片展览滚动

http://www.shch8.com
辛苦了 赞个 嘎嘎
其实这东西很多时候这临界点很难找 :(
不用那么麻烦吧
自己选择的路,跪着也要吧它走完
再顶下 又学习了 鼠标移动的位置和所在元件有关系,也就是说鼠标移动的位置是相对的
:victory:
自己选择的路,跪着也要吧它走完
顶~~~~~~~~~~~~

不错,我顶

谢谢楼主了,我顶
很喜欢这个效果··嘿嘿··
不錯的效果,謝謝樓主
:( :(

好东东..收藏...

太深了,

我不懂呀,
可以实现简单点的图片滚动效果
高人,学习了
这个能放宽不一样的图片吗。有高人指点我一下嘛。俺是菜鸟。
楼主的确不错!

不错
看看
就是不 懂
这个菜单很实用阿 谢谢楼主了
很好  谢谢
能讲详细一点就好了~~

指教问题

请问一下,加载别的图片,怎么加载呀!
请指教!谢谢1:loveliness:
返回列表