![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2007
Сообщений: 82
|
Задача: есть много мувиклипов разной формы, все проименованы от q1 ... q500. По клику они должны закрашиваться в определенный цвет. Чтобы было удобнее, можно зажать конпку мыши протащить курсор по нужным объектам.
Исходник и swf в аттаче. Я сделал это, но нельзя закрасить все сразу, только по 10 за раз. Жмем пробел, счетчик увеличивается на 10, и мы можем закрасить еще 10 штук. Это ограничение я поставить не могу. Функция работает через onMouseDown, проверяет на hitTest, поэтому декремент срабатывает даже когда я двигаю мышь в пределах одного и того же мувиклипа, и все "заряды" с легкостью уходят на один мувик. Есть идеи как это исправить? numOfSq = 10; function fillColor() { for (i = 1; i < 87; i++) { if (_root['q' + i].hitTest(_root._xmouse, _root._ymouse, true) && numOfSq != 0) { _root['c' + i].setRGB(color); //numOfSq--; } } } // Вешаем цвета на кнопки keyer = new Object(); keyer.onKeyDown = function() { if (Key.getAscii() == ord('q')) { color = 0xff0000; } if (Key.getAscii() == ord('w')) { color = 0x00ff00; } if (Key.getAscii() == ord('e')) { color = 0x0000ff; } if (Key.getCode() == Key.SPACE) { numOfSq+=10; } }; Key.addListener(keyer); // Создаем переменные вида c_1, c_2... для объектов q_1, q_2... for (i = 0; i < 87; i++) { this['c' + i] = new Color(this['q' + i]); } // Запускаем нашу функцию по клику мышью onMouseDown = function () { fillColor(); onMouseMove = function () { fillColor(); }; }; //Убираем закрашивание, если кнопка мыши отпущена onMouseUp = function () { delete onMouseMove; };
__________________
Прежде чем создавать новый трэд, лучше лишний раз глянуть в дебаггер |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 13
|
Думаю можно по нажатию на кнопку мыши вызвать setInterval и потом проверять к примеру каждые 100 миллисекунд находится ли курсор над клипом и закрашивать этот клип. По отпусканию кнопки - clearInterval. Не уверен, что это лучшее решение, но можно попробовать.
Последний раз редактировалось S.Petrov; 19.08.2010 в 17:18. |
|
|||||
|
Регистрация: Sep 2007
Сообщений: 82
|
Я не мог определить с каким именно объектом хиттестит мышка, потому что вешаю функцию через цикл сразу на много объектов (с классами толком работать не умею).
Сейчас придумал ввести новую переменную, которая содержит текущий объект, который легко найти по i внутри hitTest - там уже нужный мне, а не 1-86, т.к. хиттестится с одним объектом одновременно. Вот измененная функция, если кому то потребуется похожая:
__________________
Прежде чем создавать новый трэд, лучше лишний раз глянуть в дебаггер |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 205
|
а сохранять предыдущий объект который был уже закрашен религия не позволяет? и при чем тут ваше умение или неумение работать с классами?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|