Avatar billede simonadrian Nybegynder
18. juli 2008 - 14:23 Der er 6 kommentarer

Hvordan gør man information i en funktion til en global variabel

Jeg har brug for en oplysning om teksthøjden i en showtip for at bruge den i drawrectangel:

square_mc.onRollOver = function() {
                showTip(someXmlText);
}

function showTip(str) {
      container.toolTip.tipText.text = str;
      autoHeight = container.toolTip.tipText.textHeight;    //Jeg har brug for autoHeight i drawRoundeRectangel nedenfor      container.toolTip._visible = true;
      container.toolTip._x = _root._xmouse;
      container.toolTip._y = _root._ymouse;
              onMouseMove = function () {
            container.toolTip._x = _root._xmouse;
            container.toolTip._y = _root._ymouse;
        updateAfterEvent();
    }
}

drawRoundedRectangle(container.toolTip, ttWidth, autoHeight, 16, 0x99FF00, 100);

Jeg har prøvet at deklarer autoHeight ovenover. Jeg har forsøgt med _global.autoHeight = container.toolTip.tipText.textHeight;

Hvad skal jeg gøre.
Avatar billede w13 Novice
18. juli 2008 - 14:28 #1
Jeg forstår ikke, hvad problemet er?
Avatar billede w13 Novice
18. juli 2008 - 14:31 #2
Du kan vel gøre det til en global variable sådan her:

square_mc.onRollOver = function() {
                showTip(someXmlText);
}

autoHeight = 0;
function showTip(str) {
      container.toolTip.tipText.text = str;
      autoHeight = container.toolTip.tipText.textHeight;
      container.toolTip._visible = true;
      container.toolTip._x = _root._xmouse;
      container.toolTip._y = _root._ymouse;
              onMouseMove = function () {
            container.toolTip._x = _root._xmouse;
            container.toolTip._y = _root._ymouse;
        updateAfterEvent();
    }
}

drawRoundedRectangle(container.toolTip, ttWidth, autoHeight, 16, 0x99FF00, 100);

Som du også selv siger, du har prøvet. Problemet er vel, at drawRoundedRectangle ikke ligger i en funktion, så den bliver udført ved start. Når du så ændrer autoHeight, sker der jo ikke noget, for RoundedRectangle er allerede blevet tegnet! Derfor må du enten tegne den på ny eller finde en måde at ændre dens autoHeight på!
Avatar billede simonadrian Nybegynder
18. juli 2008 - 16:07 #3
Jo men hvordan går jeg ind og ændrer i et funktionskald. Sådan her:

drawRoundedRectangle(container.toolTip, ttWidth, autoHeight, 16, 0x99FF00, 40);
drawRoundedRectangle._height = autoHeight;

ville jo være dejligt nemt, men det duer jo ikke.
Avatar billede w13 Novice
18. juli 2008 - 16:52 #4
Nej, jeg ved heller ikke hvordan du ændrer rektanglen, når først den er tegnet, men du kan i hvert fald ikke ændre i et funktionskald, der jo _er_ blevet kørt.
Avatar billede simonadrian Nybegynder
18. juli 2008 - 19:40 #5
Nu har jeg taget drawRoundedRectangle(container.toolTip, ttWidth, autoHeight, 16, 0x99FF00, 40); ind i showTip-funktionen og det fungerer for så vidt at den viser sig i den rigtige højde, men desværre så ændrer den sig ikke.
Jeg mangler en måde at unloade funktionen i hideTip-funktionen.
Jeg kan ikke bare ændre parametrene til 0 - hvorfor kan jeg ikke lige regne ud.
Avatar billede -nexus- Nybegynder
19. juli 2008 - 10:18 #6
hvis du skal erklære variablen som global er det rigtig nok at du siger _global.autoheight = "værdi";  men når du skal fange den igen skal du igen bruge navnet _global.autoheight for der er forskel på _global.autoheight & autoheight

det er vist her i denne tutorial har selv lige brugt det....

håber at det kan hjælpe dit spøtgsmål

http://www.tutorialized.com/view/tutorial/Global-Variables/4937

-Nexus-
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester