Fehler 1009 ich verzweifle. [Flash 11]
| Beiträge: 3 Registriert: Feb 2016
| 24.02.2016, 00:14
Hallo,
Ich habe einen Movieclip welcher mir als Gegner in einem Flashspiel dienen soll. Deswegen hat er eine modifizierte Klasse von mir bekommen um den Funktionsumfang zu steigern und mir Schreibarbeit zu sparen (Weil ich ihn 100erte male instanzieren werde). Leider bekomme ich seid dem den Fehler 1009.
Hier einmal die Wichtigen teile meiner Klassen.
Das ist die Gegnerklasse welche eigentlich nur bestimmt wie die Gegner Aussehen. Der MC Figur ist das Gesammte, in diesem stecken die MC's Kopf,Oberkörper,Arme,Beine ect. und in zB. Kopf steckt nochmal Augen,Mund,Haare,Gesicht und im Gesicht stecken dann nochmal 4 MC's in welchen wieder 4 MC's stecken.
nur um euch zu zeigen wie tief die MC's verschachtelt sind. Und mit dieser Klasse soll man die einzelnen teile zusammenwürfeln können.
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 116 117 118 119 120 121 122 | package {
import flash.display.MovieClip;
public class Figur extends MovieClip {
private var hautfarbe:int;
private var haarfarbe:int;
private var frisur:int;
private var gesicht:int;
private var mund:int;
private var augen:int;
private var oberkörper:int;
private var shirtfarbe:int;
private var ärmelfarbe:int;
private var oberarm:int;
private var hand:int;
private var schuhe:int;
private var hosenfarbe:int;
public function Figur() {
this.hautfarbe = 1;
this.haarfarbe = 1;
this.frisur = 1;
this.gesicht = 1;
this.mund = 1;
this.augen = 1;
this.oberkörper = 1;
this.shirtfarbe = 1;
this.ärmelfarbe = 1;
this.oberarm = 1;
this.hand = 1;
this.schuhe = 1;
this.hosenfarbe = 1;
}
public function setHautfarbeVor():void{
trace("Hautfarbe:"+ hautfarbe);
trace("Gesicht:"+ gesicht);
if(this.hautfarbe==4){
this.hautfarbe=1;
}else{
this.hautfarbe += 1;
}
Aussehen();
}
public function setHautfarbeZurück():void{
trace("Hautfarbe:"+ hautfarbe);
trace("Gesicht:"+ gesicht);
if(this.hautfarbe==1){
this.hautfarbe=4;
}else{
this.hautfarbe -= 1;
}
Aussehen();
}
public function setGesichtVor():void{
trace("Hautfarbe:"+ hautfarbe);
trace("Gesicht:"+ gesicht);
if(this.gesicht==4){
this.gesicht=1;
}else{
this.gesicht += 1;
}
Aussehen();
}
public function setGesichtZurück():void{
if(this.gesicht==1){
this.gesicht=4;
}else{
this.gesicht -= 1;
}
Aussehen();
}
public function Aussehen():void{
if(this.gesicht==1){
this.Kopf.Gesicht.K1.gotoAndStop(hautfarbe);
}else if(this.gesicht==2){
this.Kopf.Gesicht.K2.gotoAndStop(hautfarbe);
}else if(this.gesicht==3){
this.Kopf.Gesicht.K3.gotoAndStop(hautfarbe);
}else if(this.gesicht==4){
this.Kopf.Gesicht.K4.gotoAndStop(hautfarbe);
}
if(this.oberarm==1){
this.ArmV.Arm.ArmNormal.gotoAndStop(hautfarbe);
this.ArmH.Arm.ArmNormal.gotoAndStop(hautfarbe);
}else if(this.oberarm==2){
this.ArmV.Arm.ArmStark1.gotoAndStop(hautfarbe);
this.ArmH.Arm.ArmStark1.gotoAndStop(hautfarbe);
}else if(this.oberarm==3){
this.ArmV.Arm.ArmStark2.gotoAndStop(hautfarbe);
this.ArmH.Arm.ArmStark2.gotoAndStop(hautfarbe);
}else if(this.oberarm==4){
this.ArmV.Arm.ArmFett.gotoAndStop(hautfarbe);
this.ArmH.Arm.ArmFett.gotoAndStop(hautfarbe);
}
if(this.hand==1){
this.ArmV.Hand.HandNormal.gotoAndStop(hautfarbe);
this.ArmH.Hand.HandNormal.gotoAndStop(hautfarbe);
}else if(this.hand==2){
this.ArmV.Hand.HandFaust.gotoAndStop(hautfarbe);
this.ArmH.Hand.HandFaust.gotoAndStop(hautfarbe);
}else if(this.hand==3){
this.ArmV.Hand.HandFläche.gotoAndStop(hautfarbe);
this.ArmH.Hand.HandFläche.gotoAndStop(hautfarbe);
}else if(this.hand==4){
this.ArmV.Hand.HandZeigend.gotoAndStop(hautfarbe);
this.ArmH.Hand.HandZeigend.gotoAndStop(hautfarbe);
}
}
}
}
|
Hier die Stage-klasse welche ich stark gekürzt habe. Eigentlich sind es 800 Zeilen Code aber das meiste sind nur hin und hergeschiebe von Buttons. Erzeugung, Größe, Position ect. von ca. 30 Buttons.
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 | import flash.display.MovieClip;
import flash.text.engine.TextBaseline;
var Hero:Figur = new Figur();
Hero.width = 113;
Hero.height = 182;
Hero.x = 107;
Hero.y = 285;
addChild(Hero);
addChild(Zeiger1);
addChild(Zeiger12);
Zeiger1.addEventListener(MouseEvent.CLICK, Z1C);
...
Zeiger13.addEventListener(MouseEvent.CLICK, Z13C);
function Z1C(event:MouseEvent):void{
Hero.setHautfarbeVor();
}
function Z12C(event:MouseEvent):void{
Hero.setHautfarbeZurück();
}
function Z2C(event:MouseEvent):void{
Hero.setGesichtVor();
}
function Z13C(event:MouseEvent):void{
Hero.setGesichtZurück();
}
|
Wenn jetzt also Z1C und Z12C betätigt werden funktioniert alles super. Wenn ich dann aber Z2C oder Z13C betätige bekomme ich
"TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Figur/Aussehen()
at Figur/setGesichtVor()
at Spiel_fla::MainTimeline/Z2C()"
undzwar in den Zeilen:
ActionScript:1 2 3 4 5 6 7 | ...
this.Kopf.Gesicht.K2.gotoAndStop(hautfarbe);
...
this.Kopf.Gesicht.K3.gotoAndStop(hautfarbe);
...
this.Kopf.Gesicht.K4.gotoAndStop(hautfarbe);
...
|
Diese Zeilen sind aber vollkommen in Ordnung weil ich sie schon bei den Buttons nutzte welche Funktionierten -.- ...
Ich hoffe ihr seid nicht Abgeschreckt von der Fülle an Infos ... Danke für eure Bemühungen. | | | Beiträge: 69 Registriert: Apr 2013
| 26.02.2016, 13:49
Hallo !
Der Fehler entsteht immer wen Flashs die Action nicht findet oder die noch nicht bereit ist.
Das scheint so zu sein das er bei dir nicht mehr zurück findet.
Ich nehme bei so etwas immer eine Variable (Hautfarbe = 0;), da kann ich immer prüfen ob der beim Umschalten die Variable auch verändert. Dann kann ich von überall aus sagen
if(Hautfarbe ==1){ this.Kopf.Gesicht.K2.gotoAndStop(1);}
oder
this.Kopf.Gesicht.K2.gotoAndStop(Hautfarbe);
Dadurch kann man auch mit dem Schalter einfach immer den Wert von Hautfarbe erhöhen.
function Z1C(event:MouseEvent):void{
Hautfarbe = Hautfarbe + 1();
} | Geändert von Tetenja am 26.02.16 um 13:50 Uhr | |
|
| Ähnliche Beiträge zum Thema | |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News
Regeln & Bedingungen
|