03. april 2003 - 10:46Der 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?
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?
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?
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)!
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 ;-)
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]; } } }
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!
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...
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!
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!
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.......
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);
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....
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)!
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?
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!
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.
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!
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); }
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.