Avatar billede sako Nybegynder
07. juli 2004 - 21:56 Der er 16 kommentarer og
1 løsning

Ingen scrollbar på "createEmptyMovieClip"

Er der nogen der ved hvordan man får en scrollbar på et MC der er oprettet med CreateEmptyMovieclip ??

Jeg har prøvet med

createEmptyMovieClip("mc", 1);
_root.mc._x = 200;
_root.mc._y = 200;
with (_root.mc)  {
    moveTo(0, 0);
    beginFill(0x0066CC);
    lineTo(20, 0);
    lineTo(20, 20);
    lineTo(0, 20);
    lineTo(0, 0);
    endFill();
}
scrollBar._x = 200;
scrollBar.setHorizontal (true);
scrollBar.setScrollProperties (1, 50, 250);
scrollBar.setChangeHandler ("mover");
function mover () {
    _root.mc._x = scrollBar.getScrollPosition();
}
Avatar billede thulstrup Nybegynder
07. juli 2004 - 23:17 #1
Det kan du ikke sådan uden videre få. Movieclips har som standard ingen scrollbar.

Enten skal du bygge din helt egen scrollbar eller også skal du benytte scrollpane komponentet som følger med flash.
Avatar billede sako Nybegynder
08. juli 2004 - 08:03 #2
har du et eksempel på scrollpane - da jeg ikke rigtigt kan få det til at virke?
Avatar billede thulstrup Nybegynder
08. juli 2004 - 09:00 #3
Prøv at læse artiklen her:
http://www.ultrashock.com/tutorials/flashmx2004/ui-components14.php

Det følger også nogle source files med til artiklen, du kan kigge på:
http://www.ultrashock.com/tutorials/_sourcefiles/fmx2004-ui-components.zip?ID=0

Hvis du bagefter stadig har spørgsmål, spørger du bare igen :o)
Avatar billede sako Nybegynder
08. juli 2004 - 09:17 #4
kan godt se det ikke er noget problem i MX 2004 - men jeg har kun MX (skulle jeg nok lige have nævnt) - og der kan jeg ikke lige se hvor man sætter contentPath -ellers tak for linket...
Avatar billede sako Nybegynder
08. juli 2004 - 09:33 #5
hmm synes kun jeg kan få det til at virke hvis jeg har et MC i libary - som bliver lavet linkage.....
Avatar billede thulstrup Nybegynder
08. juli 2004 - 09:40 #6
Ahh lille væsentlig detalje :o)

Træk et scrollpane ud på scenen og slet det igen.
Find dit scrollpane i library (ctrl+l for at åbne), det ligger nok i mappen 'Flash UI Components'.
Højre klik, vælg 'linkage', slå export for 'actionscript' til, skriv 'FScrollPaneSymbol' i 'identifier' feltet. Klik ok.

FScrollPane_sp = attachMovie("FScrollPaneSymbol", "FScrollPane", 90, {_x:100, _y:50});
FScrollPane_sp.setVScroll(auto);
FScrollPane_sp.setHScroll(false);
FScrollPane_sp.setSize(500, 400);
FScrollPane_sp.boundingBox_mc._visible = 0;
FScrollPane_sp.setScrollContent("mitMc");

mitMc er et movieclip i dit library med identifier navnet 'mitMc'.

Håber det hjalp.
Avatar billede sako Nybegynder
08. juli 2004 - 09:46 #7
det virker ok - problemet er bare at mit MC blive oprettet via createEmptyMovieClip - det kan man vel ikke lave linkage ?.
Avatar billede thulstrup Nybegynder
08. juli 2004 - 09:57 #8
Nej, det tror jeg ikke man kan. Istedet kan du skrive koden inde 'mitMc', og så sætte det mc som content.

createEmptyMovieClip("mc", 1);
with (mc) {
    moveTo(0, 0);
    beginFill(0x0066CC);
    lineTo(200, 0);
    lineTo(200, 200);
    lineTo(0, 200);
    lineTo(0, 0);
    endFill();
    _x = 200;
    _y = 200;
}
_root.FScrollPane_sp.refreshPane();
Avatar billede sako Nybegynder
08. juli 2004 - 10:16 #9
Hmmmmm - mit indlæg i starten var bare et eksempel - så glem det med at den skal fylde et MC med farve...

Det der rent faktisk sker er:

