Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-03-2007, 16:24   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 2
Question Eventhandler von MC per Schleife belegen

Hallo,

Suche eine Möglichkeit die Eventhandler von MCs die ich in einem Array erfasse per Schleife zu belegen. Das hier Funktioniert leider nicht:

PHP-Code:
var galitems = new Array(mc1,mc2,mc3);

for (
i=0;i<=galitems.length;i++) {
    
galitems[i].onRollOver = function() {
        
bzoomin (galitems[i]);
    }
    
galitems[i].onRollOut = function() {
        
bzoomout (galitems[i]);
    }

während das keine Probleme hat:

PHP-Code:
mc1.onRollOver = function() {
    
bzoomin (mc1);
}
mc1.onRollOut = function() {
    
bzoomout (mc1);
}

... 
Das Ganze um RollOver und RollOut von (statischen) Gallerieelementen zu belegen. Falls es da noch elegantere Möglichkeiten gibt nehme ich die auch gerne.

Gruß
Alex
alexandru ist offline   Mit Zitat antworten
Alt 21-03-2007, 16:46   #2 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Du mußt die Laufvariable im MovieClip speichern,
damit auch später noch darauf zugegriffen werden kann.

PHP-Code:
var galitems = new Array(mc1,mc2,mc3); 

for (
i=0;i<=galitems.length;i++) { 
    
galitems[i].id i;
    
galitems[i].onRollOver = function() { 
        
bzoomin (galitems[this.id]); 
    } 
    
galitems[i].onRollOut = function() { 
        
bzoomout (galitems[this.id]); 
    } 

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 21-03-2007, 17:21   #3 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Nur so: In diesem Fall hier ginge auch this.
PHP-Code:
mc1.onRollOver = function() { 
    
bzoomin (this); 

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 21-03-2007, 17:32   #4 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Zitat:
Zitat von Der Frager Beitrag anzeigen
In diesem Fall hier ginge auch this.
Ohja, stimmt.

gruß, gaspode

Hallo, Der Frager!
gaspode ist offline   Mit Zitat antworten
Alt 23-03-2007, 15:18   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 2
Klappt, danke!

@gaspode: Cool, wusste garnicht dass man ohne weiteres eigene Attribute an Objekte heften kann, wird mir einiges erleichtern.
alexandru ist offline   Mit Zitat antworten
Alt 21-11-2009, 22:56   #6 (permalink)
Neuer User
 
Benutzerbild von Alagar
 
Registriert seit: Nov 2009
Beiträge: 7
kann ich auch diesen Eventhandler in eine for-Schleife bekommen?
Möchte das ganze 10x ablaufen lassen.
Code:
_root.schuss.onPress = function() {
		_root.braut.play();
Ich arbeite mit CS3 und Action Script 2.0
Alagar ist offline   Mit Zitat antworten
Alt 22-11-2009, 13:30   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
die frage ist nicht ganz klar: soll 10x onPress ausgeführt werden, oder 10x play, selbes oder unterschiedliche mc's?

z.b. bei 10x braut.play();
dazu musst du irgendwo eine variable installieren, die von 10 runter zählt.
deren auswertung muss am ende von _root.braut.play(); erfolgen (wo und wann auch immer das sein mag).
denn ein zweites mal darf ja erst starten, wenn das erste play fertig ist.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (22-11-2009 um 13:35 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 22-11-2009, 14:56   #8 (permalink)
Neuer User
 
Benutzerbild von Alagar
 
Registriert seit: Nov 2009
Beiträge: 7
Ok, also es ist so, dass der Button 'schuss' das Event 'braut' startet.
jetzt möcht ich das so machen, dass ein Klick von dem Button das Event 'braut' 10 mal startet.
War das besser ausgedrückt? Bin leider wahnsinnig schlecht im Flash-Jargon bzw überhaupt in Flash ^^
danke aber schonmal für die Mühe.
Alagar ist offline   Mit Zitat antworten
Alt 22-11-2009, 15:05   #9 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
also die animation 'braut' soll 10x hintereinander ablaufen?
das habe ich dir ja schon erklärt.

was wir nicht wissen können (und deshalb musst du das selbst lösen) wo und wann die 'braut' fertig ist. ich sage mal im letzten frame des 'braut'-mc's.
und genau da könntest du einen zähler herunterzählen z.b.
Code:
root.schuss.onPress = function() {
  _root.braut.loop=10;
  _root.braut.gotoAndPlay(1);
}

// am ende der animation braut z.b.:
if (loop) {
  loop--;
  gotoAndPlay(1);
} else {
  stop();
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 22-11-2009, 15:09   #10 (permalink)
Neuer User
 
Benutzerbild von Alagar
 
Registriert seit: Nov 2009
Beiträge: 7
Tja, wenn ich das selbst so genau wüsste bzw verstünde ^^
Aber danke schonmal. Werd einfach ganz viele Stellen ausprobieren, irgendwo wirds schon reinpassen

EDIT: Oder ich poste mal meinen Quelltext, vielleicht kennt sich dann wer aus.

Hier mal Script von Szene 1 Bild 1:
Code:
n=0;
globSpeed=1.1;
brautjungferSpeed=3;
  

_root.brautjungfer.onEnterFrame = function(){

		if (Key.isDown(Key.RIGHT)){
			if(this._x <= (Stage.width - this._width) ){
				this._x += _root.brautjungferSpeed
			}
		}else if (Key.isDown(Key.LEFT)){
			if(this._x >= 222 ){
				this._x -= _root.brautjungferSpeed
			}
		}


	for (i=0; i<=n; i++) {
			if (this.dropzone.hitTest(_root['strauss' + i])){
				alteXPos = _root['strauss' + i]._x;
				_root['strauss' + i].removeMovieClip();
				_root.brautjungfer.attachMovie("strauss","strauss" + i, i);
				_root.brautjungfer['strauss' + i]._y -= 220; //_root.brautjungfer['strauss' + i]._height
				_root.brautjungfer['strauss' + i]._x = 0//alteXPos - _root.brautjungfer._x;
				
				}
			
		}
		
	}
_root.schuss.onPress = function() {
	_root.braut.loop=10;
	_root.braut.gotoAndPlay(1);
}

function wirfStrauss() {
	_root.attachMovie('strauss', 'strauss'+ n, n)

	_root["strauss" + n]._x = 40;
	_root["strauss" + n]._y = 200;
	
	_root["strauss" + n].speed = _root.globSpeed*random(4.2)+2;

	_root["strauss" + n].xmov = _root["strauss" + n].speed * Math.cos(-20*Math.PI/180);
	_root["strauss" + n].ymov = _root["strauss" + n].speed * Math.sin(-60*Math.PI/180);

	_root["strauss" + n].onEnterFrame = function () {
		this._x+= this.xmov;
		this._y+= this.ymov;

		this.ymov += this.speed /50;

		if(this._y > Stage.height)this.removeMovieClip();
		

	}
	
	
	//Zaehler erhoehen
	n++;
}
Script von 'braut' Bild1:
Code:
stop();
Script von 'braut' Bild20:
Code:
//ausfuehren von wirfBall

_root.wirfStrauss();

Geändert von Alagar (22-11-2009 um 15:18 Uhr)
Alagar ist offline   Mit Zitat antworten
Alt 22-11-2009, 15:21   #11 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
if(this._y > Stage.height)this.removeMovieClip();

ich vermute einmal: nachdem der strauss auf dem boden liegt, dann ist schluss mit lustig.

dann gehört die wiederholung wohl hier hin:
Code:
if(this._y > Stage.height) {
  this.removeMovieClip();
  trace("nur zum testen: "+_root.braut.loop);
  if (_root.braut.loop) {
    _root.braut.loop--;
    _root.braut.gotoAndPlay(1);

  }
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (22-11-2009 um 15:23 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 22-11-2009, 15:27   #12 (permalink)
Neuer User
 
Benutzerbild von Alagar
 
Registriert seit: Nov 2009
Beiträge: 7
Nein funktioniert nicht


EDIT: Ok funktioniert doch, allerdings nur wenn die Sträusse nicht gefangen werden, also nur wenn sie am Boden landen, allerding sollte es auch nach einem gefangenen Strauss weitergehen bis 10 geworfen und/oder 5 gefangen wurden

EDIT: ich versuche jetzt (this._y > Stage.height) mit einer ODER-Verknüpfung so zu verbinden, dass auch die gefangenen Strausse in die selbe if-bedingung leiten, hab allerdings noch nicht genau ruasgefunden, wie ^^

Geändert von Alagar (22-11-2009 um 16:01 Uhr)
Alagar ist offline   Mit Zitat antworten
Alt 22-11-2009, 17:38   #13 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
Zitat:
Zitat von Alagar Beitrag anzeigen
.. ich versuche jetzt (this._y > Stage.height) mit einer ODER-Verknüpfung so zu verbinden ..
lass es :-)

für jede noch so kleine aufgabe erstelle eine eigene function.
also z.b. die doBrautStraussWurfWiederhol-Funktion.
so eine funktion kannst du von unterschiedlichen stellen aus aufrufen und hier zentral die bedingungne für ein wiederholen programmieren. ist übersichtlich, verständlich und wartungsfreundlich.
z.b.
Code:
function doBrautStraussWurfWiederhol(): void {
  var wurfWiederholung:Boolean=false;
  //
  if (bedingung1) {
    wurfWiederholung=true;
  }
  if (bedingung2) {
    wurfWiederholung=true;
  }
  //
  if (wurfWiederholung) {
  } else {
  }
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (22-11-2009 um 17:40 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 22-11-2009, 19:04   #14 (permalink)
Neuer User
 
Benutzerbild von Alagar
 
Registriert seit: Nov 2009
Beiträge: 7
In der theorie keine schlechte Idee und ich denke ich versteh auch was du meinst. meine größte Schwierigkeit ist immer nur zu wissen, wo ich diese Dinge alle reinschreib. Bzw wo ich die neue funktion aufruf.

hat sich schon erledigt. hab jetzt einen kompromiss geschlossen und bin halbwegs zufrieden ^^
Herzlichen Dank für deine Hilfe!

Geändert von Alagar (22-11-2009 um 20:07 Uhr)
Alagar ist offline   Mit Zitat antworten
Alt 22-11-2009, 20:59   #15 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
du behälst die blumen und wirfst einmal die braut hin? :-)))
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (23-11-2009 um 11:56 Uhr)
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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 08:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele