Avatar billede sirene Nybegynder
03. april 2003 - 10:46 Der er 32 kommentarer og
1 løsning

ordbog i Flash mx

Er der nogen der kan hjælpe mig med oplysninger om, hvordan man laver en ordbog i Flash Mx – altså mulighed for at klikke sig ind på et bogsta i alfabetet og/eller skrive ordet og søge på det?
Avatar billede alexander_j Nybegynder
03. april 2003 - 11:30 #1
Det smarteste er nok at ligge ordene i arrays - jeg vil foreslå at du deler det op sådan at du laver et array for hvert bogstav (abc...) - for så bliver søgningen mindre krævende!

Hvis der er tale om en ordbog der skal køre sådan lidt realtime, så skal du nok begrænse den til 3000-5000 ord - vel at mærke hvis det er en stavekontrol! Hvis det er en decideret ordbog, så skal du nok nøjes med mindre!

Hvad forestiller du dig der skal være i ordbogen? ord, søge-/emneord, ordbeskrivelse - eller hvad?

Har selv arbejdet med en stavekontrol - du kan se den her:
http://home19.inet.tele.dk/sirvival/stavgodt.html
Avatar billede sirene Nybegynder
03. april 2003 - 12:31 #2
Det ser smart ud - det er ikke det helt store og avancerede vi har brug for. Kun muligheden for at slå nogle specialudtryk- og vendinger op. Jeg har ikke ret megen forstand på actionscripts, kan kun ændre og rette lidt til hist og pist i allerede skrevne koder, så jeg skal nok bruge nogle kodeeksempler til at gå videre med. Kan man købe eller betale sig fra dit koncept med denne ordbog? Og i så tilfælde, hvad ville det koste? Og kunne man bruge den som en slags skabelon?
Avatar billede alexander_j Nybegynder
03. april 2003 - 13:29 #3
Har lavet et lille eksempel til dig:
http://home19.inet.tele.dk/sirvival/leksikon.html

Er det sådan noget du leder efter?

/Alexander
Avatar billede barklund Nybegynder
03. april 2003 - 13:35 #4
Du kan da ikke bare synes, at alle øllene smager godt? :)
Avatar billede alexander_j Nybegynder
03. april 2003 - 13:38 #5
Hvem er I og hvad er det for en hjemmeside I er ved at lave?
Jeg tror ikke du kan overføre min stavekontrolskode, da det du ønsker er et leksikon. Men den anden kode(nye kode) er lige til at gå til!

Som det er lige nu så skal man skrive ordet helt korrekt før den viser det, men det kan ændres til at den finder det ord der ligner mest! Derudover kan man lave emneord, så man kan søge i emner (der kan eventuelt oprettes en liste udfra ens søgninger osv)!
Avatar billede sirene Nybegynder
03. april 2003 - 13:39 #6
ja, det ser rigtig godt ud til formålet - til en start i hvert fald - hvordan gør jeg?
Avatar billede alexander_j Nybegynder
03. april 2003 - 13:39 #7
Jamen det gør de jo - så jeg fandt ingen grund til at ændre teksten yderligere ;-)
Avatar billede alexander_j Nybegynder
03. april 2003 - 13:40 #8
Du skriver en mail, så sender jeg .fla'en til dig!
Avatar billede alexander_j Nybegynder
03. april 2003 - 13:46 #9
Hvis du ikke er vild med at offentliggøre din mail på en frit tilgængelig hjemmeside, så gør som os andre og opret en gratis emailadresse hos fx ofir, hotmail eller lignende!

Jeg tør ikke offentliggør koden på siden her, for så kommer Barklund bare og siger at det kan gøres meget nemmere ;-)
Avatar billede sirene Nybegynder
03. april 2003 - 13:47 #10
Lyder herligt - men skriver jeg en mail her? Er ikke så rutineret i dette medie!
Avatar billede sirene Nybegynder
03. april 2003 - 13:48 #11
du kan maile til mail@gepunkt.dk
Avatar billede barklund Nybegynder
03. april 2003 - 13:50 #12
Argh, kom nu alexander, be a sport :)
Avatar billede alexander_j Nybegynder
03. april 2003 - 13:51 #13
jep skriv din mail her!

Ellers:

I frame 1:
Opret 3 dynamiske tf's med instancenavnene tf_list, tf_head og tf_text

Opret et input tf med instancenavn ip_search

Lav en knap med følgende kode:
on (release, keyPress "<Enter>") {
    search(ip_search.text);
}

I frame 1 ligger du også følgende kode:
beer = new Array(["tuborg","tuborg smager godt"],["carlsberg","carlsberg smager godt"],["sort guld","sort guld smager godt"],["elefant","elefant smager godt"],["star","star smager godt"]);
beer.sort();

function links(name){
    tf_name.htmlText=name;
    for(i=0;i<beer.length;i++){
        if(name==beer[i][0]) {
            tf_text.htmlText=beer[i][1];
        }
    }
}
function search(name){
    tf_name.htmlText=name;
    tf_text.htmlText="Desværre er der ingen poster der passer til dit søgeord";
    for(i=0;i<beer.length;i++){
        if(name==beer[i][0]) {
            tf_text.htmlText=beer[i][1];
        }
    }
}

tf_list.htmlText = "";
for(i=0;i<beer.length;i++){
    tf_list.htmlText += "<a href='asfunction:links," + beer[i][0] + "'>" + beer[i][0] + "</a><br>";
}
Avatar billede alexander_j Nybegynder
03. april 2003 - 13:52 #14
tf_head skal hedde tf_name
Avatar billede alexander_j Nybegynder
03. april 2003 - 13:57 #15
En ide ville måske være at lave selv teksten til ordbogen/leksikonnet i en seperat textfil og så loade den ind i flash!

En ide ville også være at dele leksikonnet op i flere dele(arrays) fx efter alfabetet(abc...), så flash ikke skulle på et aæt for hårdt arbejde når den skal søge efter ordene!

Og en ide ville tilhvertilfald være at tillade fejlsøgning - dvs, at flash foreslår et ord selvom man ikke har skrevet hele ordet eller ikke har skrevet helt korrekt!
Avatar billede barklund Nybegynder
03. april 2003 - 14:00 #16
Søgetræer kunne måske være en key... Eller i hvert fald et sorteret array... Så starter man i midten, og tager hele tiden midten af det resterende array...
Avatar billede alexander_j Nybegynder
03. april 2003 - 14:01 #17
Een dum ting jeg har gjort er i hvert fald at jeg har lavet to næsten identiske funktioner! Jeg kunne have nøjes med den der hedder 'search'!

Hvis du vil det skal du slette funktionen links og ændre koden her:
tf_list.htmlText += "<a href='asfunction:links," + beer[i][0] + "'>" + beer[i][0] + "</a><br>";
til:
tf_list.htmlText += "<a href='asfunction:search," + beer[i][0] + "'>" + beer[i][0] + "</a><br>";
Avatar billede barklund Nybegynder
03. april 2003 - 14:02 #18
men jeg ville nu godt nok overlade søgning på den måde til en database... Den kan sagtens køre hurtigt nok, hvis man leger med XML...
Avatar billede alexander_j Nybegynder
03. april 2003 - 14:04 #19
Søgetræer kan du tegne og forklare Barky?

Forøvrigt er der en fejl i flash MX's sort-kode
Prøv at lave en 'sort' på et array der indeholder æ,ø og å - og se hvordan den synes det skal sorteres!
Avatar billede sirene Nybegynder
03. april 2003 - 14:07 #20
Hvad er det lige i to tøser har gang i hen over hovedet på mig??
Avatar billede alexander_j Nybegynder
03. april 2003 - 14:08 #21
Databaser fylder bare ad pommeren til og kræver understøttelse af serverscripting - jeg er personligt begyndt at ligge en del som textfiler for at spare plads på serveren hos min udbyder - forøvrigt synes jeg Access-databasen er noget langsom i det!
Avatar billede alexander_j Nybegynder
03. april 2003 - 14:09 #22
Vi diskutere bare dit script ;-) - har du modtaget .fla'en?
Avatar billede sirene Nybegynder
03. april 2003 - 14:27 #23
ja, tusind tak - har vist også givet dig points - eller hva? Eller kom jeg til at gi dem til Barky? Hvis ikke, så skylder jeg måske ham nogle points også for aktiv deltagelse? Er vist ikke så ferm til det her. Har også lige besvaret din mail med fla.en. Glæder mig til at prøve det af - vender måske tilbage med andre spørgsmål - tak til jer.......
Avatar billede barklund Nybegynder
03. april 2003 - 14:27 #24
Se her:

http://actionscript.dk/eksperten/searchtree/searchtree.html
http://actionscript.dk/eksperten/searchtree/searchtree.fla

Søger igennem træet - reglen er, at alle noder i træet til venstre skal leksikalsk komme før noden selv og til højre kommer alle efter...

Koden er:

Tree.prototype.clear = function() {
    this.color.setRGB(0);
    this.handle._alpha = 100;
    this.left.clear();
    this.right.clear();
}
Tree.prototype.search = function(key) {
    if (key.toLowerCase() == this.name) {
        this.color.setRGB(0xFF0000);
        return this.name;
    } else {
        this.color.setRGB(0x0000FF);
        if (key > this.name && this.right) {
            return this.right.search(key);
        } else if (key < this.name && this.left) {
            return this.left.search(key);
        }
        this.handle._alpha = 50;
    }
}

tAllan = new Tree("Allan");
tAlexander = new Tree("Alexander",null,tAllan);
tGert = new Tree("Gert");
tHans = new Tree("Hans",tAlexander,tGert);
tPeter = new Tree("Peter");
tTorben = new Tree("Torben");
tRasmus = new Tree("Rasmus",tPeter,tTorben);
tMorten = new Tree("Morten",tHans,tRasmus);

Og så på knappen:

tMorten.clear();
tMorten.search(s);
Avatar billede barklund Nybegynder
03. april 2003 - 14:42 #25
Der mangler sgu en constructor :)

function Tree(name,left,right) {
    this.name = name.toLowerCase();
    this.left = left;
    this.right = right;
    this.handle = _root[this.name];
    this.color = new Color(this.handle);
}
Avatar billede alexander_j Nybegynder
03. april 2003 - 20:53 #26
Puha den kan jeg ikke helt overskue Morten! - måske lidt alligevel!

Sirene --> jeg har ændret lidt på mit script - du kan se det her: http://home19.inet.tele.dk/sirvival/leksikon.html
Hvis du vil have en kopi af det også, så skriv!
Avatar billede sirene Nybegynder
03. april 2003 - 21:32 #27
Hey -  det er virkelig super, Alexander..... Vil kanon gerne have en kopi - så skal jeg bare finde ud af hvordan jeg lægger teksterne ind og evt. små stykker grafik mc - kan det lade sig gøre? Du får lige 50 ekstra hvis du gider forklare mig. Du må gerne maile mig privat. 100000000 tak! Måske kan du også hjælpe mig med mit andet spørgsmål, jeg har lagt ud om 'test med statusfil retur til udbyder'. Du virker vældig kompetent....
Avatar billede alexander_j Nybegynder
03. april 2003 - 22:38 #28
Lav et movieclip med instancenavnet mc_picture og ændre linkfunktionen til:
function link(name){
    tf_name.htmlText=name;
    for(i=0;i<lexicon.length;i++) {
        if(name==lexicon[i][0]) {
            tf_text.htmlText=lexicon[i][1];
            loadMovie([name+".jpg"], "mc_picture");
        }
    }
}
Dine billeder skal så være i jpg-formatet, ligge i samme mappe som .swf'en og have samme navn som posten(ordet)!

(er ikke efterprøvet men det burde virke!
Avatar billede sirene Nybegynder
04. april 2003 - 09:15 #29
Hej igen A - har nu kigget det lidt igennem og det er lige det jeg har brug for. Jeg har lige følgende spørgsmål: 1. Hvordan deler jeg op i arrays efter alfabetet? (såvidt jeg ved kan textfiler ikke oversætte æøå?) Hvordan laver jeg søgefunktionen så den foreslår ord, der ligner det man søger på, hvis ikke det er stavet korrekt?
Håber du gider have ulejlighed igen - skylder dig vist en masse points?
Avatar billede alexander_j Nybegynder
04. april 2003 - 14:02 #30
Hvor mange ord forestiller du dig der skal være i ordbogen? Hvis der er tale om under ca. 500(tallet er grebet ud af den blå luft), så tror jeg ikke du behøver at dele det op!

Textfiler kan godt 'oversætte' æ, ø og å - du skal bare i starten af din flashfilm bruge koden: 'System.useCodepage = true;'

Det med søgefunktionen er jeg selv i tvivl om, da der ikke er tale om en indbygget komponent (som fx ASP har det). Den sidste version du fik kunne finde ordene selv om man kun har skrevet en del af dem, men at lave en decideret funktion der sammenligner ordene og finder dem der ligner selvom de er stavet forkert er ikke nemt! Skal jeg lave sådan en skal jeg vist til at være på løningslisten på dit projekt!

/Alexander
Avatar billede barklund Nybegynder
04. april 2003 - 14:07 #31
Fonetisk søgning (som kan finde "christian" når man skriver "kristian") er meget krævende og kan på ingen måde udføres af Flash. Jeg har været med til at udvikle en søgemaskine, der kunne dette, men det var i PHP. Flash vil ikke kunne klare det.
Avatar billede sirene Nybegynder
04. april 2003 - 14:38 #32
Det er perfekt med søgefunktionen som den er nu - fungerer fint opdagede jeg først efter jeg havde skrevet det sidste.
Antal ord at søge på er helt sikkert under 500! Men svarene er ret lange indimellem og ville have godt af lidt formatering og det er svært at overskue i koderne - kan man evt. bruge htm-filer istedet for .txt? Og skal jeg lave flere tekstfiler eller bare en enkelt - kan ikke helt gennemskue hvordan søgningen foregår. Tak igen for hjælpen fra jer begge - er virkelig taknemmelig!
Avatar billede alexander_j Nybegynder
04. april 2003 - 15:10 #33
Hvis teksterne er meget lange ville det måske være en fordel at dele posterne op i tre - navn, emneord og tekst - og så nøjes med at lave en søgningen i navn og emneord!

Personligt ville jeg foretrække at lave det hele i een tekstfil(evt med htmlkoder(de grundlæggende som flash understøtter!)


Morten --> jeg tænkte lige jeg måtte forsøge med lidt fonetisk søgning og fandt frem til nedenstående - eller der er måske slet ikke tale om fonetisk søgning her?

function fonem(f1,f2,ord1){
    if(ord1.indexOf(f1)!=-1){
        temp.push(ord1.substring(0,ord1.indexOf(f1))+f2+ord1.substring(ord1.indexOf(f1)+f1.length));
    }
}

ordarray = new Array("christian","peter","hans");
fonemarray = new Array(["k","ch"],["p","ph"],["s","c"],["s","z"],["c","z"],["v","f"]);
ip_ord="kristian";

temp = new Array(ip_ord);
for(i=0;i<fonemarray.length;i++){
    fonem(fonemarray[i][0],fonemarray[i][1],ip_ord);
    fonem(fonemarray[i][1],fonemarray[i][0],ip_ord);
}

for(i=0;i<ordarray.length;i++){
    for(j=0;j<temp.length;j++){
        if(temp[j]==ordarray[i]){
            trace(ordarray[i]);
        }
    }
}
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