content = new Array();
content = [["Raider", 10, 1, 1234],["Mars", 10, 1, 54334],["Bounty", 18, 1, 98877]];
function showtext(){
this.createEmptyMovieClip("myImage",1000);
this.setScrollTarget("myImage");
myImage._x = 0;
myImage._y = 0;
//myImage._height = 500;
var nr = content.length;
for(j=0;j<nr;j++){

var ycor = (30*j)+100;
myImage.createTextField("mytext"+j,j+100,0,ycor,200,17);
tf = new TextFormat();
tf.font = "Verdana";
tf.size = "10";
tf.bold = true;
myImage["mytext"+j].text = content[j][0];
myImage["mytext"+j].setTextFormat(tf);

//--------
var ycorprice = (30*j)+111;
myImage.createTextField("myprice"+j,j+200,0,ycorprice,200,17);
myImage["myprice"+j].text = "Pris:"+content[j][1];
ts = new TextFormat();
ts.font = "Verdana";
ts.size = "10";
myImage["myprice"+j].setTextFormat(ts);

//-----
myImage.createTextField("mynumber"+j,j+300,150,ycor,200,17);
myImage["mynumber"+j].text = "Antal:"+content[j][2];
myImage["mynumber"+j].setTextFormat(tf);


}
}

Det vil sige at der bliver oprettet et MC med navnet myImage - den skal jeg have en scrollbar på.

Ved ikke om der er en bedre måde at gøre det på????

Jeg skal nok smide nogle flere points hvis du gider blive ved med at hjælpe....
Avatar billede thulstrup Nybegynder
08. juli 2004 - 10:39 #10
Fremgangsmåden er den samme:
-Smid din kode ind i 'mitMc'.
-Sæt 'mitMc' som scroll Content til dit scrollPane

'myImage' vil så blive oprettet inde i 'mitMc' og der vil derfor komme scrollbar på.

Du skal bare lige huske at køre en:
_root.FScrollPane_sp.refreshPane();
, når du laver ændringer i indholdet.
Avatar billede sako Nybegynder
08. juli 2004 - 11:02 #11
ja selvfølgelig - kanont
jeg har lige smidt nogle flere point - lig et svar....

Mange tak!!
Avatar billede thulstrup Nybegynder
08. juli 2004 - 11:06 #12
Godt at du fik det til at virke :)
Avatar billede sako Nybegynder
08. juli 2004 - 12:31 #13
Det hele virker fint nu - jeg har lige et sidste spørgsmål. Før aktiverede jeg en function for at skrive mit array ud - den funtion ligger nu i MCèt - kan man ikke aktivere en funtion der ligger i et MC fra root ?  - jeg har midlertidigt løst det ved at lave en onEnterFrame = function - men ved ikke om den bruger for meget krudt på at stå og tjekket hele tiden om der er tilføjet noget til arrayet....??  - herefter bliver spørgsmålet afsluttet :o)
Avatar billede thulstrup Nybegynder
09. juli 2004 - 11:50 #14
Hvis du vil aktivere funktionen fra din root, skal du checke hvornår 'mitMc' er blevet sat til at være content i dit scrollPane. Det kan du gøre ved at tilføje følgende til 'mitMc':
_root.init();


I din root skal du så tilføje denne funktion som kalder showtext funktionen i 'mitMc':
init = function () {
    var content_mc = FScrollPane_sp.getScrollContent();
    content_mc.showtext();
};


Det bliver lidt dobbelt arbejde, da du også bare kan kalde showtext funktionen direkte inde i mitMc.
Avatar billede sako Nybegynder
09. juli 2004 - 13:10 #15
mange tak det virker fint - skal man undgå at bruge onEnterframe - tager det for mange resourcer ?
Avatar billede thulstrup Nybegynder
09. juli 2004 - 13:22 #16
Det kommer an på hvad der sker i din onEnterFrame. Der vil selvfølgelig være forskel på om du flytter rundt på en masse grafik eller om du laver et par udregninger.

Du må selvfølgeligt godt benytte dem, men hvis du kan undgå at bruge dem, så gør det, da det vil bruge unødig processorkraft.

Og når du bruger dem, så husk at slette dem igen, når du er færdig med at benytte dem, f.eks:

var i = 0;
this.onEnterFrame = function() {
    i++;
    trace(i);
    if (i>=50) {
        delete this.onEnterFrame;
    }
};
Avatar billede sako Nybegynder
09. juli 2004 - 13:54 #17
cellb10ck jeg takker mange gange for dine svar og tålmodighed - der kommer ikke mere i denne tråd :-)
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