PDA

Просмотр полной версии : Мой курсор


Zanha
14.02.2007, 18:23
Я пробую сделать курсор, который, во-первых, при наведении на объект, меняет свой вид и во-вторых, сам объект выделяется. Всё, почти работает, но при медленном наведении на один объект,иногда подсвечиваются сразу два.
А мне хочется 100% адекватный курсор.
Полагаю, что в данном случае проще просмотреть
исходник. (http://http://www.flasher.ru/forum/attachment.php?attachmentid=16522&stc=1&d=1171462573)(10,7 Кб)
Для тех, кто предпочитает смотреть код:

strela.onEnterFrame = function() {
this._x = _xmouse;
this._y = _ymouse;
};
K.onEnterFrame = function() {
i = 1;
while (i == 1) {
i = 2;
if (strela.gran1.hitTest(Obekt1) || strela.gran2.hitTest(Obekt1) || strela.gran3.hitTest(Obekt1) || strela.gran4.hitTest(Obekt1)) {
strela.gotoAndStop(2);
// Меняет внешность курсора
Obekt1.vdlLamp.gotoAndPlay(2);
//Меняет внешность объекта
onMouseDown = function () {
Obekt1.play();
//При клике объект реагирует
};
break;
}
//Далее аналогичный алгоритм для 2-х остальных объектов
if (strela.gran1.hitTest(Obekt2) || strela.gran2.hitTest(Obekt2) || strela.gran3.hitTest(muzik) || strela.gran4.hitTest(Obekt2)) {
strela.gotoAndStop(2);
Obekt2.vdMaf.gotoAndStop(2);
onMouseDown = function () {
Obekt2.play();
};
break;
}
if (strela.gran1.hitTest(Obekt3) || strela.gran2.hitTest(Obekt3) || strela.gran3.hitTest(Obekt3) || strela.gran4.hitTest(Obekt3)) {
strela.gotoAndStop(2);
Obekt3.vdlKoshka.gotoAndStop(2);
onMouseDown = function () {
Obekt3.play();
};
break;
}
// Если курсор ничего не касается, то-
onMouseDown = function () {
};
Obekt2.vdMaf.gotoAndStop(1);
strela.gotoAndStop(1);
Obekt1.vdlLamp.gotoAndPlay(1);
Obekt3.vdlKoshka.gotoAndStop(1);
}
};
[iNils: Для оформления своего кода, надо использовать теги ]

aksios
14.02.2007, 18:49
Внутрь курсора положить еще один объект размером 1 пиксель и уже для него пользовать hitTest.

LeXi42006
14.02.2007, 19:05
А чем onRollOver не устраивает?

Zanha
15.02.2007, 17:09
Нужно сделать что бы увеличилась активная зона курсора.
Код работает, но с указанным выше глюком. Подскажите,
как решить такую задачу.

LeXi42006
15.02.2007, 22:17
Надеюсь, это подойдет?

Zanha
16.02.2007, 16:00
Да, это прошло. Спасибо, за помощь.
И в то же время нужно что бы когда курсор любой частью большого
острия пересекается с объектом - прикосновение состоялось.
Самое загадочное в моём коде, заключается в следующем.
Команда для мыши
onMouseDown = function ( ) { Obekt1.play(); };

и для выделения предмета Obekt2.vdMaf.gotoAndStop(2);

написаны рядом, код для мыши работает прилично, код для выделения
глюкавит. Что странно.

LeXi42006
16.02.2007, 16:42
Исходник выкладывайте и пишите что не так подробно

Zanha
17.02.2007, 01:40
исходник (http://www.flasher.ru/forum/attachment.php?attachmentid=16538&stc=1&d=1171661705)

Когда наводим мышь на Obekt2, иногда выделяется Obekt1.