Avatar billede ditlev Juniormester
08. april 2004 - 17:40 Der er 3 kommentarer og
1 løsning

Button funktion på flere MC'er

Hej!

Mit ønske er, at lave en serie movieclips (49 stk. i et felt på 7 x 7), der hver især kan ændre farve fra sort til hvid og omvendt, når man klikker på dem. Det er nemt at lave.
Jeg vil imidlertid gerne have en funktion, således at man med museknappen kan trykke på det første clip og med knappen nede trække musen over andre clips, så de også bliver aktiverede i samme mussetryk. Endvidere skal man hvis man bare klikker på ét clip kunne ændre det frem og tilbage mellem sort og hvid, uden at fjerne musen fra clippet.
Avatar billede mat Nybegynder
08. april 2004 - 21:02 #1
lidt af et hack (ikke perfekt) - jeg kan ikke tænke lige nu :/

_global.dragging = false;
numButtons = 4; // eller hvor mange du nu vil have
this.onMouseUp = function() {
        dragging = false;
}
for (i = 1; i <= numButtons; i++) {
    this["btn" + i].onPress = function() {
        dragging = true;
    }
    this["btn" + i].onRelease = function() {
        this.gotoAndStop(this._currentframe == 1 ? 2 : 1);
    }
    this["btn" + i].onMouseMove = function() {
        if (this.hitTest(_root._xmouse, _root._ymouse, true) && dragging) {
            this.gotoAndStop(2);
        }
    }
}

..men det kan være det kan give noget inspiration?

mvh mat
Avatar billede ditlev Juniormester
08. april 2004 - 23:15 #2
Jeg vil lige kigge på det.

For at kunne forstå projektet fuldt ud er her en arbejdsudgave som det ser ud pt.:

http://www.iq-test.dk/index8.swf

Det hele virker, på nær at man ikke kan trykke på den samme knap og skifte farve frem og tilbage. Man skal flytte til et nyt felt og tilbage for at det virker.

Der er lavet en "lytter":
lytter = new Object();
lytter.onMouseDown = function () {
_root.benny = true;
}
lytter.onMouseUp = function () {
_root.benny = false;
}
Mouse.addListener(lytter);

På movieclippet er flg. actions:
this.onEnterFrame = function () {
    if (this.hitTest(_root._xmouse, _root._ymouse) && !this.mouseover && _root.benny) {
        if (this.flag) {
            this._alpha = 0;
            this.flag = false;

        } else {
            this._alpha=100;
            this.flag = true;
            my_color = new Color(this);
            my_color.setRGB(_root.aktuelleFarve);
        }
        this.mouseover = true;   
    } else if (!this.hitTest(_root._xmouse, _root._ymouse) && this.mouseover) {
        this.mouseover = false;       
    }
}

Men man formentlig lave effekten på en anden og smartere måde.

En løsning belønnes med 200 cyperbobs og varme tanker ;o)

/Ditlev
Avatar billede ditlev Juniormester
09. april 2004 - 00:41 #3
Nå - så fandt jeg heldigvis løsningen på problemet...
Den endelige kode er blevet:

lytter = new Object();
lytter.onMouseDown = function () {
_root.benny = true;
}
lytter.onMouseUp = function () {
_root.benny = false;
}
Mouse.addListener(lytter);

På movieclippet:

this.onEnterFrame = function () {
    if (!_root.benny) {
        this.mouseover = true;
    }
    if (this.hitTest(_root._xmouse, _root._ymouse) && this.mouseover && _root.benny) {
        if (this.flag) {
            this._alpha = 0;
            this.flag = false;
        } else {
            this._alpha=100;
            this.flag = true;
            my_color = new Color(this);
            my_color.setRGB(_root.aktuelleFarve);
        }
        this.mouseover = false;   
    } else if (!this.hitTest(_root._xmouse, _root._ymouse)) {
        this.mouseover = true;       
    }
}

Den fungerende swf kan ses:

http://www.iq-test.dk/index9.swf

/Ditlev
Avatar billede ditlev Juniormester
09. april 2004 - 00:53 #4
mat - takker for forsøget, men opbygningen på de to scripts lå så langt fra hinanden, at jeg ikke rigtig kunne bruge dit forsøg til noget. Heldigvis kunne jeg løse problemet ved lidt finpusning af mit eget script, men jeg har faktisk gået og grublet over dette problem i snart en uge, så al inspiration var kærkommen ;o)
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel