Показать сообщение отдельно
Старый 26.07.2010, 18:43
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 4  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Возможно, мышка попадает на С, или на А, тем самым теряется фокус с B и срабатывает событие MOUSE_OUT
вообще чтобы что-то сказать точно, лучше видеть весь код.
А так есть пара вариантов обойти проблему:
1) поиграть с расположением А и С. То есть, чтобы их координаты были не строго равны координатам мышки, а, к примеру,
Код AS3:
C.x=stage.mouseX-5;
2) либо создать функцию, которая будет проверять через определенные промежутки времени положение мышки и задать область, в которой будет видна С. Примерно так:

Код AS3:
var eventTimer:Timer = new Timer(200); //задаем таймер в миллисекундах (1000мл = 1 сек.)
var mx:Number;
var my:Number;
eventTimer.addEventListener(TimerEvent.TIMER, Cvisible);
eventTimer.start();
 
private function Cvisible(e:TimerEvent):void
{
    mx = stage.mouseX;
    my = stage.mouseY;
 
//задаем область, а которой будет видно С. Так как эта облать напрямую зависит от В, 
//то ориентируемся на него. Будет работать правильно, только если то, что находится 
//внутри символа В имеет координаты х=0, у=0;
 
    if((mx>B.x)&&(mx<(B.x+B.width))&&(my>B.y)&&(my<(B.y+B.height))) 
    {
        C.visible = true; //тут адекватнее использовать свойство visible, а не alpha
    } else {
                 C.visible = false;
             }
    e.updateAfterEvent(); //Эту строчку не забыть, без неё таймер не будет обновляться.
}
но вообще лучше первый вариант)


Последний раз редактировалось ZergMaster; 26.07.2010 в 18:46.