PDA

Volledige versie bekijken : FMX2004PROF - Mouse on/off stage


ocdaan
%Europe/Berlin %605 %2005, 15:32
Hoi allemaal,

Ik heb dit al eens eerder gevraagd maar heb nog nooit een fatsoenlijke oplossing gevonden voor het volgend probleem:

Ik laat een control panel verschijnen dmv de volgende code: (verkort)

if(_root._ymouse > 177){
cpGoUp = true;
}else{
cpDownUp = true;
}

Wanneer de muis uit die regio verdwijnd (en uit de movie zelf - in de browser) dan moet het control panel weer inklappen maar die blijft natuurlijk netjes staan.

De _root._ymouse waarde blijft vrolijk op de laaste bekende waarde hangen. Ik weet dus nooit wanneer de muis op de flash movie staat of niet.

Ik heb al eerder een javascript functie gemaakt die dan het een en ander aan flash doorgeeft maar dat was ook geen succes....

Hoe lossen de mede forum members dit op? Ben erg benieuwd want hier loop ik eingelijk al jaren mee te worstelen....

Pimm
%Europe/Berlin %729 %2005, 18:29
Je bedoelt dat die waarde (_root._ymouse) niet vernieuwd? Dan moet je een interval gebruiken:function checkmouse() {
if(_root._ymouse > 177){
cpGoUp = true;
}else{
cpDownUp = true;
}
};
setInterval(checkmouse, 100);(uit m'n hoofd, dus vooral in die laatste regel kan een foutje zitten)

Edit: er zat dus inderdaad een foutje in.

Laiverd
%Europe/Berlin %830 %2005, 20:55
Hangt een beetje van de situatie en het design af, maar wat ik niet zelden gebruik is een 5-10px breder rand rondom de hele movie, die een hotspot is, en als de muis daaroverheen gaat wordt een rollover getriggered. Werkt i.h.a. heel goed. Wat ik ook wel eens doe is met setInterval 1x per zoveel tijd checken of de muis zich nog binnen de movie bevindt.

John

mateo)
%Europe/Berlin %998 %2005, 00:57
Dit is inderdaad een probleem ja. Het blijft gek dat flash geen ingebouwde blur en focus events heeft voor de main movie (en als die er wel zijn, laat iemand dat dan SNEL zeggen). Met dit scriptje kan je de 'muisgevoeligheid' van flash checken. Ik heb de marge nu op 20 gezet, maar zelfs dat is niet genoeg als je snel met je muis van het filmpje beweegt. Probeer het maar eens: Zet een textfield op de stage met als instance name fld en drop dit scriptje op het eerste frame van de main time line.

var margin:Number = 20;
var xmax:Number = Stage.width - margin;
var ymax:Number = Stage.height - margin;
_root.onMouseMove = function():Void{
if(_xmouse >= xmax || _xmouse <= margin || _ymouse >= ymax || _ymouse <= margin)
fld.text = "off";
else
fld.text = _xmouse + " X " + _ymouse;
}

ocdaan
%Europe/Berlin %410 %2005, 10:51
Hangt een beetje van de situatie en het design af, maar wat ik niet zelden gebruik is een 5-10px breder rand rondom de hele movie, die een hotspot is, en als de muis daaroverheen gaat wordt een rollover getriggered. Werkt i.h.a. heel goed. Wat ik ook wel eens doe is met setInterval 1x per zoveel tijd checken of de muis zich nog binnen de movie bevindt.

John

Ja klopt helemaal, als je de muis niet te snel uit de movie verschuift... maar in sommige siuaties heb je geen marge over om een rand eromheen te zetten.

ocdaan
%Europe/Berlin %412 %2005, 10:53
Ik wist het stiekem wel, er is gewoon geen oplossing voor, snap echt niet dat MacroMedia dit nooit eerder heeft opgelost.