Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-06-2004, 14:38   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Ort: Frankfurt
Beiträge: 79
Question wortliste durchsuchen

Hallo,

ich will folgendes machen. Es gibt verschiedene Arrays, die bestimmte Wörter enthalten. Über ein Eingabefeld wird etwas eingegeben. Kann ein Satz oder Wort sein. Wenn diese Eingabe in einem der Arrays vorhanden ist, soll etwas passieren. Dabei soll es auch bei einer Teilübereinstimmung des Arrayelements
zu der Aktion kommen.

Vielleicht geht es so: Ich zerlege jedes Array nacheinander in seine Einzelteile und wandel das Einzelteil in einen String, den ich mit indexOf auf eine Übereinstimmung überprüfe. Leider habe ich keine Ahnung, wie ich das machen soll.
Oliver3 ist offline   Mit Zitat antworten
Alt 17-06-2004, 16:52   #2 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
einfach nur überprüfen ob in irgendeinem teil des arrays der string vorhanden ist?
PHP-Code:
a=["hallo","ich","bin","ein","numerisches array"]
str1="bin"
str2="numerisch"
str3="rumpel"
trace(a.join(",").indexOf(str1)!=-1)//true- vorhanden
trace(a.join(",").indexOf(str2)!=-1)//true- vorhanden
trace(a.join(",").indexOf(str3)!=-1)//false- nicht vorhanden

//allgemein
trace(deinarray.join(",").indexOf(EingabeDesUsers)!=-1
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 22-06-2004, 09:30   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Ort: Frankfurt
Beiträge: 79
super, vielen Dank. Hätte nicht gedacht, dass das mit so einem kompakten Script möglich ist.
Oliver3 ist offline   Mit Zitat antworten
Alt 22-06-2004, 11:15   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Ort: Frankfurt
Beiträge: 79
zu früh gefreut. Hab noch ein kleines Problem.
Wenn ich das Ganze in einer Schleife abfrage, gibt er für alle ein Übereinstimmung:

a1=["hallo","ich","bin","ein","numerisches array"]
a2=["wieso","funzt","das","net"]
...

for (i=1;i<29;i++)
{
if (a[i].join(",").indexOf(_root.eingabe)!=-1)
{
mach was;
}}



wie kann ich dabei ein else einbauen, das nur passiert, wenn die eingabe in keinem a vorhanden ist? Danke schon mal.
Oliver3 ist offline   Mit Zitat antworten
Alt 22-06-2004, 14:14   #5 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
PHP-Code:
//...
anzahl=29
for (i=1;i<=anzahl;i++){
    if (
_root["a"+i].join(",").indexOf(_root.eingabe)!=-1){ 
        
//vorhanden
        
trace("sa")

    }else{
        
//nicht vorhanden im teilelement aX
        
n++
    }
}
if(
n>=anzahl){
    
//0 übereinstimmungen

mitzählen in wievielen arrays es vorhanden war, falls keines den string enthielt wurde das else entsprechend oft aufgerufen

hab hier _root["a"+i] da es doch einzelne arrays sind und keine mitglieder von a
im sinne von

a1=[1,2,3]
a2=[4,5,6]
a=[a1,a2]

sonst könntest dir den ganzen act sparen und komplett das a joinen

gruß
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 22-06-2004, 14:54   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Ort: Frankfurt
Beiträge: 79
irgenwie klappt das nicht. Wenn ich mit einer trace- Aktion abfrage in welchem der Elemente es vorkommt, sagt er in allen. Die Abfrage der einzelnen Arrays ist deshalb, weil bei jeder übereinstimmung mit einem Array eine andere Aktion folgen soll.

anzahl=28
for (i=1;i<=anzahl;i++){
if (_root["a"+i].join(",").indexOf(_root.eingabe)!=-1)
{
//vorhanden
_root.eingabe =""; // Eingabe wieder löschen
trace ("In nummer "+i+" vorhanden")

}else{
//nicht vorhanden im teilelement aX
n++
}
}
if(n>=anzahl){
//0 übereinstimmungen
trace ("nix da");
}
Oliver3 ist offline   Mit Zitat antworten
Alt 22-06-2004, 15:12   #7 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
du solltest natürlich überprüfen ob eingabe definiert ist daher

eingabe.length>0

denn nen udnefined wird zu nem leeren string konvertiert und nen leerer string ist bekanntlich am anfang von jedem string zu finden, daher wird nicht -1 sondern 0 zurückgegeben, abfrage ergibt true

deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 22-06-2004, 15:22   #8 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Ort: Frankfurt
Beiträge: 79
Er erkennt die richtige eingabe. Wenn ich die Eingabe auch in der trace aktion ausgeben lasse, nimmt er die richtige, trozdem kommt in der Ausgabe, dass das eingegebene Wort in allen Arrays vorkommt. Also auch eine
if (eingabe.lenth>0) drumrum hilft leider nicht.
Oliver3 ist offline   Mit Zitat antworten
Alt 22-06-2004, 15:23   #9 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
trace doch mal das

_root["a"+i].join(",").indexOf(_root.eingabe)

was sagt er? lauter nullen?

und was ist eingabe? nen textfeld?

gruß
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 22-06-2004, 15:56   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Ort: Frankfurt
Beiträge: 79
dazu sagt er "undefined". _root.eingabe ist die Variable in einem Eingabefeld, das in einem MC liegt.
Oliver3 ist offline   Mit Zitat antworten
Alt 22-06-2004, 16:17   #11 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
haste das
trace(_root["a"+i].join(",").indexOf(_root.eingabe))
auch in die schleife gesetzt?
wenn undefined kommt findet er das array nich

Zitat:
_root.eingabe ist die Variable in einem Eingabefeld, das in einem MC liegt.
in einem mc und dann per root drauf zugreifen?

solltest denk ich mal alle pfade überprüfen

deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 22-06-2004, 16:47   #12 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Ort: Frankfurt
Beiträge: 79
ok. das mit dem _root.eingabe war als Variable des Textfeldes definiert. Aber dein Tipp mit den Pfaden war nicht schlecht. Die Arrays waren nur als a1 - a28 definiert und nicht als _root.a1... :-)

Aber jetzt gibt es noch ein Problem. Das ganze sollte so laufen, das die Eingabe auch mehr enthalten kann. Also praktisch umgekehrt. Aber das funktioniert leider nicht:

if (_root.eingabe.indexOf(_root["a"+i].join(","))!=-1)

gruß,
oliver
Oliver3 ist offline   Mit Zitat antworten
Alt 22-06-2004, 17:21   #13 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
puhh du schaffst einen
nun siehts so aus

dein satz

eingabe="hallo bin ich da"

splitten
str=eingabe.split(" ")
nun haste in str nen arry mit den 4 wörtern

jetzt mußte dein altes script um eine umschließende forschleife erweitern, damit du alle wörter durchlaufen kannst
im sinne von
ActionScript:
  1. for(var i=0;i<str.length;i++){
  2.  wort=str[i]
  3.  for(var j=0;j<28;j++){
  4.   //alte indexOf geschichte
  5.  }
  6. }
deluxe
Deluxe ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele