Avatar billede flviborg Nybegynder
31. december 2004 - 10:02 Der er 18 kommentarer

Array remove, en nemt en for nogle af jer

Hej,

jeg har nogle linjer jeg bruger til at fremvise en list med navne. Jeg vil fremvise de omtalte navne, men fjerne en eller flere pga. af en betingelse.

Fx.hvis et navn starter med "A" skal det ikke fremvises,men det skal de andre navne.

Navnene vises i en movieclip med dynamic text i (instance "mcclip").

var names = new Array(6);
names[0] = "John";
names[1] = "Alfred";
names[2] = "Jose";
names[3] = "Carlos";
names[4] = "Sen";
names[5] = "Jim";


for (i=1; i<=6; i++) {
        mclip.duplicateMovieClip("mclip"+(i+0), +i);
        height = _root.mclip._height+2;
        _root["mclip"+(i+0)]._y = _root.mclip._y+height*i;
        _root["mclip"+(i+0)]._alpha = 75;
        _root["mclip"+(i+0)].names = names[i];
        _root["mclip"+i].link = _root["url"+i];
        _root["mclip"+i].onPress = function() {
            gotoAndStop(this.link);
        };
    }
}
_root["mclip"+(i+1)]._alpha = 75;
_root["mclip"+(i+1)].name = names[i];
_root.mclip._visible = false;
stop();

Jeg har testet med at lave en tekstfelt "test":

if (test == "2") {
            delete names[2];
        }
men så bliver det navn fjernet, og så får jeg et "hul" i listen.
I´m almost sure this one is an easy one for some of you! What can I do friends?

2
Avatar billede pyroman Nybegynder
31. december 2004 - 10:56 #1
var names = new Array(6);
names[0] = "John";
names[1] = "Alfred";
names[2] = "Jose";
names[3] = "Carlos";
names[4] = "Sen";
names[5] = "Jim";

var restrictedNames = new Array();
for(var i=0;i<names.length;i++){
  if(names[i].charAt(0) != "A"){
    restrictedNames.push(names[i]);
  }
}

for (i=1; i<=restrictedNames.length; i++) {
        mclip.duplicateMovieClip("mclip"+(i+0), +i);
        var height = _root.mclip._height+2;
        _root["mclip"+(i+0)]._y = _root.mclip._y+height*i;
        _root["mclip"+(i+0)]._alpha = 75;
        _root["mclip"+(i+0)].names = restrictedNames[i];
        _root["mclip"+i].link = _root["url"+i];
        _root["mclip"+i].onPress = function() {
            gotoAndStop(this.link);
        };
    }
}
_root["mclip"+(i+1)]._alpha = 75;
_root["mclip"+(i+1)].name = restrictedNames[i];
_root.mclip._visible = false;
stop();
Avatar billede flviborg Nybegynder
31. december 2004 - 11:13 #2
Hej pyroman, tak for dit svar. Det fungerer men fjerner også andre værdier end dem der starter med "A".

Jeg har faktisk flere betingelser der skal med, derfor vil jeg finde ud af hvordan jeg fjerner en eller flere pga. af en betingelse. Her tænker jeg at jeg sætter mine betingelser på en funktion og køre den i den loop som du har lavet. kan man ikke det?
Avatar billede barklund Nybegynder
31. december 2004 - 11:58 #3
Du fjerner et element permanent fra et array ved at bruge splice-metoden:

mit_array = ["hej", "med", "jer", "to"];
// slet nu 3. element "to"
mit_array.splice(3, 1);
// mit array er nu ["hej", "med", "jer"]

--
Morten Barklund
Avatar billede flviborg Nybegynder
31. december 2004 - 12:15 #4
Hej Morten, jeg har faktisk liiige fået samme svar på http://www.actionscript.org/forums/showthread.php3?p=299234&posted=1#post299234

Tak!

jeg havde et spørgsmål for et par uger siden (som jeg regnede med at du kunne besvare) om SharedObjects, har du tid til at kigge på det?

http://www.eksperten.dk/spm/568527

mange hilsner
fabio
Avatar billede pyroman Nybegynder
31. december 2004 - 13:24 #5
Jo - men nu tænkte jeg at det ville være smartere med en mere dynamisk løsning der selv fandt dem der skulle fjernes i stedet for at man selv skal angive det - for så kunne du jo ligeså godt lade være med at putte de navne med A i arrayet?
Avatar billede flviborg Nybegynder
31. december 2004 - 13:52 #6
ja, du har ret. Problemet er at jeg har flere betingelser. En bruger indtaster visse værdier i tre felter, og ud fra disse værdier skal jeg fremvise nogle værdier fra min array.

Så jeg sidder her nu og tænker på hvordan jeg både kan bruge .splice og lidt af det du foreslår, uden at skal lave en loop for hver betingelse.

