Просмотр полной версии : Пересечение объектов сложной формы.
Здравствуйте! Много встречается подобных тем, но так до конца мне не удалось понять сути. :(
Я не могу разобраться, как реализовать пересечение (столкновение) объектов.
Например, при пересечении двух мувиклипов должно произойти определённое действие.
Делаю с помощью hitTest, но пересекаются границы мувиклипов, а не их содержимое. Вот и ломаю голову, как сделать, чтобы действие происходило при пересечении видимой части мувиклипов, а не их контейнеров.
Причём внутри этих мувиклипов есть ещё мувиклипы, и я хочу, чтобы пересечение происходило по контурам самого последнего вложенного мувиклипа.
Или ещё, как вариант, пересечение точек регистрации этих мувиклипов. Но это я вообще не знаю как делается.
Очень прошу, помогите мне, пожалуйста, разобраться, знающие люди!
Спасибо!
Отрисовывать в BitmapData и хиттестить http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000794.html#157187
Спасибо! Извините, а есть то же самое на русском, а то я не сильна в английском? :rolleyes:
Добавлено через 4 минуты
Вроде нашла. Сейчас почитаем. Если что - опять сюда. :mosking:
Добавлено через 3 часа 50 минут
Ну, короче говоря, непонятно ничего... :(
На русском (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#hitTest%28%29) есть для AS3, но по сути тоже самое.
Спасибо большое за помощь! Как-то сложно для понимания.
Вот (если я правильно поняла), получается, что я создала объект БитМап, так?
var bmd1: BitmapData = new BitmapData(100, 100, true, 0x000000);
bmd1.draw(_root.gl.mc1);
А дальше что делать, я пока не очень поняла.
Кого хиттестить и как? Если не сложно, может кто-нибудь ещё подсказать?
Спасибо!
Там же (в хелпе) пример есть.
Вот, пытаюсь понять. Только как-то уже запуталась...
Добавлено через 11 минут
А ещё ошибку пишет The class or interface 'Bitmap' could not be loaded.
Только не знаю, что писать тогда надо.
Класс сначала надо импортировать
import flash.display.BitmapData;
Сейчас, в результате изучения данной выше информации, у меня получился вот такой код. Только пока не вижу, что он работает у меня.
import flash.display.BitmapData;
import flash.geom.Point;
var bmd1: BitmapData = new BitmapData(100, 100, true, 0x000000);
var mc_1:MovieClip = mc_1.createEmptyMovieClip("_root.gl.gl1", mc_1.getNextHighestDepth());
mc_1.attachBitmap(bmd1, mc_1.getNextHighestDepth());
var destPoint:Point = new Point(bmd1.rectangle.x, bmd1.rectangle.y);
var currPoint:Point = new Point();
currPoint.x = _root.mm.mm1._x;
currPoint.y = _root.mm.mm1._y;
if(bmd1.hitTest(destPoint, 255, currPoint)) {
trace(">> Collision at x:" + currPoint.x + " and y:" + currPoint.y);
}
Только смотрела в английском варианте и , честно говоря, не всё понятно.
Прежде чем пихать в свой код, надо разобраться с рабочим примером, понять что там и как.
А ваш код мне ни о чем не говорит.
И называть клип как "_root.gl.gl1" что это за имя? Структуру он все равно не создает, а только вносит путаницу.
А вы могли бы тогда подробнее объяснить, а то у меня какое-то недопонимание этого кода? :rolleyes:
Правильно заданный вопрос содержит в себе половину ответа.
У вас же даже не вопрос, а предложение коротенечко, минут на 70 зачитать вам основы программирования :)
Читайте хэлпы. И туторы. Их очень много.
Я этим и занимаюсь... :wacko:
Мне не понятно, почему нет пересечения объектов. :wacko:
Добавлено через 4 минуты
И про имя мувиклипа : _root.gl.gl1 - это условно. На деле предполагается название мувиклипов, определяющие их содержимое (например, дом.квартира.комната и т.д.)
Вы отлаживаете УСЛОВНЫЙ код?
Тогда вам также понадобится условный отладчик и условный компилятор ;)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.