hit test / attachtMovie / schnittmengenproblem

  • Ich habe drei mcs: grun, blau, rot, wenn sie sich überschneiden sollen sie in ihrer Schnittmenge eine Farbmischung simulieren, dazu rufe ich zwei mcs dynamisch auf, eine Maske um den neuen Farbwert zu setzten und einen als Ersatz für den maskierten mc, an den die Maske angehängt wird. Das klappt zwischen jeweils zwei Farben gut, die haben die gleiche Größe und "überlagern" sich nur in der Schnittmenge. Problematisch wirds bei drei sich überschneidenden mcs, die in der Schnittmenge (nur in der Schnittmenge) aller drei Farben weis ergeben sollen. Die Schnittmenge müßte "mitwachsen" und beim verlassen der MCs wieder kleiner werden. Kann mir jemand helfen?
    Gruß Eva

    /*
    p_name: Ersatz MC für die orginale, maskierte Instanz

    */
    stop();
    speed =1;
    mix.onEnterFrame = function (){
    if (grun._x<0)
    {
    speed=-1;
    }
    if (grun._x>100)
    {
    speed=+1;
    }
    grun._x-=speed;
    blau._x-=speed*1.5;
    rot._x+=speed;
    //schnittmenge weis
    if(blau.hitTest(grun)&& blau.hitTest(rot)&& grun.hitTest(rot)){
    attachMovie("dyn", "weis", 101);
    attachMovie("dyn", "p_weis", 102);
    var farbeweis = new Color(weis);
    farbeweis.setRGB(0xFFFFFF);
    weis._x = grun._x;
    weis._y = grun._y;
    p_weis._x = rot._x;
    p_weis._y = rot._y;
    weis.setMask(p_weis);
    }
    else{
    removeMovieClip(weis);
    removeMovieClip(p_weis);
    }

    //beginn der schnittmenge: pink
    if(blau.hitTest(rot)){
    attachMovie("dyn", "p_rot", 22);
    var farbepink = new Color(pink);
    attachMovie("dyn", "pink", 23);
    farbepink.setRGB(0xFF00FF);
    pink.setMask(p_rot);
    p_rot._x = rot._x;
    p_rot._y = rot._y;
    pink._x = blau._x;
    pink._y = blau._y;
    }
    else{
    removeMovieClip(pink);
    removeMovieClip(p_rot);
    }
    //beginn der schnittmenge: tuerkis
    if(blau.hitTest(grun)){
    attachMovie("dyn", "p_turk", 30);
    var farbeturk = new Color(turk);
    attachMovie("dyn", "turk", 31);
    farbeturk.setRGB(0x00FFFF);
    turk.setMask(p_turk);
    p_turk._x = grun._x;
    p_turk._y = grun._y;
    turk._x = blau._x;
    turk._y = blau._y;
    }
    else{
    removeMovieClip(turk);
    removeMovieClip(p_turk);
    }
    //beginn der schnittmenge: gelb
    if(grun.hitTest(rot)){
    attachMovie("dyn", "p_gelb", 10);
    var farbegelb = new Color(gelb);
    attachMovie("dyn", "gelb", 11);
    farbegelb.setRGB(0xFFFF00);
    gelb.setMask(p_gelb);
    p_gelb._x = rot._x;
    p_gelb._y = rot._y;
    gelb._x = grun._x;
    gelb._y = grun._y;
    }
    else{
    removeMovieClip(gelb);
    removeMovieClip(p_gelb);
    }
    }