![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2006
Сообщений: 8
|
Привет всем.
Есть скрипт, который после второго клика пользователя по мувику "field" рисует стрелку по двум координатам. После создания пытаюсь определить стрелке событие onPress, но ничего не получается. Подскажите, как можно отследить это событие. Actions для клипа "field": on (press) { // рисование стрелки function Arrow(objName:String, x1:Number, y1:Number, x2:Number, y2:Number, color, alpha) { if(color == undefined) color = 0x000000; if(alpha == undefined) alpha = 100; var mc:MovieClip = _root.field.createEmptyMovieClip( objName, _root.field.getNextHighestDepth()); mc.lineStyle(2, 0, 100); mc.moveTo(x1, y1); mc.lineTo(x2, y2); // рисуем стрелку на конце линии var arrow:MovieClip = mc.attachMovie( "arrowHead", "arrowHead", 0 ); arrow._x = x2; arrow._y = y2; arrow._rotation = Math.atan2(y2 - y1, x2 - x1 ) * ( 180 / Math.PI ); // пытаемся определить функцию для события клика по стрелке // этот вариант не работает mc.onPress = function():Void { trace(1); } // этот тоже var listener:Object = {}; listener.onPress = function():Void { trace(1); } mc.addListener(listener); return mc; } /* Если включен режим рисования стрелок */ if(_root.drawMode) { // первый клик if(_root.c.length == 0) { // запоминаем координаты _root.c[0] = [_root.field._xmouse, _root.field._ymouse]; } // второй клик else if(_root.c.length == 1) { // запоминаем координаты _root.c[1] = [_root.field._xmouse, _root.field._ymouse]; // массив со стрелками var ArrowName:String = "arrow" + _root.arrows.length; _root.arrows.push(ArrowName); // рисуем стрелку _root.arrows[ArrowName] = Arrow(ArrowName, _root.c[0][0], _root.c[0][1], _root.c[1][0], _root.c[1][1]); // очищаем координаты _root.c = new Array(); // функция отключает режим рисования _root.toogleDrawMode(); } } } // _root.c - массив с координатами стрелки |
|
|||||
|
listener
|
// этот тоже var listener:Object = {}; listener.onPress = function():Void { trace(1); } mc.addListener(listener); А это работает. Вообще, код рабочий. Проверьте вызовы, объекты, где-то у вас засел жучок. |
|
|||||
|
Регистрация: Aug 2006
Сообщений: 8
|
Я в тупике. Уже себе мозг вывихнул
Сам понимаю, что должно работать, но ошибки найти не могу. Дайте намёк, где и что искать. К посту прилагаю исходник. |
|
|||||
|
Регистрация: Aug 2006
Сообщений: 8
|
В ходе изучения обнаружил вот какую вещь.
Стрелки рисуются на клипе field, у которого уже назначено событие onPress. Это событие перекрывает событие стрелки. |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 528
|
Цитата:
Лично я решал эту проблему через hitTest. Кстати, любопытно, есть ли какой-то другой способ? |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
Для АС2 есть только костыли и чОткое планирование классов и экземляров.
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Aug 2006
Сообщений: 8
|
Неохота переписывать все на AS3, к изучению которого я еще не приступал. Я тут еще обнаружил, что событие onMouseMove работает глобально и не может быть назначено для конкретного мувика. Вообщем, укладываюсь спать удрученным.
Попробую повозиться с hitTest (спасибо Stargazer). Если не выйдет, буду мурыжить AS3. Всем спасибо. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
Я хотел, и добился у начальства разрешения переписать 15 000 строчек на as1 в классы as2 (22 000) а затем в as3 (..пока неизвестно.) Уломать себя я думаю проще.
__________________
Отряд Котовскага |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|