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

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

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

Регистрация: Oct 2007
Сообщений: 78
Cool скрытие некоторых частей клипа

Всем привет!
Столкнулся тут с проблемой(нашел решение но оно очень фиговое):
Есть фоновый мувиклип - fon_mc(карта), на этом фоне есть несколько мувиклипов(одинаковых или разных) - clip1, clip2, clip3 и тд(здания, различные предметы...). Каждый из этих клипов содержит две части(2 клипа). Первая часть всегда видима, а вторая скрывается при условии наведения на него мыши. Причем чем ближе мышка подошла ко второй части тем прозрачнее она становится....и становится видимым фон.

Т.е. вот например реальная ситуация - пользователь водит мышкой по карте (изометрия)где есть несколько зданий и при приближении мышки к какой либо части здания эта часть становится прозрачной(в зависимости от близости мыши к этой части), причем некоторые другие части здания могут всегда оставаться видимыми, независимо от положения мыши.

А вопрос - как это сделать?

Скорее всего(я уверен на 99%) это делается с помощью масок, но не могу понять как именно...
Если кто то не понял ситуации, то могу как то картинками пояснить.
Можно подсказать словестно а можно кодом, и тому и другому буду очень рад.

Спасибо за внимание!))

Старый 20.07.2008, 21:05
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
так пусть эти мувики и следят (по ENTER_FRAME или MOUSE_MOVE) за расстоянием до мыши и меняют свою альфу..

Старый 20.07.2008, 21:12
kia007 вне форума Посмотреть профиль Отправить личное сообщение для kia007 Найти все сообщения от kia007
  № 3  
Ответить с цитированием
kia007

Регистрация: Oct 2007
Сообщений: 78
ну как бы можно такой вариант использовать но тогда придется дробить один клип на несколько, объясню на примере:
Стену здания предполагалось делать одним клипом, и при приближении мыши к какой то части стены эта часть становится прозрачной, при этом другие части стены остаются не прозрачными(если они достаточно далеко от мыши).

Старый 20.07.2008, 21:56
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
если не дробить, то можно накрыть мувик маской, в которой рисовать полупрозрачный градиент в зависимости от положения мыши..
обязательные условия чтоб такая маска работала:
cacheAsBitmap=true для обоих (и мувику и маске)
и присутствие маски в дисплейЛисте (addChild )
Код:
package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.geom.Matrix;
	
	public class Main extends Sprite
	{
		private var body:Sprite = new Sprite();
		private var maska:Shape = new Shape();
		
		public function Main():void
		{
			body.graphics.beginFill(0x000000);
			body.graphics.drawRect(0, 0, 300, 200);
			body.cacheAsBitmap = true;
			addChild(body);
			
			maska.cacheAsBitmap = true;
			addChild(maska);
			
			body.mask = maska;
			addEventListener(Event.ENTER_FRAME, enterFrameHandker);
		}
		
		private function enterFrameHandker(e:Event):void 
		{
			var fillType:String = GradientType.RADIAL;
			var colors:Array = [0x000000, 0x000000];
			var alphas:Array = [0, 1];
			var ratios:Array = [0x00, 0xFF];
			var matr:Matrix = new Matrix();
			var tx:Number = body.mouseX - body.width / 2;
			var ty:Number = body.mouseY - body.height / 2;
			matr.createGradientBox(300, 200, 0, tx, ty);
			var spreadMethod:String = SpreadMethod.PAD;
			
			maska.graphics.clear();
			maska.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod);  
			maska.graphics.drawRect(0, 0, 300, 200);
			maska.graphics.endFill();
		}
	}
}

Старый 20.07.2008, 23:10
kia007 вне форума Посмотреть профиль Отправить личное сообщение для kia007 Найти все сообщения от kia007
  № 5  
Ответить с цитированием
kia007

Регистрация: Oct 2007
Сообщений: 78
ну как бы таких зданий со стенами может быть очень много и хотелось бы использовать что то вроде одной маски на несколько таких зданий.. но насколько я знаю такое не возможно(решение что типа все клипы в один клип запихнуть и сделать маску не предлагать))).
Спасибо за код...нашел тут интересный момент который мне поможет.

Кажись придумал решение...делать скорее всего буду так: каждый мувиклип(здания, и др. предметы) будет абсолютно независимым от карты и др предметов и будут объектами класса.
Для каждого такого объекта внутри будет маска и при наведении мыши на объект она будет какким либо обрахом включаться и работать для этого объекта пока мышь не уйдет с этого объекта.

Если есть более легкое решение то пишите!!!

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

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

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


 


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


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