Attach Movie?

georgie1

Grünschnabel
hi alle zusammen
hab folgendes Problem:
hab eine bewegliche Plattform (schiesser) mit der man per attach Befehl einen Schuss abgeben können soll
Bis jetzt kann ich den Schuss zwar richtig attachen, nur weiß ich nicht wie ich dem Schuss eine Bewegung nach oben geben soll
Mein Quelltext für das Attachen:

if(Key.isDown(Key.SPACE)) {

this.attachMovie("Schuss","Schuss1+1",this.getNextHighestDepth (), {_x:_x.Schiesser,_y:_y.Schiesser})

}

Das Schuss1+1 soll bewirken, dass der Name Schuss eins, pro Schuss eins dazuzählt. Weis aber nicht genau ob das auch wirkt^^
Hoffe ihr könnt mir helfen
mfg
 
Hi,

da scheint einiges im Argen zu sein: Zunächst brauchst Du eine anständige Laufvariable, um die Instanzen vernünftig hochzählen zu können. Dafür ist es nötig zu wissen, wo und in welchem Kontext Dein Code steht.

Mit attachMovie("Schuss","Schuss1+1" erstellst Du nur einen Clip mit dem Instanznamen "Schuss1+1". ;)

Die Bewegung kannst Du dann mit einer onEnterFrame-Methode realisieren.

Um Dir konkret weiterhelfen zu können, müsste ich die komplette .fla sehen - poste die bitte einmal als Anhang.

Gruß
.
 
hrrrm
hab gar nicht gewusst das da so viel Arges drinnen ist ^^
hoffe du kannst mir der fla. was anfangen
mfg
 

Anhänge

  • Attachen.fla
    16 KB · Aufrufe: 65
Hi,

Da Du anscheinend mit Flash 6 arbeitst, kann ich Dir keine korrigierte .fla (habe hier nur Flash 9) schicken.

Probier aber mal folgendes:
  • Entferne die Instanz von "Schuss" von der Bühne: die brauchst Du nicht, um neue Schüsse zu instanzieren.

  • Entferne den Code auf der Instanz von "Schiesser". Es ist übersichtlicher, Code nur auf Zeitleisten zu notieren.

  • Lege auf der Haptzeitleiste eine neue Ebene für AS-Code an.

  • Notiere auf dieser neuen Ebene folgenden Code:
Code:
var kl = new Object();

kl.onKeyDown = function() {
	switch(Key.getCode()) {
		case 32: newSchuss(); break;
	}
}

Key.addListener(kl);

this.onEnterFrame = function() {
	if (Key.isDown(Key.LEFT)) Schiesser._x -= 2;
	if (Key.isDown(Key.RIGHT)) Schiesser._x += 2;
	if (Key.isDown(Key.UP)) Schiesser._y -= 2;
	if (Key.isDown(Key.DOWN)) Schiesser._y += 2;
}


var amt = 0;

function newSchuss() {
	amt ++;
	if (amt > 1000) amt = 0;
	var shot = this.attachMovie("Schuss", "shot" + amt, amt);
	shot._x = Schiesser._x;
	shot._y = Schiesser._y - 50;
	shot.onEnterFrame = function() {
		this._y -= 5;
		if (this._y < -10) this.removeMovieClip();
	}
}

Gruß
.
 
hey thx
klappt total gut
eine frage noch:
will einen blauen balken der bei jedem schuss kleiner wird. nur weiß ich nicht genau wie. Hab eine Variable En gemacht die 0 ist und bei jedem Schuss 1 wird. Wenn sie 1 ist hab ich eingegeben:
if( var En ==1) {
_root.Energie.width-5;
}

bin mir aber ziemlich sicher dass der width teil nicht stimmt. Energie ist der Balken, der kleiner werden soll.
mfg
 
if(En ==1) {
_root.Energie._width = _root.Energie._width - 5;
}

So müsste es heißen, wenn du willst das es Animiert kleiner wird müsstest du noch ein onEnterFrame einbauen.(ungetestet)

PHP:
var dif = 5;
var diffaktor = 0.1;

if(En ==1) {
   this.onEnterFrame = function(){
      dif = dif - diffaktor;
      _root.Energie._width = _root.Energie._width - diffaktor;
      if(dif == 0){
         dif = 5;
         delete this.onEnterFrame
      }
}

Noch ein Tipp. Ich würde Variablen immer in Kleinbuschstaben schreiben. Denn normalerweiße werden Konstanten in Großbuchstaben geschrieben um kenntlich zu machen um was es sich handelt.
Und so etwas "En" würde normalerweiße ein Klasse sein.

pirol
 

Neue Beiträge

Zurück