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

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

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

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

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

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Я вас не понимаю... Я вам код же отправил?
Он простой как топор.

По пунктам:
1. Выкладываем на сцену предметы и сверху битмапу с прозрачными участками. Видно будет только те предметы, что находятся в пределах прозрачных пикселей битмапы;
2. Отключаем у битмапы мышиные события устанавливая InteractiveObject#mouseEnabled в false;
3. Подписываемся на клики от предметов.
4. В обработчике клика, проверяем пиксель под указателем у битмапы. Если пиксель прозрачный - обрабатываем клик по предмету, если пиксель не прозрачный, то не обрабатываем вообще или-же обрабатываем как-то иначе.
__________________
ЛОДКИ

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

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

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

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

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

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

Добавлено через 2 минуты


Добавлено через 3 минуты
http://prntscr.com/g76hu8
в общем красный круг не дает кликать на черный внутри себя. но при этом он также должен быть кликабельным.

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

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Тогда вам вообще ничего не надо делать. Оно всё по дефолту так работает.
Просто прозрачную заливку у красного шейпа сделайте.
Ну и собственно вешайте обработчики на оба DO.
__________________
ЛОДКИ

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

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

Добавлено через 2 минуты
может я неправильно истолковал. Здесь я только тестирую на кругах в конечном итоге код должен работать с картинками. и нужно отсечь всю прозрачную альфу для кликов. чтобы если картинка перекрывает другую но через неё видно её, то должен срабоатть клик на нижней а не наверхней, а верхняя квадратом закрывает всю область.

Добавлено через 5 минут
картинку гружу и рисую её в bitmapDat`y с параметром транспарент. но все равно квадрат в итоге.
и никак не хочет пускать клик под себя.

Добавлено через 6 минут
Код AS3:
import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.display.BlendMode;
	import flash.net.URLRequest;
	import flash.display.PixelSnapping;
	/**
	 * ...
	 * @author @PsYcHoTeChNiK
	 */
	public class Circles extends Sprite 
	{
		private var face: Sprite = new Sprite();
		private var loadImage: Loader = new Loader();
		private var imgbtm: Bitmap;
		private var imgbtmdt: BitmapData;
		public function Circles() 
		{
			super();
			loadImage.contentLoaderInfo.addEventListener(Event.COMPLETE, onlocad);
			loadImage.load(new URLRequest("circle.png"));
 
		}
		private function onlocad(e:Event):void {
			imgbtmdt = new BitmapData(loadImage.content.width, loadImage.content.height, true,0);
			imgbtmdt.draw(loadImage.content);
			imgbtm = new Bitmap(imgbtmdt);
			var imgbtm2: Bitmap = new Bitmap(imgbtmdt);
			var maska: Sprite = new Sprite();
			maska.addChild(imgbtm2);
			maska.cacheAsBitmap = true;
			this.addChild(maska);
			face.addChild(imgbtm);
			//imgbtm.mask = maska;
			face.cacheAsBitmap = true;
			addChild(face);
			this.blendMode = BlendMode.LAYER;
			face.blendMode = BlendMode.NORMAL;
			this.mouseEnabled = false;
			this.addEventListener(MouseEvent.CLICK, onClick);
		}
		private function onClick(e: MouseEvent):void
		{
			var color32:uint = imgbtm.bitmapData.getPixel32(imgbtm.mouseX, imgbtm.mouseY);
			var a:uint = color32 >> 24 & 0xFF;
			if (a == 0) {
 
				return;
			}
			this.x += 10;;
			e.updateAfterEvent();
		}
 
 
	}
может так будет понятнее. тут конечно уже намусорено, но думаю суть понять можно.

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

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Код AS3:
чтобы если картинка перекрывает другую но через неё видно её, то должен срабоатть клик на нижней а не наверхней, а верхняя квадратом закрывает всю область.
Вы можетe по MouseEvent.MOUSE_MOVE менять у своей битмапы с дырками mouseEnabled.
Код AS3:
var color32:uint = imgbtm.bitmapData.getPixel32(imgbtm.mouseX, imgbtm.mouseY);
var a:uint = color32 >> 24 & 0xFF;
imgbtm.mouseEnabled = a != 0;
А в клике по предмету делать уже только то, что вам нужно, туда клик придёт только если указатель находится над прозрачным пикселем.
__________________
ЛОДКИ

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

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

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

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Давайте последовательно.
Есть битмапа с "дырками".
Есть куча "предметов".
1. Предмет должен быть виден в пределах альфы у битмапы и кликаться только тогда, когда он виден?
2. Битмапа должна кликаться тогда, когда не кликается предмет?
Оба утверждения верны?
__________________
ЛОДКИ

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

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

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


 


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


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