Adobe Flash AS3 Anfängerfragen

maccoX

maccoX

Aktives Mitglied
Thread Starter
Dabei seit
15.02.2005
Beiträge
16.048
Reaktionspunkte
6.058
Hier ist der Platz für Neueinsteiger und Anfänger mit kleinen Fragen!

Ein Kleiner Sammelthread, damit nicht nicht 1000 mini Threads entstehen.



Ich mach gleich mal den Anfang mit einer Frage:

Ich möchte ein if Abfrage: Wenn x auch Di., dann ...
x ist also nicht genau "Di", sondern kann mehrere Tage sein wie "Di, Mi, Sa" Ich will die Variable also nicht direkt vergleichen, sondern schaun ob das gewünschte auch enthalten ist - aber wie mach ich das ??

(Die Trennung der Tage in der Variable ist egal, von mir aus Lehrzeichen, Komma oder sonst was)
 
Zuletzt bearbeitet:
Na was ist los Leute? ;)
 
Hi,

schau dir mal Arrays und indexOf an.
 
  • Gefällt mir
Reaktionen: maccoX
Danke - das war genau das was ich gebraucht hab!


Aber ich hab leider schon wieder eine Frage:
Ich möchte wenn ich eine Taste drück (Pfeiltaste rechts ist z.B. "39") eine Aktion auslösen.

Das hab ich bisher und es funktioniert auch - zumindest 1 mal :(
Code:
function setup() {
stage.addEventListener(KeyboardEvent.KEY_DOWN, displayKey);
}
setup(); 
function displayKey(keyEvent:KeyboardEvent) {
var keyPressed:String=""; 
keyPressed=keyEvent.keyCode.toString();
myTextField.text=keyPressed;
if (keyPressed == "39") {
trace(keyPressed);
nextFrame();  
}
}
stop()

Wie schon gesagt, es funktioniert - aber leider nur genau ein mal! Wenn ich dann wieder auf eine Taste drück (egal welche), dann kommt das hier:
Code:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
	at test_fla::MainTimeline/displayKey()

Wo liegt denn da bitte das Problem? :confused:
 
Du rufst die Methode nextFrame(); auf. Im nächsten Frame ist aber der EventListener nicht mehr auf der Bühne registriert. Du müsstest ihn also für jeden Frame erneut registrieren befürchte ich.
Um dann aber ein Dilemma an EventListenern zu vermeiden, solltest du den EventListener vorm Framewechsel wieder von der Bühne runternehmen (mit removeEventListener(); ) und dann die Methode setup(); erneut aufrufen.

Des Weiteren ist der Stringvergleich den du da mit == durchführst ziemlich riskant. AS3 kann leider immer noch nicht sicher Objekte miteinander vergleichen. Strings sind aber Objekte (und keine primitiven Datentypen). Kannst du den KeyCode nicht als int oder double Wert auslesen? Dann wäre der Vergleich zumindest „todsicher“.
 
Ok, hab ihn nach dem Aufruf gleich entfernt bevor ich das Frame wechsele, das klappt soweit.
Wenn ich ihn im nächsten aber mit setup(); aufrufe, so erscheint wieder der gleiche Fehler :(

Ich weis nicht, vielleicht gibts für das was ich vorhabe ja auch eine bessere Lösung!?
Früher bei AS2 hab ich das mit 2/3 einfachen Minicodezeilen hinbekommen ...


EDIT:
Keine Ahnung an was es lag, mit dem Code hier klappts:
Code:
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownFunc);
function KeyDownFunc(event){
if(event.keyCode == "39"){ 
nextFrame();
}
}

geht doch :)
 
Zuletzt bearbeitet:
Zurück
Oben Unten