hvad mener du?
Avatar billede barklund Nybegynder
31. december 2004 - 13:59 #7
Jeg tror vi skal bruge lidt mere info fra dig. Præcis hvad går det ud på, så kan vi nok guide dig til smarteste løsning :)
Avatar billede flviborg Nybegynder
31. december 2004 - 14:08 #8
tak,

jeg har lagt de filer jeg tester med her : http://www.danhc.com/t/tester.fla

det drejer kort om det her:

Man indtaster nogle værdier der bruges til en beregning.

Resultaten bruges til at vælge fra/til nogle værdier fra en array.

der fremvises en list med de værdier, og hver værdi er et link til en detaljeret beskrivelse af et bestemt vare.

håber I kan hjælpe mig =)
Avatar billede barklund Nybegynder
31. december 2004 - 14:15 #9
Eksempel? Hvad kan arrayet indeholde? Hvilke betingelser kan man lave? Hvad vil de gøre? Eksemplificér og verden bliver et bedre sted :)
Avatar billede flviborg Nybegynder
31. december 2004 - 14:36 #10
Arrayet indeholder produktnavne (i dette eksempel koder til nogle plasticfiduser).

Betingelsen: hvis hastigheden er mere end 8 km/t og mindre en 12 km/t vis visse produkter.

Når disse produkter er valgt: vis en list med dem. Hver produkt på listen er et link til en frame med et billede og en detaljeret beskrivelse af det pågældende produkt.

er det bedre=)?
Avatar billede pyroman Nybegynder
31. december 2004 - 15:03 #11
Jeg havde lavet det sådan at hvert produkt blev repræsenteret af et objekt med en masse oplysninger:

function plastikFisus (navn, farve, hastighed, frame){
  this.navn = navn;
  this.farve = farve;
  this.hastighed = hastighed;
  this.andet = andet;
}

og så opretter man så et objekt for hvert produkt og propper det i et array:

var produkter = new Array();
produkter.push(new plastikFidus("ting1", "grøn", 100, 5));
produkter.push(new plastikFidus("ting2", "rød", 80, 10));


og så kan man så lave en løkke der tjekker aller objekterne for de indtastede data:


for (var i=0; i<=produkter.length; i++) {
  var produkt = produkter[i];
  if(produkt.farve == valgtFarve && produkt.hastighed == valgtHastighed){
    mclip.duplicateMovieClip("mclip"+i, i);
    var height = _root.mclip._height+2;
    _root["mclip"+i]._y = _root.mclip._y+height*i;
    _root["mclip"+i]._alpha = 75;
    _root["mclip"+i].names = produkt.navn;
    _root["mclip"+i].link = produkt.frame
    _root["mclip"+i].onPress = function() {
      gotoAndStop(this.link);
    };
  }
}


N ved jeg ikke lige hvor mange betingelser du har.. men det er script er nok ikke nok
Avatar billede pyroman Nybegynder
31. december 2004 - 15:03 #12
plastikFidus konstruktøren skal lige ændres lidt:

function plastikFisus (navn, farve, hastighed, frame){
  this.navn = navn;
  this.farve = farve;
  this.hastighed = hastighed;
  this.frame = frame;
}
Avatar billede barklund Nybegynder
31. december 2004 - 15:10 #13
plastikFisus?
Avatar billede flviborg Nybegynder
31. december 2004 - 15:14 #14
hej igen, nu vil jeg teste...tak for svaret pyroman. Jeg sidder her de næste tre timer, i tilfælde af at I har gode forslag, så må vi se hvad det bliver til (jeg bliver nok på tidspunkt nødt til at gå nedenunder og fejre nytårsdagen..., ja, godt nytår!)
Avatar billede flviborg Nybegynder
31. december 2004 - 15:16 #15
plastikfidus: det er nogle dyser brugt til at begrænse trykket ved sprøjtning af pesticider,
Avatar billede barklund Nybegynder
31. december 2004 - 15:22 #16
Jeg henviste nu til det faktum, at pyroman har blandt plastikFidus og plastikFisus sammen :) ret lige til én af delene alle steder :)
Avatar billede flviborg Nybegynder
31. december 2004 - 15:30 #17
ja tror at jeg kan godt få det til at virke nu, det værste bliver at finde frem til betingelserne. Det drejer sig om nogle uoverskuelige tabeller...

mange tak for hjælpen til jer to!=)
Avatar billede pyroman Nybegynder
31. december 2004 - 15:31 #18
Tak barklund! Det er ikke alle der kan styre deres fingre til at ramme de der små knapper... du kan nok gætte hvad der skulle stå!
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 dag 06:10 Excel åbner fil i kæmpe format Af Aske i Excel
I går 22:00 Datafordeler Af Lsk i PHP
I går 12:37 Summere beløb pr. dato Af TTA i Excel
31/1022:44 Tilslutte chassic fans Af viking69 i PC
31/1020:28 LED lysstofrør Af ErikHg i Fri debat