1&1 Webhosting
Flashhilfe.de - Flash Community

Steuerung nach Frame wechsel funktioniert nicht mehr [Flash 10]

Forum > ActionScript 3.0 > Steuerung nach Frame wechsel funktioniert nicht mehr

 


AntwortenRegistrieren Seite1  

 09.01.2010, 19:29 
Beiträge: 10
Registriert: Jan 2010

Steuerung nach Frame wechsel funktioniert nicht mehr
Hallo Ihr guten Flasher und Actionscriptler.

Ich habe vor kurzem erst mit Actionscript3 angefangen und programmiere damit ein kleines Spiel.
Ich habe dafür einen Frame für das Menü, einer wird noch für eine Anleitung gemacht und auf einem befindet sich das noch nicht ganz fertige Spiel.

Beim Spiel konnte man bereits die Figur mit den Pfeiltasten bewegen, als das Menü noch nicht da war (da ich dieses erst nachträglich hinzu gefügt habe). Nun habe ich im Menü einen Button der ganz einfach durch das MouseEvent CLICK, per gotoAndPlay(Frame wo das Game oben ist), zum Spiel wechselt. Das tut er soweit auch. Jedoch kann ich dann im Spiel, meine Figur nicht mehr bewegen.
Ich bekomme leider weder eine Fehlermeldung was die Syntax angeht noch sonst irgend einen Error.
Wo könnte da mein Fehler liegen?

BITTE HELFT MIR ICH VERZWEIFEL!!!
 10.01.2010, 01:09Re1
Beiträge: 568
Registriert: May 2007

das script wäre hilfreich
Bitte keine pn´s wegen irgendwelchen fragen zu Threads, dafür gibt es sie ja schließich
 10.01.2010, 12:40Re2
Beiträge: 10
Registriert: Jan 2010

Themenautor/in

Das ist das Script was im Menü steht. Change1 soll dabei zur Anleitung führen und Change2 soll zum Spiel führen.

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
stop ();

anleitung.addEventListener(MouseEvent.CLICK, change1);

function change1 (evt:MouseEvent) {
   gotoAndPlay (1, "Anleitung");
   stage.removeEventListener(MouseEvent.MOUSE_MOVE, slopy_watch);
}

starten.addEventListener(MouseEvent.CLICK, change2);

function change2 (evt:MouseEvent){
   gotoAndPlay (1, "Level1");
   stage.removeEventListener(MouseEvent.MOUSE_MOVE, slopy_watch);
}


Und das ist das Script, dass im Spiel drinne steht.

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
stop();

var speed:int = 7;
var m:int

stage.addEventListener(KeyboardEvent.KEY_DOWN, slopy_left);

function slopy_left (e) {
   if (e.keyCode == Keyboard.LEFT && slopy.x > 50) {
      slopy.x -= speed;
      slopy.play();
   }
}

stage.addEventListener(KeyboardEvent.KEY_DOWN, slopy_right);

function slopy_right (e) {
   if (e.keyCode == Keyboard.RIGHT && slopy.x < 617) {
      slopy.x += speed;
      slopy.play();
   }
}


var runterDose:Timer = new Timer (1000, 1);

runterDose.addEventListener(TimerEvent.TIMER, muell);

runterDose.start();

function muell(evt: TimerEvent){
   
   dose_1.y = 0;
   dose_1.x = int(Math.random()*567);
   dose_1.addEventListener(Event.ENTER_FRAME, bewegen);
}



function bewegen(e) {
   if (e.currentTarget.y <= 370) {
   e.currentTarget.y += 7;
   }
   else if (e.currentTarget.y >= 370) {
      dose_1.y = 0;
      dose_1.x = int(Math.random()*567);
   }
}

stage.addEventListener(Event.ENTER_FRAME, kolision);

function kolision(evt:Event) {
   if(dose_1.hitTestObject(slopy)) {
      slopy.gotoAndPlay(9);
      dose_1.y = 0;
      dose_1.x = int(Math.random()*567);
      liveline.nextFrame();
   }
}
   
var runterkippe:Timer = new Timer (4000, 1);

runterkippe.addEventListener(TimerEvent.TIMER, muell2);

runterkippe.start();

function muell2(evt: TimerEvent){
   
   kippe.y = 0;
   kippe.x = int(Math.random()*567);
   kippe.addEventListener(Event.ENTER_FRAME, bewegen2);
}



function bewegen2(e) {
   if (e.currentTarget.y <= 370) {
   e.currentTarget.y += 5;
   }
   else if (e.currentTarget.y >= 370) {
      kippe.y = 0;
      kippe.x = int(Math.random()*567);
   }
}

stage.addEventListener(Event.ENTER_FRAME, kolision2);

function kolision2(evt:Event) {
   if(kippe.hitTestObject(slopy)) {
      slopy.gotoAndPlay(9);
      kippe.y = 0;
      kippe.x = int(Math.random()*567);
      liveline.nextFrame();
   }
}   

var counter:Timer = new Timer (1000, 30);

counter.addEventListener(TimerEvent.TIMER, countdown);

counter.start ();

function countdown(evt:Event) {
   count.nextFrame();
}



Ich weis das Script ist verbesserungswürdig aber wenn ich nur die Szene mit dem Spiel teste, läuft es eigentlich.
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 10.01.2010, 14:11Re3
Benutzerbild von willie33
Beiträge: 140
Wohnort: Qo'noS
Registriert: Nov 2009

Ich würde die KeyboardEvents nicht der "stage" zuweisen sondern dem Film.
Heißt:
ActionScript:
1this.addEventListener(KeyboardEvent.KEY_DOWN, ...);
Check it out: http://as3petoolkit.googlecode.com/
@Vemilyus
Mann, warum drücke ich immer "STRG+S" wenn ich Code im Forum poste???
Bitte keine PNs wenn es Fragen gibt. Dazu ist das Forum da!
Geändert von willie33 am 10.01.10 um 14:11 Uhr

 10.01.2010, 14:17Re4
Beiträge: 10
Registriert: Jan 2010

Themenautor/in

Danke für den Tip aber das ganze klappt leider immer noch nicht :(

Ich weis einfach nicht woran das liegen soll :(
 10.01.2010, 15:01Re5
Beiträge: 10
Registriert: Jan 2010

Themenautor/in

Keiner mehr ne Idee?
 
nicht sichtbar bei eingeloggten Mitgliedern
 10.01.2010, 18:40Re6
Beiträge: 568
Registriert: May 2007

also mir fallen da nur kleinigkeiten auf an denen es liegen kann das man dafür keine compiler fehler bekommt finde ich komisch

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Das nur schönheitshalber kannste auch so lassen

stop ();

anleitung.addEventListener(MouseEvent.CLICK, change1);

function change1 (evt:MouseEvent) {
      stage.removeEventListener(MouseEvent.MOUSE_MOVE, slopy_watch);
      gotoAndPlay (1, "Anleitung");
}

starten.addEventListener(MouseEvent.CLICK, change2);

function change2 (evt:MouseEvent){
      stage.removeEventListener(MouseEvent.MOUSE_MOVE, slopy_watch);
      gotoAndPlay (1, "Level1");
}
 




und hier das 2 te sind mehrere kleinigkeiten

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
stop();

var speed:int = 7;
var m:int

stage.addEventListener(KeyboardEvent.KEY_DOWN, slopy_left);

function slopy_left (e:KeyboardEvent) {
  if (e.keyCode == Keyboard.LEFT && slopy.x > 50) {
      slopy.x -= speed;
      slopy.play();
  }
  if (e.keyCode == Keyboard.RIGHT && slopy.x < 617) {
      slopy.x += speed;
      slopy.play();
  }
}


var runterDose:Timer = new Timer (1000, 1);

runterDose.addEventListener(TimerEvent.TIMER, muell);

runterDose.start();

function muell(evt: TimerEvent){
 
  dose_1.y = 0;
  dose_1.x = int(Math.random()*567);
  dose_1.addEventListener(Event.ENTER_FRAME, bewegen);
}



function bewegen(e:Event) {
  if (e.currentTarget.y <= 370) {
  e.currentTarget.y += 7;
  }
  else if (e.currentTarget.y >= 370) {
      dose_1.y = 0;
      dose_1.x = int(Math.random()*567);
  }
}

stage.addEventListener(Event.ENTER_FRAME, kolision);

function kolision(evt:Event) {
  if(dose_1.hitTestObject(slopy)) {
      slopy.gotoAndPlay(9);
      dose_1.y = 0;
      dose_1.x = int(Math.random()*567);
      liveline.nextFrame();
  }
}
 
var runterkippe:Timer = new Timer (4000, 1);

runterkippe.addEventListener(TimerEvent.TIMER, muell2);

runterkippe.start();

function muell2(evt: TimerEvent){
 
  kippe.y = 0;
  kippe.x = int(Math.random()*567);
  kippe.addEventListener(Event.ENTER_FRAME, bewegen2);
}



function bewegen2(e:Event) {
  if (e.currentTarget.y <= 370) {
  e.currentTarget.y += 5;
  }
  else if (e.currentTarget.y >= 370) {
      kippe.y = 0;
      kippe.x = int(Math.random()*567);
  }
}

stage.addEventListener(Event.ENTER_FRAME, kolision2);

function kolision2(evt:Event) {
  if(kippe.hitTestObject(slopy)) {
      slopy.gotoAndPlay(9);
      kippe.y = 0;
      kippe.x = int(Math.random()*567);
      liveline.nextFrame();
  }


var counter:Timer = new Timer (1000, 30);

counter.addEventListener(TimerEvent.TIMER, countdown);

counter.start ();

function countdown(evt:TimerEvent) {
  count.nextFrame();
}
Bitte keine pn´s wegen irgendwelchen fragen zu Threads, dafür gibt es sie ja schließich
 10.01.2010, 20:20Re7
Beiträge: 10
Registriert: Jan 2010

Themenautor/in

Schonmal vielen Dank. Ich werde die Änderungen nachher mal einbauen und dann heißt es erst ma Daumen drücken :)
 10.01.2010, 20:29Re8
Beiträge: 10
Registriert: Jan 2010

Themenautor/in

Hmmmm... Klappt immer noch net. An was kann denn sowas noch liegen?
 10.01.2010, 20:39Re9
Beiträge: 10
Registriert: Jan 2010

Themenautor/in

Okay... nur um auf das Problem näher einzugehen...

Wenn ich die Szene mit dem Spiel einzeln teste, läuft die ganze Sache ohne Probleme. Nur wenn ich dann den ganzen Film teste, funktioniert zwar die Verlinkung aber die Figur im Spiel lässt sich nicht mehr bewegen.
 10.01.2010, 21:00Re10
Beiträge: 10
Registriert: Jan 2010

Themenautor/in

Jetzt hat er mir mal ne Fehlermeldung gegeben, nachdem ich nen Movieclip eingebaut habe, auf welchem Musik ist.

Die Fehlermeldung
" Type Error # 1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
                    at Game1_Muell_ausweichen_fla:: MainTimeline/change2()"

Vielleicht sagt das ja irgendwem was, der mir vielleicht helfen kann :) Vielen Dank auf jedenfall an diejenigen die sich mit meinem Problem beschäftigen.
 11.01.2010, 20:50Re11
Beiträge: 568
Registriert: May 2007

kommt das nur bei dem starten button oder auch bei dem anderen?
Bitte keine pn´s wegen irgendwelchen fragen zu Threads, dafür gibt es sie ja schließich
 11.01.2010, 20:53Re12
Beiträge: 568
Registriert: May 2007

das sagt denke ich mal aus das du eine function mit einen listener aufrufst ohne irgendwas an die function zu übergeben z.b.

ActionScript:
1
2
3
this.addEventListener(MouseEvent.CLICK,bla);
function bla(/*hier fehlt was ?*/void{
}
Bitte keine pn´s wegen irgendwelchen fragen zu Threads, dafür gibt es sie ja schließich
Geändert von cedddy am 11.01.10 um 20:53 Uhr

 12.01.2010, 10:47Re13
Beiträge: 10
Registriert: Jan 2010

Themenautor/in

Jetzt kommt es wieder garnicht mehr. Kommt halt wie es lust hat die Fehlermeldung :) Ich habe es jetzt mal so versucht, dass ich die Eventlistener vom Spiel mit in das Menü rüber genommen habe. Jetzt kann ich zwar meine Figur mit der Tastatur steuern, aber nur wenn ich vorher mit der Maus irgendwo hin drücke. Irgendwie muss ich dem noch begreiflich machen, dass er von der Steuerung mit Maus im Menü, auf Steuerung mit Tastatur beim Spiel wechseln soll. Aber wie kann man sowas machen?
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de