![]() |
Программирование рамочного мувиклипа.
Вложений: 1
В фотошопе, в формате .png, сделана рамка для stage, а затем импортирована в Библиотеку.
У картинки нет центра, там альфа-канал, то есть графика есть только там, где нужно. В Библиотеке создан мувиклип Frame_container, в который и помещена эта рамка. В программе, на него вешаются события: MOUSE_OVER, MOUSE_OUT, CLICK. Вложение 30281 Проблема в том, что события срабатывают в любом месте мувиклипа. А нужно, чтобы только там, где есть графика самой рамки. Поэтому первые два события работают криво. Каким образом это можно реализовать? Я пробовал рассуждать по разному, например: 1. Нужно как-то вырезать дыру в самом мувиклипе. Но как это сделать - непонятно. Я думал, что если в этом мувиклипе сделать подложку в виде рамки, то всё получится. Но нет, события срабатывают и там, где ничего нет. 2. Придумать что-то хитрое с hitTestPoint(). Здесь пока еще пробую, но промежуточные результаты тоже не очень. Вроде бы хиттест срабатывает нормально, если дело касается просто спрайта с подложкой. Но если в него помещать другой спрайт c рамкой, то ситуация возвращается к раскладу из п.1 3. Можно конешно рамку собрать из четырех фрагментов, так наверное всё получится. Но этот вариант не очень хорош, по понятным причинам. |
Цитата:
Можно сделать подложку, и при нажатии проверять нажато ли на подложку, к примеру: Код AS3:
|
Вот только не надо тут разводить всякие InteractivePNG. Это же прямоугольная рамка, у которой нет никаких полупрозрачностей — прозрачность либо есть, либо нет. Надо просто нарисовать эту рамку с дыркой в векторе с битмап-заливкой из битмапдаты картинки рамы, и все. Хоть ручками, хоть программно. Та самая "подложка", которую Вы рисовали и которая правильно ловит события — Вам не пришло в голову залить ее не цветом а вашей картинкой?
|
http://www.freeactionscript.com/2011...ion-detection/
Вот так , так наверное будет лучше , если позже рамка станет фигурной , не забудьте Scaling. Проверяйте по Simple через EnterFrame, тот пиксель , что под курсором. Хотя нет лучше варианта чем предложил Wolsh. |
Вложений: 2
Всем спасибо за ответы.
Получилось, но не по всем методикам. Если исходить из следующих скриншотов: Библиотека: Вложение 30284 Картинка: Вложение 30285 То упрощенный код вот такой: Код AS3:
Variant2 - с ручной заливкой контейнера, по совету от Wolsh также работает. Я не догадался это сделать, потому что опыта работы с растром во флэше у меня практически нет. Даже как-то подзабыл, что Bucket имеет режим растровой заливки. Variant3 - c программной заливкой контейнера. К сожалению не получилось. Не догоняю как грамотно залить битмапдатой. Во время экспериментов с параметрами этой функции + добавление геометрических фигур + добавление случайной матрицы, какие-то части битмапдаты проклюнулись, но как сделать просто и грамотно, не пойму. Буду признателен за разгадку. P.S. C InteractivePNG тоже разобрался, отчасти получилось (не получилось лишь там, где была ошибка с логикой моей архитектуры), берем на заметку. fd96, спасибо за наводку, демо прикольное. На практике сам класс пока не проверял. Но думаю, там всё просто - надо просто передавать в метод complex(clip1: DisplayObjectContainer, clip2: DisplayObjectContainer) два мувиклипа и на выходе ловить true или false. |
| Часовой пояс GMT +4, время: 18:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.