Avatar billede radoor Nybegynder
26. januar 2005 - 10:26 Der er 10 kommentarer

Resize flash + 100% i browser

Hejsa

Jeg har lige et spg. ang resize.

Tjek denne side for mit spørgsmål:
http://www.zincroe.com/

Hvordan dælan gør man det? flashen fylder 100% ud, det ved jeg godt hvordan man gør, men hvordan får man den overliggende main film til at følge med når man resizer browservinduet?

Og er dette eksempel iøvrigt én flash film.. eller 2? ligger baggrunden mon for sig selv med et overliggende swf som main?

De bedste hilsner..
/Radoor
Avatar billede barklund Nybegynder
26. januar 2005 - 10:33 #1
1 fil.

Du sætter den til 100% i HTML'en, du skriver i din fil:

Stage.scaleMode = "noScale";
Stage.align = "TL";

Herefter kan du registrere ændringer af scenens størrelse med:

Stage.onResize = function() {
    trace("scenen er nu "+Stage.width+" x "+Stage.height);
}

Og så kan du i denne funktion re-aligne dine elementer på skærmen - for eksempel flytte et movieclip ind i midten, vandret:

Stage.onResize = function() {
    mit_mc._x = Stage.width / 2;  // hvis movieclippets registreringspunkt er i midten
}

Eller hvordan dine elementer nu skal hoppe rundt, når skærmstørrelsen ændres :)

--
Morten Barklund
Avatar billede radoor Nybegynder
26. januar 2005 - 10:46 #2
Hey... fedt:)

Skal vi lige prøve at "pappe" det ud.

Altså:
Jeg har en flash fil feks. 700x500. Her er alt min indhold til sitets osv.
Jeg vil gerne ha bagrunden fylder 100% ud.. selve sitet med indhold osv skal jo så kun være de 700x500.

"Du sætter den til 100% i HTML'en, du skriver i din fil:"
- er det den importeret swf fil jeg sætter til 100% i Width + hight

Dette sætter jeg så på en given frame i flash'en?
Stage.scaleMode = "noScale";
Stage.align = "TL";

Alle de tag's osv du har skrevet foregår i flash ik? på samme film?

/radoor
Avatar billede barklund Nybegynder
26. januar 2005 - 10:51 #3
Du har hele dit site i et movieclip. Ikke direkte på din scene, men prop det hele ind i et movieclip. Dette movieclip kan så flyttes rundt.

Ude på din scene har du din baggrund liggende. Den starter oppe i hjørnet og fylder ellers bare derudaf til en stor browserstørrelse. Hvis baggrunden skal skalere, så skal den bare fylde baggrundens størrelse.

Ovenstående scripts ligger du i en tredje frame ude i din root.

Altså i root har du 1 frame med 3 layers:

layer 1: actionscript (ovenstående)
layer 2: hele dit site inde i et movieclip
layer 3: hele din baggrund - evt. i et movieclip (hvis den skal skaleres)

Det er sådan set ret nemt.

--
Morten Barklund
Avatar billede radoor Nybegynder
26. januar 2005 - 11:18 #4
Ja det lyder jo ret nemt?

Men kan sgu ikke få selve sitet (layer 2) til at følge med når jeg skalerer browseren
Er det her rigtigt sat op?
http://www.radoor.biz/resize/barklund.zip
radoor
Avatar billede barklund Nybegynder
26. januar 2005 - 12:43 #5
Jeg har ikke lige flash på den arbejdsmaskine, jeg sidder på pt. Hvilket script har du lavet til at centrere dit site (i layer 2) i en onResize event handler som jeg nævnte ovenfor? Uden dette script sker der selvfølgelig ikke noget, når man resizer - man skal selv scripte handlingen :)
Avatar billede radoor Nybegynder
26. januar 2005 - 12:45 #6
Ok fint nok.. kan du skrive hvilken handling jeg skal indtaste?
Avatar billede barklund Nybegynder
26. januar 2005 - 13:55 #7
Ovenover skrev jeg jo for eksempel, at hvis mit_mc har sit registreringspunkt i midten og skal flyttes ind i midten af hele scenen, når scenen ændrer størrelse, så gøres det som:

Stage.onResize = function() {
    mit_mc._x = Stage.width / 2;  // hvis movieclippets registreringspunkt er i midten
}

Det betyder selvfølgelig, at dit site skal ligge i et movieclip med instance navnet mit_mc - eller skifte det ovenover.

Men det har jeg jo nævnt, så det har du vel læst? :)

--
Morten Barklund
Avatar billede kragekjaer Praktikant
26. januar 2005 - 17:12 #8
du mangler lige en eventListner, her som det skal se ud:

myAlignment = new Object();
Stage.addListener(myAlignment);
myAlignment.onResize = function() {
    adjustFrame();
};
function adjustFrame() {
    trace("resized");
}
Avatar billede barklund Nybegynder
26. januar 2005 - 17:18 #9
Well, that depends :)

I nogle flashplayere kan man faktisk sætte den direkte, da Macromedia fejlagtigt antydede dette i hjælpen til Flash MX - så valgte de at understøtte det. Jeg har bare haft for vane at bruge den korte syntaks.

Der er nu ingen grund til at lave et nyt objekt eller et ekstra funktionskald - kan jo bare skrives som:

Stage.addListener(this);
function onRessize() {
    trace("resized");
}

--
Morten Barklund :)
Avatar billede barklund Nybegynder
26. januar 2005 - 17:19 #10
men ja, kragekjaer har faktisk ret, event-modellen er afgjort den rigtigste metode at gøre det på - så ved man også, at det garanteret vil virke :)

Og det er ikke onRessize med onResize i ovenstående :)

--
Morten Barklund
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