{lang: 'de'}
Flashhilfe.de - Flash Community

TypeError: Error #1009: bei ClickHandler [Flash CS3]

 


AntwortenRegistrieren Seite1  

media_dreamer#1
Benutzerbild von media_dreamer
Beiträge: 8
Registriert: Jun 2007

07.11.2007, 14:54

Hallo,

ich soll für meine Diplomarbeit eine Flashanwendung erstellen. Dies ist die erste Anwendung in AS 3. Von dem her hab ich ein bisschen die Befürchtung, dass ich grad an einem recht simplen Problem scheitere... folgendes Problem hab ich:

Ich habe 5 Buttons erstellt, die verschiedene MovieClips mit Tweens steuern. Das klappt auch meistens ganz gut.

Hier der Code:
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
106
107
108
109
110
111
112
113
114
115
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.events.Event;

var aktSeite:String = "STARTSEITE";

// *** NAVIGATIONS - BUTTONS ***

B_Startseite.addEventListener(MouseEvent.CLICK, clickHandler_S);
B_Rundgang.addEventListener(MouseEvent.CLICK, clickHandler_R);
B_Videos.addEventListener(MouseEvent.CLICK, clickHandler_V);
B_Gallerie.addEventListener(MouseEvent.CLICK, clickHandler_G);
B_Hilfe.addEventListener(MouseEvent.CLICK, clickHandler_H);

// *** HAUPTSEITE - BUTTON ***
function clickHandler_S(event:MouseEvent):void {
   if (aktSeite != "STARTSEITE") {
      aktSeite = "STARTSEITE";
      tween_oben (aktSeite);
      tween_allg (bild_unten, "alpha", 1, 1);
      tween_allg (bild_oben, "alpha", 1, 1);
      tween_allg (bild_links, "alpha", 1, 1);
   }
      var myTween_s1:Tween = new Tween (videonavigation, "alpha"
      Regular.easeInOut, videonavigation.alpha, 0, 0.5, true);
      var myTween_s2:Tween = new Tween (vr_textunten, "alpha", Regular.easeInOut,
      vr_textunten.alpha, 0, 0.5, true);
      var myTween_s3:Tween = new Tween (mittelteil.vr_gallerieplatzhalter, "alpha",
      Regular.easeInOut,
      mittelteil.vr_gallerieplatzhalter.alpha, 0, 0.5, true);
      myTween_s1.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish_s1);
      function onMotionFinish_s1(event:TweenEvent):void {            
         mittelteil.gotoAndPlay(1);
         var myTween_s4:Tween = new Tween (vr_galleriekasten, "height", Regular.easeInOut,
         vr_galleriekasten.height, 1, 1, true);
         var myTween_s5:Tween = new Tween (vr_titelbalken, "width", Regular.easeInOut,
         vr_titelbalken.width, 1, 1, true);
         myTween_s4.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish_s4);
         function onMotionFinish_s4(event:TweenEvent):void {         
            var myTween_s6:Tween = new Tween (block_untenlinks, "width", Regular.easeInOut,
            block_untenlinks.width, 204.8, 1.5, true);
            var myTween_s7:Tween = new Tween (block_untenlinks_hinten, "width", Regular.easeInOut,
            block_untenlinks_hinten.width, 204.8, 1.5, true);
         }
      }
   
}
// *** VIRTUELLER RUNDGANG - BUTTON ***
function clickHandler_R(event:MouseEvent):void {
   if (aktSeite != "VIRTUELLER RUNDGANG") {
      aktSeite = "VIRTUELLER RUNDGANG";
      mittelteil.gotoAndPlay(2);
      tween_oben (aktSeite);
   }
      //tween_allg (bild_unten, "alpha", 0, 1);
      tween_allg (bild_oben, "alpha", 0, 1);
      tween_allg (bild_links, "alpha", 0, 1);
      var myTween_r0:Tween = new Tween (videonavigation, "alpha", Regular.easeInOut,
      videonavigation.alpha, 0, 0.5, true);
      var myTween_r1:Tween = new Tween (block_untenlinks, "width", Regular.easeInOut,
      block_untenlinks.width, 614.4, 1.5, true);
      var myTween_r2:Tween = new Tween (block_untenlinks_hinten, "width", Regular.easeInOut,
      block_untenlinks_hinten.width, 1024, 1.5, true);
      myTween_r1.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish_r1);
      function onMotionFinish_r1(event:TweenEvent):void {
         var myTween_r31:Tween = new Tween (mittelteil.vr_gallerieplatzhalter, "alpha",
         Regular.easeInOut, mittelteil.vr_gallerieplatzhalter.alpha, 1, 1, true);
         var myTween_r3:Tween = new Tween (vr_galleriekasten, "height", Regular.easeInOut,
         vr_galleriekasten.height, 38, 1, true);
         var myTween_r4:Tween = new Tween (vr_titelbalken, "width", Regular.easeInOut,
         vr_titelbalken.width, 409.6, 1, true);
         myTween_r3.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish_r3);
         function onMotionFinish_r3(event:TweenEvent):void {
            var myTween_r5:Tween = new Tween (vr_textunten, "alpha", Regular.easeInOut,
            vr_textunten.alpha, 1, 1, true);
            
         }
      }
   
}
// *** VIDEO - BUTTON ***
function clickHandler_V(event:MouseEvent):void {
   if (aktSeite != "VIDEOS") {
      aktSeite = "VIDEOS";
      tween_oben (aktSeite);
      //tween_allg (bild_unten, "alpha", 0, 1);
      tween_allg (bild_oben, "alpha", 0, 1);
      tween_allg (bild_links, "alpha", 0, 1);
      var myTween_v1:Tween = new Tween (vr_textunten, "alpha", Regular.easeInOut,
      vr_textunten.alpha, 0, 0.5, true);
      var myTween_v2:Tween = new Tween (mittelteil.vr_gallerieplatzhalter, "alpha",
      Regular.easeInOut, mittelteil.vr_gallerieplatzhalter.alpha, 0, 0.5, true);
      myTween_v1.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish_v1);
      function onMotionFinish_v1(event:TweenEvent):void {
         mittelteil.gotoAndPlay(3);
         var myTween_v3:Tween = new Tween (vr_galleriekasten, "height", Regular.easeInOut,
         vr_galleriekasten.height, 1, 1, true);
         var myTween_v4:Tween = new Tween (vr_titelbalken, "width", Regular.easeInOut,
         vr_titelbalken.width, 1, 1, true);
         myTween_v3.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish_v3);
         function onMotionFinish_v3(event:TweenEvent):void {
            var myTween_v5:Tween = new Tween (block_untenlinks, "width", Regular.easeInOut,
            block_untenlinks.width, 1024, 1, true);
            myTween_v5.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish_v5);
            function onMotionFinish_v5(event:TweenEvent):void {
               var myTween_v6:Tween = new Tween (videonavigation, "alpha",
               Regular.easeInOut, videonavigation.alpha, 1, 0.5, true);
               block_untenlinks_hinten.width = 1024;
            }
         }
      }
   }
}
// *** GALLERIE - BUTTON ***

...
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   
function tween_oben (Text_oben:String) {
   var myTween:Tween = new Tween(S_Titel, "x", Regular.easeIn, S_Titel.x, (0-S_Titel.width), 2, true);
   var myTween2:Tween = new Tween(S_Titel, "alpha", Regular.easeIn, 1, 0, 1, true);
   myTween2.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish);

   function onMotionFinish(event:TweenEvent):void {//wenn beendet...
      //trace("ende");
      S_Titel.textfeld.text = Text_oben;
      var myTween3:Tween = new Tween(S_Titel, "x", Regular.easeOut, 650, 212, 2, true);
      var myTween4:Tween = new Tween(S_Titel, "alpha", Regular.easeOut, 0, 1, 1, true);
   }   
}
function tween_allg (mc:MovieClip, eigenschaft:String, endwert:Number, zeit:Number) {
   var myTween_allg2:Tween = new Tween (mc, eigenschaft, Regular.easeIn, mc.alpha, 0, 1, true)
   myTween_allg2.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish2);
   function onMotionFinish2(event:TweenEvent):void {
      var myTween_allg:Tween = new Tween(mc, eigenschaft, Regular.easeIn, mc.alpha, endwert, zeit, true);
   }
}


Nun kommt immer mal wieder folgender Fehler:

ActionScript:
1
2
3
4
5
6
7
8
9
TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
   at version0_fla::MainTimeline/clickHandler_S()
TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
   at MethodInfo-269()
   at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
   at flash.events::EventDispatcher/dispatchEvent()
   at fl.transitions::Tween/set time()
   at fl.transitions::Tween/nextFrame()
   at fl.transitions::Tween/fl.transitions:Tween::onEnterFrame()


Der Fehler tritt allerdings nicht immer auf, sondern zufällig. Ich hab bis jetzt kein Muster erkannt...

Was mache ich falsch?

Viele Grüße,
Mario
Geändert von media_dreamer am 07.11.07 um 17:00 Uhr
badskill#2
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

07.11.2007, 16:09

Hi,
kannst du nicht irgendwas ausschliessen?
Dein Skript sieht, um es mal ganz ganz vorsichtig zu sagen furchtbar aus.
Wenn du einfach mal Tween für Tween rausnimmst, bis die Meldung nicht mehr kommt, könnte das ja schonmal ein Hinweis sein.

media_dreamer#3
Benutzerbild von media_dreamer
Beiträge: 8
Registriert: Jun 2007

Themenautor/in

07.11.2007, 16:23

Meinst du furchtbar wegen der Formatierung oder allgemein wegen dem Aufbau?

badskill#4
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

07.11.2007, 16:59

Der Aufbau!
Sieht zwar aus wie AS3, hat aber eigentlich nix damit zu tun.
Aber egal, wenn du damit klarkommst, dann hat das seine Berechtigung.

Nochmal, ich würde von Klein nach Groß beginnen. Schritt für Schritt alles aufbauen und zwischendurch immer wieder testen, testen, testen.
Ich kann es gar nicht oft genug sagen.
Zudem gibt es auch einen kleinen unscheinbaren Befehl, der oftmals ignoriert und nicht angewendet wird, und doch so mächtig ist: trace

media_dreamer#5
Benutzerbild von media_dreamer
Beiträge: 8
Registriert: Jun 2007

Themenautor/in

07.11.2007, 17:19

Bin halt kein gelernter Programmierer. Hab mir alles irgendwie selber beigebracht...

Bin aber für Verbesserungvorschlage immer dankbar :-)

Also, ich hab jetzt die Tweens soweit rausgenommen, dass kein MOTION.STOP mehr gebraucht wird. Dann scheint es zu gehen. Allerdings bleibt auch hier (zwar recht selten) einer der verbleibenden Tweens stehen, allerdings ohne Fehlermeldung.

badskill#6
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

07.11.2007, 18:06

Ehrlich gesagt, weiss ich da jetzt keinen konkreten Rat. Arbeite auch mit der AS3 Tweenklasse und hatte bisher keine Probleme damit. Ich kann nicht mal raten, wo das Problem liegen könnte.
Irgendwo wird was verschluckt, überschrieben oder falsch übergeben.


Edit:
>>Bin halt kein gelernter Programmierer. Hab mir alles irgendwie selber beigebracht...
Hehe, ich hatte ne klassische Printausbildung. Für dich besteht also noch Hoffnung. :D
Geändert von badskill am 07.11.07 um 18:08 Uhr
media_dreamer#7
Benutzerbild von media_dreamer
Beiträge: 8
Registriert: Jun 2007

Themenautor/in

08.11.2007, 10:49

Hab den Störenfried gefunden.

Es lag an der Zeile:
ActionScript:
1var myTween_s3:Tween = new Tween (mittelteil.vr_gallerieplatzhalter, "alpha",


Dabei hat es sich um einen Movieclip ("mittelteil") mit 5 Schlüsselbildern gehandelt. Im 2. Schlüsselbild hat sich der Movieclip "vr_galleriepl..." befunden. Irgendwie hatte Flash ein Problem mit den einzelnen Schlüsselbilder in MC "mittelteil". Warum genau, kapier ich nicht. Jetzt liegt alles im ersten Schlüsselbild und es gibt keine Fehler mehr.

@badskill:
Hast nicht noch ein zwei Denkanstöße, wie ich meinen furchtabren Code verbessern kann?

badskill#8
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

08.11.2007, 11:14

Moin,
das wird schwer. Man könnte mit Arrays und Schleifen arbeiten, um die Objekte und Tweens zu steuern. Dann würde sich der Code mindestens halbieren.

Die aus meiner Sicht beste Variante wäre aber, sich in das Konzept von OOP einzuarbeiten und das Projekt danach aufzubauen.
Ich weiss aus eigener Erfahrung, dass die Objektorientierte Welt für einen Nichtprogrammierer erstmal ziemlich erschreckend ist. Hatte mich auch lange Zeit nicht rangetraut. Mittlerweile mach ich fast nur noch OOP.

Also, immer ran an den Speck.

SkiD#9
Benutzerbild von SkiD
Beiträge: 9
Registriert: Feb 2007

11.05.2008, 18:18

Hallo zusammen,

ich habe bzw. hatte gerade ein ähnliches Problem, für das ich nicht unbedingt ein neues Thema eröffnen wollte, da die Themen miteinander verwandt sind :-)

Mhmm ich habe eben ein kleines Programm geschrieben, was einen Regentropfen animieren soll, der Code sieht ungefähr so aus für die Tropfenklasse und das zugehörige Objekt:

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
public class test_2_dot extends MovieClip
{
   //Stagewidth & Stageheight
   //public var stage_w:uint = stage.stageWidth;
   //public var stage_h:uint = stage.stageHeight;
      
   //Vertical speed
   public var speedY:int = Math.floor(Math.random() * 10)+5;
      
   //Random position
   public var posX:int = Math.floor((Math.random() * 550) +1);
      
   //Constructor
   public function test_2_dot()
   {
      //Random position x
      x = posX;
   
      addEventListener(Event.ENTER_FRAME, onEnterFrame);
   }
      
   private function onEnterFrame(event:Event):void
   {
      //Move ball in y
      y += speedY;
         
      if(y < 0)
         y = stage.stageHeight;
      if(y > stage.stageHeight)
         y = 0;
         
   }
}


und die dazugehörige Regenklasse:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class test_2_rain extends MovieClip
{
   //Number of raindots
   private static const NUM_DOT:uint = 50;

   public function test_2_rain()
   {
      for (var i:uint = 0; i < NUM_DOT; i++)
      {
         //Create new dot instance
         var dot:test_2_dot = new test_2_dot();

         //Add new dot instance
         addChild(dot);
      }
   }
}


Mein Problem war folgendes:
Ich bekam einen Fehler (diesen Error #1009), wenn ich in der Dot-Klasse mit den Variablen stage_w und stage_h gearbeitet habe, die die Breite und Höhe des Stage's beinhalten durch die Zuwesiung von stage.stageWidth und stage.stageHeight!

Was ich dazu fragen möchte ist, warum ich den Fehler bekomme (s.u.) obwohl ich in einem anderen Übungs-Projekt vorher, dass genauso verwendet habe wie jetzt gerade ?

ActionScript:
1
2
3
TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
   at test_2_dot()
   at test_2_rain()


Verstehe ich nicht ganz ... ich weiss das es genau an diesen beiden Befehlen liegt ...
ActionScript:
1
2
3
stage.stageWidth;
//und
stage.stageHeight;

... kann mir aber nicht erklären, warum ?

In den onEnterFrame Handler funktioniert es komischerweise ohne Probleme ... sehr seltsam ^^

Wäre für Aufklärung dankbar ;)

Liebe Grüße,
Skid.
Geändert von SkiD am 11.05.08 um 18:22 Uhr

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2024 Sebastian Wichmann - Flashhilfe.de