Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.02.2009, 01:33
sector_222 вне форума Посмотреть профиль Отправить личное сообщение для sector_222 Найти все сообщения от sector_222
  № 1  
Ответить с цитированием
sector_222
 
Аватар для sector_222

Регистрация: Jul 2008
Сообщений: 72
Question эффект зеркального отображения

дорый день, пытаюсь сделать эффект зеркального отображения списка мувиклипов
Код AS1/AS2:
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;*/
 
	}


где моя ошибка? подскажите пожалуйста

Старый 22.02.2009, 02:16
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 2  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
забудьте про LoadComlete,используйте onLoadInit,даже в хелпе об этом сказано
Да и вообще у Вас там код какой-то странный.
Код AS1/AS2:
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.
Старый 22.02.2009, 13:15
sector_222 вне форума Посмотреть профиль Отправить личное сообщение для sector_222 Найти все сообщения от sector_222
  № 3  
Ответить с цитированием
sector_222
 
Аватар для sector_222

Регистрация: Jul 2008
Сообщений: 72
код действительно специфичный - это потому что создаётся отдельный прелоадер для каждой картинки на время загрузки - а проблема значит в отсутсвии в коде

onLoadInit() - буду думать как переделать - спасибо =)

Добавлено через 1 час 51 минуту
сделал - во что получилось :
Код AS1/AS2:
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);
	}
}
но не могу понять как сделать - чтобы при наведении курсора на изображение менялась альфа не только на нём - но и на зеркальном отображении. есть идеи?

Старый 22.02.2009, 15:37
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 4  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Код AS1/AS2:
pic.onRollOut
поменяй pic на mc

Старый 22.02.2009, 15:53
sector_222 вне форума Посмотреть профиль Отправить личное сообщение для sector_222 Найти все сообщения от sector_222
  № 5  
Ответить с цитированием
sector_222
 
Аватар для sector_222

Регистрация: Jul 2008
Сообщений: 72
спасибо =)

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:21.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.