![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2008
Сообщений: 72
|
дорый день, пытаюсь сделать эффект зеркального отображения списка мувиклипов
import mx.transitions.Tween; import mx.transitions.easing.*; import flash.display.BitmapData; import flash.geom.Matrix; function callThumbsGoriz() { // создаём пустой клип с нужными координатами для панели прокрутки с мелкими фотками _root.createEmptyMovieClip("container_mcZ",_root.getNextHighestDepth()); container_mcZ._x = _root.goriz_x; container_mcZ._y = _root.goriz_y; //создаём прелоадер var clipLoader = new MovieClipLoader(); var preloader = new Object(); clipLoader.addListener(preloader); //пока не кончится все фотки загружаем их в контейнер for (i=0; i<myImagesTotal; i++) { thumbURL = myImages[i].attributes.thumb_url; myThumb_mc = container_mcZ.createEmptyMovieClip(i, container_mcZ.getNextHighestDepth()); myThumb_mc._x = (_root.thumb_height*i); //координата следующей фотки = ширина фотки * i clipLoader.loadClip("thumbs/"+thumbURL,myThumb_mc); // загружаем фотку //прелоадер в виде текстового поля preloader.onLoadStart = function(target) { target.createTextField("my_txt",target.getNextHighestDepth,60,60,100,20); target.my_txt.selectable = false; }; preloader.onLoadProgress = function(target, loadedBytes, totalBytes) { target.my_txt.text = Math.floor((loadedBytes/totalBytes)*100); }; //при окончании загрузки прячим прелоадер preloader.onLoadComplete = function(target) { new Tween(target, "_alpha", Strong.easeOut, 0, 100, 7, true); target.my_txt.removeTextField(); reflect(target);//здесь я вызываю функцию зеркального торажения //принажатии на изображение вызываем загрузку большого фото target.onRelease = function() { callFullImage(this._name); }; //при наведении на изображение - прозрачность на 50% target.onRollOver = function() { this._alpha = 50; }; target.onRollOut = function() { this._alpha = 100; }; }; } } function reflect(target_mc:MovieClip):Void{ var myBitmapData:BitmapData = new BitmapData(target_mc._width, target_mc._height, false, 0x00CCCCCC); var mc_1:MovieClip = this.createEmptyMovieClip("reflect_mc", 2); mc_1.attachBitmap(myBitmapData, 3); myBitmapData.draw(target_mc); reflect_mc._yscale = -100; reflect_mc._y= target_mc._y+target_mc._height*2+5; reflect_mc._x = target_mc._x; setupReflection(reflect_mc); } // функция создания зеркальной заливки function setupReflection(target_mc:MovieClip):Void{ this.createEmptyMovieClip("mask_mc",50); with (mask_mc) { colors = [0x000000, 0xFFFFFF]; fillType = "linear" alphas = [100, 0]; ratios = [127, 255]; spreadMethod = "pad"; interpolationMethod = "RGB"; focalPointRatio = 1; matrix = new Matrix(); matrix.createGradientBox(target_mc._x, target_mc._y, Math.PI/2, 0, -175); beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio); moveTo(target_mc._x, target_mc._y); lineTo(target_mc._x, target_mc._y-target_mc._height); lineTo(target_mc._x+target_mc._width, target_mc._y-target_mc._height); lineTo(target_mc._x+target_mc._width, target_mc._y); lineTo(target_mc._x, target_mc._y); endFill(); } //копируем изображение target_mc.cacheAsBitmap = true; //дубликат наебарот mask_mc.cacheAsBitmap = true; //эффект зеркала target_mc.setMask(mask_mc); /*mask_mc._alpha =50;*/ } где моя ошибка? подскажите пожалуйста ![]() |
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
забудьте про LoadComlete,используйте onLoadInit,даже в хелпе об этом сказано
Да и вообще у Вас там код какой-то странный. import mx.transitions.*; import mx.transitions.easing.*; import flash.display.*; import flash.geom.*; import flash.filters.*; // var blur:BlurFilter = new BlurFilter(2,2,2); callThumbsGoriz(); // function callThumbsGoriz() { var target:MovieClip = _root.createEmptyMovieClip("target", 2); for (var i = 0; i<4; i++) { var mcl:MovieClipLoader = new MovieClipLoader(); var obj:Object = {}; mcl.addListener(obj); // var mc:MovieClip = target.createEmptyMovieClip('mc'+i, i); var pic:MovieClip = mc.createEmptyMovieClip('pic', 0); var bmp:MovieClip = mc.createEmptyMovieClip('bmp', 2); var mask:MovieClip = mc.createEmptyMovieClip('mask', 4); // mc._x = 0+100*i; // obj.onLoadInit = function(pic) { var mc = pic._parent; mc.varTween = new Tween(mc, '_alpha', Regular.easeOut, 0, 100, 2, true); reflect(pic); setupReflection(pic); }; mcl.loadClip('photo/master_thumb/001/001.jpg', pic); } } function reflect(mc:MovieClip) { var bmp = mc._parent.bmp; var bitmap:BitmapData = new BitmapData(mc._width, mc._height, true, 0); bitmap.draw(mc); bmp.attachBitmap(bitmap, 2, 'auto', true); bmp._yscale = -100; bmp._y = mc._height*2+5; bmp._x = mc._x; bmp.filters = [blur] } function setupReflection(mc:MovieClip) { var mask = mc._parent.mask; var bmp = mc._parent.bmp; // with (mask) { _y = mc._height+5; matrix = new Matrix(); matrix.createGradientBox(mc._width, mc._height, Math.PI/2, 50, -20); beginGradientFill('linear', [0x000000, 0xffffff], [100, 0], [0, 0xff], matrix, 'pad', 'RGB', 1); moveTo(0, 0); lineTo(mc._width, 0); lineTo(mc._width, mc._height); lineTo(0, mc._height); lineTo(0, 0); endFill(); } bmp.cacheAsBitmap = true; mask.cacheAsBitmap = true; mask._alpha = 80; bmp.setMask(mask); } Последний раз редактировалось scarbo; 22.02.2009 в 03:21. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 72
|
код действительно специфичный - это потому что создаётся отдельный прелоадер для каждой картинки на время загрузки - а проблема значит в отсутсвии в коде
onLoadInit() - буду думать как переделать - спасибо =) Добавлено через 1 час 51 минуту сделал - во что получилось : function callThumbsGoriz() { this.createEmptyMovieClip("container_mcZ",this.getNextHighestDepth()); container_mcZ._x = _root.goriz_x; container_mcZ._y = _root.goriz_y; var target:MovieClip = _root.createEmptyMovieClip("target", 2); for (var i = 0; i<myImagesTotal; i++) { thumbURL = myImages[i].attributes.thumb_url; var mcl:MovieClipLoader = new MovieClipLoader(); var obj:Object = {}; mcl.addListener(obj); // //myThumb_mc = container_mcZ.createEmptyMovieClip(i, container_mcZ.getNextHighestDepth()); mc = container_mcZ.createEmptyMovieClip(i, container_mcZ.getNextHighestDepth()); //var mc:MovieClip = target.createEmptyMovieClip('mc'+i, i); var pic:MovieClip = mc.createEmptyMovieClip('pic', 0); var bmp:MovieClip = mc.createEmptyMovieClip('bmp', 2); var mask:MovieClip = mc.createEmptyMovieClip('mask', 4); // mc._x = _root.thumb_height*i; // obj.onLoadInit = function(pic) { var mc = pic._parent; mc.varTween = new Tween(mc, '_alpha', Regular.easeOut, 0, 100, 2, true); reflect(pic); setupReflection(pic); pic.onRelease = function() { //callFullImage(this._name);//загружаем большое фото }; //при наведении на изображение - прозрачность на 50% pic.onRollOver = function() { this._alpha = 50; //_root.bmp.mask._alpha = 50; }; // и наоборот pic.onRollOut = function() { this._alpha = 100; }; }; mcl.loadClip("thumbs/"+thumbURL, pic); } } |
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
|
|
|||||
|
Регистрация: Jul 2008
Сообщений: 72
|
спасибо =)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 15:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|