Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-03-2011, 20:20   #1 (permalink)
voll dabei
 
Benutzerbild von Biervampir
 
Registriert seit: Feb 2011
Beiträge: 9
Post Verberbung

guten abend liebe flashforum gemeinde,
verzfeilfle zur zeit total an den verebungen oder instanzen oder ähnlichen von AS3...

möchte mehrmals einen movieclip wiedergeben, bzw auch dann noch wandern lassen ( einen schuss)
ich habe ein mini spaceshooter geschrieben, aber bis jetzt kann man nur wieder schießen, wenn der schuss am ende des bildschirms angekommen ist, da er dann wieder auf ursprungsposition gesetzt wird...
jetzt wollte ich das so programmieren dass man öfters hintereinander schießen kann und man auch die x und y koordinaten jedes einzelnen schuss abfragen kann....

link zum bisherigen spiel: http://holderberg.de.vu/spiel.php
link zum bisherigen fla code:http://knorke.square7.ch/Programmiertes/source.txt

da habe ich mich schon ein bisschen weiterentwickelt, bzw. wollte das eigentlich machen, aber stehe jetzt da und weiß nicht weiter.

ich kann jetzt zwar einen movieclip öfters anzeigen:

Code:
var schussi1:schuss= new schuss();
var schussi2:schuss= new schuss();
var schussi3:schuss= new schuss();

schussi1.x=30;
schussi1.y=30;
addChild(schussi1);
schussi2.x=100;
schussi2.y=100;
addChild(schussi2);
schussi3.x=300;
schussi3.y=300;
addChild(schussi3);
aber hätte gerne, dass die zahl hinter der variable automatisch hochgezählt wird bei jedem klick, das wollte ich so lösen:

Code:
import flash.events.MouseEvent;
stage.addEventListener(MouseEvent.CLICK, schießen);

var i:int=0;

function schießen(evt:MouseEvent)
{
	i++;
	var ("schussi"+i):schuss = new schuss();
	 ("schussi"+i).x = 100+i; 
	 ("schussi"+i).y = 100+i; 
	addChild(("schussi"+i));
}
dann bekomme ich aber folgende fehlermeldung:

Code:
Szene 1, Ebene 'Actions', Bild 1, Zeile 30	1086: Syntaxfehler: Semikolon vor rightparen erforderlich.
Szene 1, Ebene 'Actions', Bild 1, Zeile 30	1084: Syntaxfehler: identifier vor leftparen erforderlich.
Also die eigentliche frage ist, wie ich die variable schussi mit einer zahl versehen kann, die durch eine schleife oder ein ereignis geändert wird, so dass die variable dann schussi1, schussi2, schussi3 usw... halt im ersten beispiel heißt

habe schon viele foren durchsucht da gab es dann lönugen mit getchildbyid mit arrays mit this["schussi1"+i]....

weiß langsam nicht mehr weiter, denn nichts hat geholfen...

ich danke euch schonmal im vorraus und liebe grüße
Mario
Biervampir ist offline   Mit Zitat antworten
Alt 01-03-2011, 20:28   #2 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.041
Hat eigentlich nichts mit Vererbung zu tun.

Wenn du von einem viele haben möchtest, solltest du sie alle in einer Datenstruktur abspeichern.
Diese gibt es in diversen Geschmacksrichtungen.
Dir wird das Array am besten schmecken.
__________________
anbei Grüße vom milchreis: Viva la [Silb]

[Von null auf Flash in einem Klick.] <<< klick

Geändert von milchreis (01-03-2011 um 20:30 Uhr)
milchreis ist gerade online   Mit Zitat antworten
Alt 01-03-2011, 20:40   #3 (permalink)
voll dabei
 
Benutzerbild von Biervampir
 
Registriert seit: Feb 2011
Beiträge: 9
array

mit array hab ich es irgendwie nicht geschafft...
das sah dann in etwa so aus:

var feind:Array=new array();

i++;

feind[i].x+=10; //bewegung in x richtung;


weiß nicht mehr wie das genau war aber so in etwa und das ging nicht... kein wunder ist ja auch nirgendwo der mc eingebunden...


