| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Oct 2010 Ort: nähe Bremerhaven
Beiträge: 22
|
Hey Leute... Muss für mein Praktikum ein kleines Spiel programmieren. Dabei sollen verschiedene Objekte vom rechten Rand nach links laufen. Die verschiedenen Objekte sind Movieclips, die in einem Array gespeichert werden. Das Array wiederum soll einer Variablen hinzugefügt werden. Genau an der Stelle tritt anscheinend der Fehler auf. Den Code den ich zur Hilfe bekommen habe ist von einer Freundin. Bei ihr hats auch funktioniert. Beim Vergleich kann ich keinen offensichtlichen Fehler erkennen. Vielleicht könnt ihr mir helfen. Ich bekomme immer folgenden Fehler: TypeError: Error #2007: Parameter child darf nicht 'null' sein. at flash.display:: DisplayObjectContainer/addChild() at Fishes/createFish()[/schule/HaiGame/source/classes/Fishes.as:48] at Fishes/onAddedToStage()[/schule/HaiGame/source/classes/Fishes.as:27] at flash.display:: DisplayObjectContainer/addChild() at GameManager/onTimer()[/schule/HaiGame/source/classes/GameManager.as:74] at flash.utils::Timer/_timerDispatch() at flash.utils::Timer/tick() Hier noch mein Code: Code: package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
public class Fishes extends Sprite
{
private var _fisharray:Array;
private var _fish:Sprite=new Sprite();
private var _speed:Number;
private var _currentSpeed:Number;
private var _aal:MovieClip;
private var _fish1:MovieClip;
private var _fish2:MovieClip;
private var _fish3:MovieClip;
private var _score:int;
public function Fishes()
{
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function onAddedToStage(event:Event):void{
createFish();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
_speed=Math.random()*10*5;
_currentSpeed=0;
}
public function getScore():int{
return _score;
}
private function createFish():void{
_aal= new AalMC();
_fish1= new KugelfischMC();
_fish2= new Fisch2MC();
_fish3= new Fisch3MC();
_fisharray= new Array(_aal,_fish1,_fish2, _fish3);
_fish= new Sprite();
_fish.addChild(_fisharray[Math.round(Math.random()+3)]);
addChild(_fish);
/*_fish.graphics.beginFill(0x0);
_fish.graphics.drawCircle(0,0,10);
_fish.graphics.endFill();*/
y=Math.random()*+stage.stageHeight-100;
if(y<=30){
y=60;
}
x=stage.stageWidth+ _fish.width;
}
public function destroy():void{
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(event:Event):void{
_currentSpeed+=0.1;
x-=_currentSpeed;
if(_currentSpeed >=_speed){
x-= _speed;
}
x-=0.2;
if(x <= -20 ){
dispatchEvent(new Event("fishComplete"));
}
}
}
} |
| | |
| | #2 (permalink) |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
|
der Fehler dürft hier sein: ActionScript:
Math.round(Math.random()+3)] erzeugt entweder 3, oder 4 mit einer 50/50 Chance. dein Array _fisharray hat aber nur 4 Einträge, also 0-3. _fisharray[4] ist null, und genau das meldet er dir! korrekt müsst es lauten: ActionScript:
|
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Oct 2010 Ort: nähe Bremerhaven
Beiträge: 22
| Was hab ich jetzt wieder falsch gemacht???
Okay...gleiches Spiel anderes Problem. Mein Hit test will nicht funktionieren -.- Der Fehler liegt gleich in der 2. und 3. Zeile denke ich. Ich muss ehrlich zugeben, dass ich auch nicht genau weiß wie ich auf die einzelnen Elemente meines Arrays zugreifen kann. Code: private function hitTest(event:Event):void{
var fishes:Array=_fish.getFishes();
for each(var fish:Fishes in fishes)
{
var hitX:Number = _shark.x + _shark.width / 2;
var hitY:Number = _shark.y - _shark.height / 2;
var hitY2:Number = _shark.y + _shark.height / 2;
if(fish.hitTestPoint(hitX, hitY, true) || fish.hitTestPoint(hitX, hitY2, true))
{
trace("kill fish");
}else{
trace("");
}
}
} Code:
private function createFish():void
{
_aal= new AalMC();
_fish1= new KugelfischMC();
_fish2= new Fisch2MC();
_fish3= new Fisch3MC();
_fisharray= new Array(_aal,_fish1,_fish2, _fish3);
_fish= new Sprite();
/*_fish.graphics.beginFill(0x0);
_fish.graphics.drawCircle(0,0,10);
_fish.graphics.endFill();*/
_fish.addChild(_fisharray[Math.floor(Math.random()*4)]);
addChild(_fish);
y=Math.random()*+stage.stageHeight-100;
if(y<=30)
{
y=60;
}
x=stage.stageWidth+ _fish.width;
}
public function getFishes():Array
{
return _fisharray;
} |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| as3, child, error #2007, null |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Spiel... | AnimationFee84 | ActionScript 1 | 5 | 28-09-2006 08:31 |
| Fragen zum Spiel ->...+ Quiz + Spiel +... | Neun | Flash Einsteiger | 5 | 24-05-2006 00:14 |
| Spiel | Hellter | PHP und MySQL | 1 | 25-11-2003 16:18 |
| Spiel | Gamma-Ray | Flash 4 und Flash 5 | 1 | 31-08-2002 22:24 |
| Spiel | Engemann | Flash 4 und Flash 5 | 6 | 31-05-2002 19:08 |