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

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

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

Регистрация: Aug 2011
Сообщений: 6
По умолчанию Картинки не стандартной формы

Здравствуйте.

Например есть картинка png на которой изображен чёрный треугольник.
Остальные области прозрачные.

Нужно отобразить картинку в alpha=0.5
а при наводе курсора на треугольник сделать alpha=1

Так вот проблема собственно в чём.
Если отлавливать mouseOver то треугольник становится чёрным когда наводят только на прозрачную часть картинки. А нужно чтоб становился при наводе на сам треугольник...

Есть варианты как это сделать по проще?

Новичёк ещё во флеше...

Старый 27.11.2011, 10:49
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Для таких целей изобретен класс InteractivePNG

Используется просто. Вместо того, чтобы создавать экземпляр Sprite или MovieClip и добавлять в них картинку, создаем экземпляр InteractivePNG и добавляем картунку в него.

Старый 27.11.2011, 11:35
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 3  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Или hittest http://dougmccune.com/blog/2007/02/0...nt-png-images/

Старый 27.11.2011, 16:52
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 4  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
А не слишком ли "дорогие" в плане производительности эти решения? В одном ентерфрейм, в другом отрисовка по мышиному событию.
Может отрисовать по пнг-ешке слой с прозрачностью 0.01, положить сверху пнг-шки в интерактивном объекте, а на него уже слушатель повесить?

Старый 27.11.2011, 17:07
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 5  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
А не слишком ли "дорогие" в плане производительности эти решения?
Нет, если таких объектов не много.
Если много то я бы лучше getPixel32() заюзал

Старый 27.11.2011, 21:48
RigiyTip вне форума Посмотреть профиль Отправить личное сообщение для RigiyTip Найти все сообщения от RigiyTip
  № 6  
Ответить с цитированием
RigiyTip

Регистрация: Aug 2011
Сообщений: 6
Встретил вот такую штуку:

http://www.senocular.com/demo/Transf...sformTool.html

Это трансформер изображений. Там как я понял flash+AS3
Так вот там клик по картинке срабатывает именно если кликнуть по картинке, а не по прозрачной области.
Этого там добились благодаря флэшу? я его просто не учил пока, не знаю как он работает =)

Да и вообще извращениями занимаюсь, пишу всё gedit и компилирую в консоле под линуксом )

Добавлено через 5 часов 24 минуты
Вобщем сделал вот так:
=)
Всем спасибо.

Код AS3:
 
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
	xmlns:mx="http://www.adobe.com/2006/mxml"
	layout="absolute"
	width="100%"
	height="100%"
>
 	<mx:Script>
 		<![CDATA[
 			import flash.events.MouseEvent;
 			import mx.controls.Image;
			import flash.display.BitmapData;
			import flash.geom.Point;
 
			private function fn(event:MouseEvent):void{
				var obj:Image=(event.currentTarget as Image);
				var bmapData:BitmapData = new BitmapData(obj.width, obj.height, true, 0x00000000);
				bmapData.draw(obj);
 
				var point:Point=new Point(event.localX,event.localY);
 
				var returnVal:Boolean = bmapData.hitTest(new Point(0,0), 0, point);
 
				bmapData.dispose();
 
				if(returnVal){
					obj.alpha=1;
				}
				else{
					obj.alpha=0.5;
				}
 			}
 
 		]]>
 	</mx:Script>
<mx:Image id="im1" source="img.png"  alpha="0.5" mouseMove="fn(event)" mouseOut="{im1.alpha=0.5;}"  />
</mx:Application>


Последний раз редактировалось RigiyTip; 28.11.2011 в 04:34.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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