2 simbola tipa Movie Clip, i jedan je smjesten unutar drugog te obadva imaju Event handler on(press). I kada na scenu postavim simbol 1 koji unutar sebe sadrzava simbol 2 pritiskom na podrucje simbola 2 se ne izvrsava njegov Event handler vec Event handler simbola 1. Kako postici da se izrsava Event handler simbola 2 pritiskom na njegovo podrucje?
Movie Clip Event handler
Zaključano
Zakačeno
on (press) je handler događaja simbola tipa Button.
Za instance simbola tipa MovieClip odgovarajući handler bio bi recimo onClipEvent (mouseDown). E sad, ovaj događaj se okida nezavisno od toga da li je miš nad površinom simbola, pa je dovoljno postaviti samo jedan handler na _root (jer je i to MovieClip), a za ispitivanje oblasti klika može da se koristi metoda hitTest.
Kačim primer, a evo i koda
Za instance simbola tipa MovieClip odgovarajući handler bio bi recimo onClipEvent (mouseDown). E sad, ovaj događaj se okida nezavisno od toga da li je miš nad površinom simbola, pa je dovoljno postaviti samo jedan handler na _root (jer je i to MovieClip), a za ispitivanje oblasti klika može da se koristi metoda hitTest.
Kačim primer, a evo i koda
Code:
onMouseDown = function ()
{
if (simbol1.simbol2.hitTest (_xmouse, _ymouse, true)) trace ('click over simbol 2');
else if (simbol1.hitTest (_xmouse, _ymouse, true)) trace ('just over simbol 1');
else trace ('click outside simbols');
}
onMouseDown = function ()
{
if (simbol1.simbol2.hitTest (_xmouse, _ymouse, true)) trace ('click over simbol 2');
else if (simbol1.hitTest (_xmouse, _ymouse, true)) trace ('just over simbol 1');
else trace ('click outside simbols');
}
Potpis
Ovo je Ok, no sta napravit kada je rijec o rollover dogadjaju hitTest ne pomaze.
Imam ova 2 handler-a:
i opeta kako da prelaskom preko simbola 2 se pozove drugi event handler, u mom slucaju se uvijek poziva prvi.
Imam ova 2 handler-a:
Code:
simbol1.onRollOver = function(){ trace("simbol 1"); }
simbol1.simbol2.onRollOver = function(){ trace("simbol 2"); }
simbol1.onRollOver = function(){ trace("simbol 1"); }
simbol1.simbol2.onRollOver = function(){ trace("simbol 2"); }
i opeta kako da prelaskom preko simbola 2 se pozove drugi event handler, u mom slucaju se uvijek poziva prvi.
Code:
overSimbol2 = false;
overSimbol1 = false;
onMouseMove = function ()
{ if (overSimbol2 != simbol1.simbol2.hitTest (_xmouse, _ymouse, true))
{ overSimbol2 = ! overSimbol2
; if (overSimbol1 != simbol1.hitTest (_xmouse, _ymouse, true))
{ overSimbol1 = ! overSimbol1
; if (overSimbol1)
{ trace ('over Simbol 1')
; trace ('out Simbol 1')
; trace ('over Simbol 2')
} else
{ trace ('out Simbol 2')
; trace ('over Simbol 1')
; trace ('out Simbol 1')
}
} else if (overSimbol2)
{ trace ('out Simbol 1')
; trace ('over Simbol 2')
} else
{ trace ('out Simbol 2')
; trace ('over Simbol 1')
}
} else if (overSimbol1 != simbol1.hitTest (_xmouse, _ymouse, true))
{ overSimbol1 = ! overSimbol1
; if (overSimbol1)
{ trace ('over Simbol 1')
} else
{ trace ('out Simbol 1')
}
}
}
overSimbol2 = false;
overSimbol1 = false;
onMouseMove = function ()
{ if (overSimbol2 != simbol1.simbol2.hitTest (_xmouse, _ymouse, true))
{ overSimbol2 = ! overSimbol2
; if (overSimbol1 != simbol1.hitTest (_xmouse, _ymouse, true))
{ overSimbol1 = ! overSimbol1
; if (overSimbol1)
{ trace ('over Simbol 1')
; trace ('out Simbol 1')
; trace ('over Simbol 2')
} else
{ trace ('out Simbol 2')
; trace ('over Simbol 1')
; trace ('out Simbol 1')
}
} else if (overSimbol2)
{ trace ('out Simbol 1')
; trace ('over Simbol 2')
} else
{ trace ('out Simbol 2')
; trace ('over Simbol 1')
}
} else if (overSimbol1 != simbol1.hitTest (_xmouse, _ymouse, true))
{ overSimbol1 = ! overSimbol1
; if (overSimbol1)
{ trace ('over Simbol 1')
} else
{ trace ('out Simbol 1')
}
}
}