hab das dann auch so probiert :
feind[i]:MovieClip= new feind();
bzw auch
feind[i]= new MovieClip(feind);

wenn ich das jetzt so richtig aus meinen erinnerungen abgetippt habe, hat nix davon funktioniert...

könntest du mir denn bitte ein beispiel nennen, wie das gehen könnte??ß mit den arrays und den MC's??


lg
Mario
Biervampir ist offline   Mit Zitat antworten
Alt 01-03-2011, 20:46   #4 (permalink)
Neuer User
 
Benutzerbild von Opi3
 
Registriert seit: Dec 2010
Beiträge: 363
Gucke dier mal diesen Code an:

Zitat:
var baelle:Array = new Array();
const stageheight:int = stage.stageHeight;
const stagewidth:int = stage.stageWidth;
var anzahldurchläufe:int = 0;
//////////////////////////////////////////////////////////////////;
stage.addEventListener(Event.ENTER_FRAME, alleswassichwiederholt);
stage.addEventListener(MouseEvent.CLICK, newBall);
//////////////////////////////////////////////////////////////////;
function alleswassichwiederholt(event:Event):void
{
for (var i:int = 0; i < anzahldurchläufe; ++i)
{
var ballw:MovieClip = baelle[i];
ballw.x += baelle[i][0];//x
ballw.y += baelle[i][1];//y
if (ballw.x >= stagewidth - ballw.width - 10 || ballw.x <= 10)

baelle[i][0] *= -1;
}
if (ballw.y >= stageheight - ballw.height - 40 || ballw.y <= 40)
{
baelle[i][1] *= -1;
}
}
}
//////////////////////////////////////////////////////////////////
function newBall(event:MouseEvent):void
{
geschossen();
baelle.push( new Ball());
var ball:MovieClip = baelle[baelle.length - 1];
ball.y = kanone.y ;
ball.x = kanone.x - ball.width - 11;
var winkelschuss:Number = - Math.atan2(kanone.y - stage.mouseY,stage.mouseX - stagewidth - 11 - ball.height);
baelle[baelle.length - 1][0] = 1 / 2 * Math.cos(winkelschuss);//x
baelle[baelle.length - 1][1] = 1 / 2 * Math.sin(winkelschuss);//y
addChild(ball);
anzahldurchläufe = baelle.length;

}

Da dürftest du eigentlich erkennen wie das mit der Array geht[Ball] heißt die classe des mc in der bibo.
Zitat:
Anderer Foren beitrag
__________________
Es gibt 7 Milliarden Menschen und einer davon bin ich.

Eine Pizza mit r = z und dicke = a hat v = Pi*z*z*a;
Opi3 ist offline   Mit Zitat antworten
Alt 01-03-2011, 21:44   #5 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.041
Zitat:
Zitat von Biervampir Beitrag anzeigen
hab das dann auch so probiert :
feind[i]:MovieClip= new feind();
da hast du schon in die richtige Richtung gedacht.
Das Problem ist, das dien Array die Länge 0 hat, also keine Einträge besitzt.
Deshalb kannst du auch keinen i-ten Eintrag finden oder bearbeiten.

mittels feind.push(new Feind()); sollte es gehen das array zu befüllen, eine Typangabe benötigst du dabei nicht.
(Vector ist ein typisiertes Array; Array an sich ist aber untypisiert, nimmt also alles entgegen)

Feind übrigens deshalb groß, weil man Klassennamen generell groß schreibt (man muss nicht, aber man sollte)
__________________
anbei Grüße vom milchreis: Viva la [Silb]

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist gerade online   Mit Zitat antworten
Alt 03-03-2011, 19:42   #6 (permalink)
voll dabei
 
Benutzerbild von Biervampir
 
Registriert seit: Feb 2011
Beiträge: 9
danke

dankeschön an alle die mir geholfen haben, am besten hat mir der letzte eintrag von milchreis geholfen, war schön verständlich

liebe Grüße
Mario
Biervampir ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
addchild, klassen, methoden, variablen, vererbung

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



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele