Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-10-2010, 11:30   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2010
Ort: nähe Bremerhaven
Beiträge: 22
Exclamation AS3 Spiel

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"));
			}
		}
		
		
		
	}
}
xXRockMyLifeXx ist offline   Mit Zitat antworten
Alt 12-10-2010, 11:40   #2 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
der Fehler dürft hier sein:
ActionScript:
  1. _fish.addChild(_fisharray[Math.round(Math.random()+3)]);

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:
  1. _fish.addChild(_fisharray[Math.floor(Math.random()*4)]);
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 12-10-2010, 12:23   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2010
Ort: nähe Bremerhaven
Beiträge: 22
Danke Thomas...
hast mir sehr geholfen

Tja ich muss halt auch noch einiges dazulernen
xXRockMyLifeXx ist offline   Mit Zitat antworten
Alt 12-10-2010, 14:11   #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("");
				}
			 }
			
		}
Hier der andere Teil der noch wichtig ist:
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;
		}
xXRockMyLifeXx ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
as3, child, error #2007, null

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ä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


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele