Avatar billede schou Nybegynder
06. oktober 2004 - 12:43 Der er 5 kommentarer

hvordan gøres en attachMovie dragable?

Mit spørgsmål går på hvordan man får et movieclip fra sit libary til at have nogle funktioner, som f.eks. drag, når det bliver kopieret med attachMovie.

Kan man evt. lave en Class?

schou
Avatar billede _k Nybegynder
06. oktober 2004 - 12:59 #1
Du kan smide drag-koden ind i tidslinjen på dit mc. Når du derefter attacher mc'et fra librariet, ryger koden med, og så er den papegøje skudt ned!

Syntaktisk ser det nogenlunde sådan her ud:

this.onPress = function() {
    this.startDrag();
    };
this.onRelease = function() {
    this.stopDrag();
    };
this.onReleaseOutside = function() {
    this.stopDrag();
    };
Avatar billede thulstrup Nybegynder
06. oktober 2004 - 13:03 #2
Eller også kan du kalde en funktion, med dine onPress, onRelease osv. i.
F.eks:


mcFunctions = function (mc) {
    mc.onPress = function() {
        this.startDrag();
    };
    mc.onRelease = function() {
        this.stopDrag();
    };
    mc.onReleaseOutside = function() {
        this.stopDrag();
    };
};
var x = 0;
var y = 0;
for (var i = 0; i<25; i++) {
    x = i%5 == 0 ? 0 : x+55;
    y = i%5 == 0 ? y+55 : y;
    this.attachMovie("mc", "mc"+i, i, {_x:x, _y:y});
    mcFunctions(this["mc"+i]);
}
Avatar billede barklund Nybegynder
06. oktober 2004 - 13:13 #3
Skal vi nu ikke liiige være enige om, at man kan nøjes med:

onPress = startDrag;
onRelease = onReleaseOutside = stopDrag;

Det er lidt kortere, lidt hurtigere og lidt kønnere :)

Men du kan også lave det med en klasse. Det vil have den fordel, at hvis du attacher samme movieclip flere gange, så vil nedenstående alligevel kun eksekvere én gang:

#initclip 1
function Draggable() {};
Draggable.prototype.__proto__ = MovieClip.prototype;
Draggable.prototype.onPress = MovieClip.prototype.startDrag;
Draggable.prototype.onRelease = MovieClip.prototype.stopDrag;
Draggable.prototype.onReleaseOutside = MovieClip.prototype.stopDrag;
Object.registerClass("mit_linkage_navn", Draggable);
#endinitclip

Dette er skrevet til Flash 6 og Flash 7 med ActionScript1. Bruger du Flash 7 og ActionScript2, så skal det laves som en rigtig klasse og så må du lige sige til. :)

--
Morten Barklund
Avatar billede schou Nybegynder
02. marts 2005 - 17:16 #4
er ved at lukke gamle spørgsmål...
barklund:
jeg synes dit svar er det bedste. jeg endte med at lave en klasse.
svar så får du point næste gang jeg kigger forbi...

schou
Avatar billede barklund Nybegynder
02. marts 2005 - 17:22 #5
Helt i orden ;)
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