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

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

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

Регистрация: Aug 2014
Адрес: Где-то на поверхности планеты, какой хз
Сообщений: 113
По умолчанию Клик через прозрачную область

Два дня искал хоть какой-нибудь пример и ничего годного не нашел.
Вопрос: можно ли сделать клик через прозрачные области загружаемой картинки. К примеру круг, а под ним какой-нибудь предмет. Нужно сделать так чтобы можно было кликать на ниже лежащий предмет, но при этом круг тоже кликабелен. Маска у меня почему-то не дает нужного эффекта.

Помогите пожалуйста примером.

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

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Наверное самое простое решение.
Вложения
Тип файла: zip example.zip (443.4 Кб, 19 просмотров)
Тип файла: swf example.swf (26.5 Кб, 55 просмотров)
__________________
ЛОДКИ

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

Регистрация: Aug 2014
Адрес: Где-то на поверхности планеты, какой хз
Сообщений: 113
а можно тоже самое только кодом или для феди?

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

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Там код в кадре. В нормальной ситуации надо просто родить битмапу и предметы на ходу и не писать код в кадре)
Вам по сути нужен участок, который в обработчике клика.

Код AS3:
// ***
var color32:uint = bmp.bitmapData.getPixel32(bmp.mouseX, bmp.mouseY);
var a:uint = color32 >> 24 & 0xFF;
if (a != 0) return;
 
// ***
__________________
ЛОДКИ

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

Регистрация: Aug 2014
Адрес: Где-то на поверхности планеты, какой хз
Сообщений: 113
то есть поймать событие и если альфа непрозрачная задиспачить клик, если нет то клик пройдет дальше? правильно понял?
я пробовал что-то похожее но ничего не вышло.

Старый 11.08.2017, 14:14
FlashRus вне форума Посмотреть профиль Отправить личное сообщение для FlashRus Найти все сообщения от FlashRus
  № 6  
Ответить с цитированием
FlashRus
 
Аватар для FlashRus

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Цитата:
задиспачить клик
Я там ничего не диспатчил, но это не значит что вам это не понадобится.
Вы код-то посмотрели? Я просто слушаю клики на "предметах", а в обработчике смотрю альфу пикселя у битмапы. Если альфа удовлетворяет условиям - делаем что-то с предметом.

Цитата:
я пробовал что-то похожее но ничего не вышло.
Ну дык у меня же вышло)
__________________
ЛОДКИ

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

Регистрация: Aug 2014
Адрес: Где-то на поверхности планеты, какой хз
Сообщений: 113
мда вставил код в клик, но клик просто не проходит через прозрачное, но клик идет именно на изображении. Теперь бы продырявить альфу.

Добавлено через 59 секунд
то есть задача пустить клик дальше верхнего спрайта.

Старый 11.08.2017, 14:17
FlashRus вне форума Посмотреть профиль Отправить личное сообщение для FlashRus Найти все сообщения от FlashRus
  № 8  
Ответить с цитированием
FlashRus
 
Аватар для FlashRus

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Я ещё раз спрашиваю, вы посмотрели код в example.fla?
__________________
ЛОДКИ

Старый 11.08.2017, 14:21
PsychoTech вне форума Посмотреть профиль Отправить личное сообщение для PsychoTech Найти все сообщения от PsychoTech
  № 9  
Ответить с цитированием
PsychoTech
 
Аватар для PsychoTech

Регистрация: Aug 2014
Адрес: Где-то на поверхности планеты, какой хз
Сообщений: 113
мой адоб накрылся сроком. поэтому и просил код

Старый 11.08.2017, 14:25
FlashRus вне форума Посмотреть профиль Отправить личное сообщение для FlashRus Найти все сообщения от FlashRus
  № 10  
Ответить с цитированием
FlashRus
 
Аватар для FlashRus

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Это почти тот-же самый код, что в example.fla
Код AS3:
var bmp:Bitmap = getImage(); //откуда-нить берём битмап
ic.mouseEnabled = false; //отключаем мышь у контейнера картинки
 
//подписываемся на клики по "предметам"
mc01.addEventListener(MouseEvent.CLICK, clickHandler);
mc02.addEventListener(MouseEvent.CLICK, clickHandler);
mc03.addEventListener(MouseEvent.CLICK, clickHandler);
 
/**
 */
function clickHandler(e:MouseEvent):void {
	//получаем цвет пикселя по координатам мыши.
	var color32:uint = bmp.bitmapData.getPixel32(bmp.mouseX, bmp.mouseY);
	//получаем альфу
	var a:uint = color32 >> 24 & 0xFF;
	//если альфа не ноль, то завершаем выполнение, условие естественно может быть сложнее
	if (a != 0) return;
	//если всё таки пиксель прозрачный - удаляем со сцены объект
	var mc:SimpleButton = e.currentTarget as SimpleButton;
	mc.removeEventListener(MouseEvent.CLICK, clickHandler);
	removeChild(mc);
}
__________________
ЛОДКИ

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

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

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


 


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


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