Avatar billede kasseper Nybegynder
12. januar 2006 - 11:32 Der er 1 løsning

setTimeout, opacity, og simultan 'animation'

Hej

Jeg sidder og eksperimentere lidt med at lave en "animation" via javascript. Og ja, det er måske ikke det flotteste, men det er sjovt at rode med.
Så nu er jeg så ramt mod et lille problem :

Jeg har lavet 2 bokse på min side, der hver især "dimmer" når man klikker på dem. Dette er gjort via at sænke opacity/alpha filtret på boksen, med setTimeOut.

Det er der mit problem det er at JavaScript som bekendt ikke køre flere tråde, eller processer, så når jeg klikker på den første boks, og derefter på den anden(inden den første "animation" er færdig), sker der sjove ting.

Jeg har forsøgt mig med en boolsk lock, der håndtere adgangen til sleep metoden, men det virker ikke, jeg har også forsøgt mig med 2 metoder, som er ens, men som hver boks benytter, men det er heller ikke det smarteste(plus at jeg heller ikke kunne få det til at virke), jeg ville gerne gøre brug af den samme metode.

Det jeg gerne vil opnå at de dimmer samtidigt, og ikke at boks 2 først starter når den første er færdig.

Her er min kode :

<html>
<head>
<style>
DIV.dim_box
{
    width:100px;
    height:100px;
    filter: Alpha(Opacity=100);
    opacity:1.00;
}

</style>

<script>
var opacity = 100;

var speed = 20;
var currentElement;
var browserName=navigator.appName;

function dimBox(element)
{   
    currentElement = element;
   
    if (browserName=="Microsoft Internet Explorer")
    {
    document.getElementById(currentElement).style.filter='Alpha(opacity=' + opacity +')';
    }
    else
    {
    document.getElementById(currentElement).style.opacity=opacity/100;
   
    }
    opacity = opacity-1;
   
    if(opacity >= 0)   
    {
        sleep("dimBox(currentElement)",speed);
    }
    else
    {
        opacity = 100;
    }
}
function sleep(method, time)
{
    window.setTimeout(method,time);
}
</script>
</head>
<body>
Avatar billede kasseper Nybegynder
12. januar 2006 - 13:40 #1
Jeg klarede den selv, nu med mulighed for at dimme og show...

<html>
<head>
<style>
DIV.dim_box
{
    width:100px;
    height:100px;
    filter: Alpha(Opacity=100);
    opacity:1.00;
}
DIV.dim_box_II
{
    width:100px;
    height:100px;
    filter: Alpha(Opacity=0);
    opacity:0.00;
}
</style>

<script>


var speed = 20;
var browserName=navigator.appName;

function dimBox(element, direction, currentOpacity)


   
    if (browserName=="Microsoft Internet Explorer")
    {
    document.getElementById(element).style.filter='Alpha(opacity=' + currentOpacity +')';
    }
    else
    {
    document.getElementById(element).style.opacity=currentOpacity/100;
 
    }
   
    if(direction == 'down')
    {
        if(currentOpacity >= 0)
        {
            currentOpacity = currentOpacity-1;
            sleep("dimBox('" + element +"','" + direction +"', " + currentOpacity + ")",speed);
        }
     
    }
    else
    {
        if(currentOpacity < 100)
        {
            currentOpacity = currentOpacity+1;
        sleep("dimBox('" + element +"','" + direction +"', " + currentOpacity + ")",speed);
    }
    }
}
function sleep(method, time)
{
    window.setTimeout(method,time);
}
</script>
</head>
<body>


<div class="dim_box" id="red_box" style="background-color:red" onclick="dimBox('red_box', 'down', 100)"></div>
<div class="dim_box_II" id="green_box" style="background-color:green" onclick="dimBox('green_box', 'up', 0)"></div>



</body>
</html>
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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