Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-09-2005, 19:58   #1 (permalink)
Neuer User
 
Benutzerbild von GiggleCat
 
Registriert seit: Sep 2005
Ort: Bei den sieben Zwergen
Beiträge: 5
Question hitTest + "random.mc"+i

Hallöchen!

Meine Problemos:

1. ganz wichtig
Als in einen einfachen MC mit hitTest abgefragt habe, funktionierte alles wunderbar. Doch dann, als ich dann den MC dynamisch in den Film einfließen lies, funktioniert der hitTest nicht mehr

2. interessant
Abgesehen davon, fände ich es toll, wenn mir mal jemand für dumm doofe dieses Script detailliert erklärt, weil es einfach nicht in meinen Kopf will... ich hasse sowas. Funktionieren tut es wenigstens wie ich will.

ActionScript:
  1. function kiste(pAnzahl, pBreite, pHoehe, pkistenDim, pkistenDichte) {
  2.     for (var i = 1; i<=5; i++) {
  3.         this.attachMovie("kClip", "kiste"+i, i);
  4.         this["kiste"+i]._xscale = this["kiste"+i].skal;
  5.         this["kiste"+i]._yscale = this["kiste"+i].skal;
  6.         this["kiste"+i].xpos = this["kiste"+i]._x;
  7.         this["kiste"+i]._x = -10+(Math.random()*800);
  8.         this["kiste"+i].zufall = 1+(Math.random()*2);
  9.         this["kiste"+i]._y = -10+(Math.random()*pHoehe);
  10.         this["kiste"+i].wind = -Math.PI+(Math.random()*Math.PI);
  11.         this["kiste"+i].onEnterFrame = function() {
  12.             this.rad += ((this.wind/180)*Math.PI);
  13.             this._x -= Math.cos(this.rad);
  14.             this._y += this.zufall;
  15.             if (this._y>=pHoehe) {
  16.                 this._y = -5;
  17.             }
  18.             if ((this._x>=pBreite) || (this._x<=0)) {
  19.                 this._x = -10+(Math.random()*pBreite);
  20.             }
  21.         };
  22.     }
  23. }
  24. // Aufruf der Funktion
  25. kiste(10, Stage.width, Stage.height, 10,100);


Script gefunden und mal auf meine Wünsche abgeändert. Verstehen tu ich aber manches nicht, weshalb pAnzahl, wenn es sowieso nirgend mehr erscheint.

Ich will nicht nur einfach Scripte kopieren und kleine Dinge abändern, ich will's eventuell auch mal verstehen um es vllt. selbst umzusetzen? Nein, da helfen die Bücher vom Kannengießer absolut gar nix. Aber sowas von gar nix...

3. sehr interessant
Gibt's denn noch eine Buch-Empfehlung?

Ja, 3 Wünsche in einem
GiggleCat ist offline   Mit Zitat antworten
Alt 11-09-2005, 21:09   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
"..1. ganz wichtig.."
ach was - mal ganz was neues! alle anderen posten nämlich ganz unwichtige sachen ;-)

"..Als in einen einfachen MC mit hitTest.."
ich sehe hier weit und breit keinen hitTest?

2.
"..Funktionieren tut es wenigstens wie ich will.."
aja?
ActionScript:
  1. // war mal sowas wie schneeflocken fallen?
  2. // ist aber dermassen vermukst (wer dass wohl war?)
  3. // dass es nicht mehr richtig geht kann.
  4. // hab's mal wieder irgendwie/-was hingebogen:
  5. function kiste(pAnzahl, pBreite, pHoehe) {
  6.     for (var i = 1; i<=pAnzahl; i++) {
  7.         var k = this.attachMovie("kClip", "kiste"+i, i);
  8.         // anfangspositionen auf stage verteilen
  9.         k._x = Math.random()*pBreite;
  10.         k._y = Math.random()*pHoehe;
  11.         //
  12.         // grösse zwischen 30 .. 100%
  13.         k._xscale = k._yscale=30+70*Math.random();
  14.         // grosse fallen schneller
  15.         k.fallspeed = k._xscale/30;
  16.         k.wind = Math.random();
  17.         k.onEnterFrame = function() {
  18.             this._y += this.fallspeed;
  19.             this._x += this.wind;
  20.             // unten angekommen, wieder ganz hoch stellen y=0 ist oben!
  21.             if (this._y>pHoehe+this._height) {
  22.                 this._y = -this._height;
  23.             }
  24.             // rechts rausgefallen, links wieder rein
  25.             if (this._x>pBreite+this._width) {
  26.                 this._x = -this._width;
  27.             }
  28.             // links rausgefallen, rechts wieder rein
  29.             if (this._x<-this._width) {
  30.                 this._x = pBreite+this._width;
  31.             }
  32.         };
  33.     }
  34. }
  35. // Aufruf der Funktion
  36. kiste(40, Stage.width, Stage.height);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 12-09-2005, 15:59   #3 (permalink)
Neuer User
 
Benutzerbild von GiggleCat
 
Registriert seit: Sep 2005
Ort: Bei den sieben Zwergen
Beiträge: 5
Das waren meine persönliche Prioritäten. "sehr wichtig" etc.

Ja, war es, habe einfach ein paar Sachen rausgelöscht, die ich nicht brauche. Kisten fallen ja nicht wie Schneeflocken vom Himmel oder?

Der Hittest ist Pixelgenau in einem anderen MC - als ich von der Kiste aus den Hittest versucht habe auszulösen, funktionierte das Zeug nicht.

_root.mc1.mc2 darauf reagiert er leider Gottes nicht.

Danke auch für deine Antwort, zwar versteh ich durch PHP langsam endlich AS richtig, blicke aber weiterhin durch den wirr warr wie "pAnzahl" nicht durch. Was für einen Sinn hat das? Wo wird es denn bitte aufgerufen? Hab ich was überlesen?

Frauen können nicht logisch denken ^^ ich weiss. *G
GiggleCat ist offline   Mit Zitat antworten
Alt 12-09-2005, 16:26   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
ich denke doch, dass ich dem pAnzahl wieder einen sinn gegeben habe und du hättest das bemerkt, wenn du meinen script mal ausprobiert hättest.
for (var i = 1; i<=pAnzahl; i++) {

"..Kisten fallen ja nicht wie Schneeflocken vom Himmel oder?.."
es gibt auch kleine kisten und es gibt auch grosse, fette schneeflocken ;-) und wenn die kiste an einem fallschirm hängt ...

zu deinem hitTest kann ich auch weiterhin nichts sagen. du hast weder den "..in einem anderen MC.."-script noch deine fla selbst veröffentlicht. bin kein hellseher und der bin ich auch nicht: "..leider Gottes nicht.."
ehrlich, den typen hab ich hier auch noch nie gesehen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 12-09-2005, 17:52   #5 (permalink)
Neuer User
 
Benutzerbild von GiggleCat
 
Registriert seit: Sep 2005
Ort: Bei den sieben Zwergen
Beiträge: 5
Unhappy

Versuche ich meine Frage anders zu formulieren:

Wie spreche ich denn die einzeln erzeugten Movieclips denn an, wenn ich einen hitTest ausführen möchte? Was für einen "Namen" hat denn der MC denn nun bekommen, durch das Skript?
kClip ist es nicht, noch kiste.

Den Hittest auf die Kiste zu setzen, funktioniert ebenfalls nicht. Da ich möchte, dass er auf einen bestimmten Bereich reagiert und nicht auf den kompletten MC.

Wie erwähnt, ich kann zwar _root.MC1.MC2 angeben für die Kollision, reagiert aber nicht darauf, kann man das anders lösen?
GiggleCat ist offline   Mit Zitat antworten
Alt 12-09-2005, 20:54   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
"..Versuche ich meine Frage anders zu formulieren.."
sorry, käse stinkt von allen seiten gleich ;-) da nützt das drehen wenig.
versuch es doch mal mit MEHR INFORMATIONEN z.b. indem du deine fla hier hochlädst. zumindestens mal das script von diesem ominösen mc veröffentlichst.
hilfreich wäre auch, wenn man wüsste, was du überhaupt machen willst. hitTest mit wem und warum???
solange du diese informationen für dich behälst kann dir hier niemand helfen :-(

"..kClip ist es nicht.."
nein. und raten bringt dich auch nicht weiter. im handbuch sind alle befehle und parameter beschrieben! das doch bitte mal durchblättern.

"..ich kann zwar _root.MC1.MC2 angeben für die Kollision.."
jou, kannst du. leider heisst hier niemand 'MC1' oder 'MC2'
die erzeugten mc's heissen, so wie DU sie benannt hast:
var k = this.attachMovie("kClip","kiste"+i, i);
somit
this.kiste1, this.kiste2, this.kiste3, ...

kannst du dir auch ansehen mit z.b.:
menüpunkt: steuerung/film testen
dann
menüpunkt: debugger/objeke auflisten

"..auf einen bestimmten Bereich reagiert und nicht auf den kompletten MC.."
und wer ist dieser 'bestimmte bereich'? ein bereich im swf oder ein bereich innerhalb des mc's ???
wenn du nicht konkreter wirst, dann kann ich dir leider nicht helfen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 14-09-2005, 15:57   #7 (permalink)
Neuer User
 
Benutzerbild von GiggleCat
 
Registriert seit: Sep 2005
Ort: Bei den sieben Zwergen
Beiträge: 5
Question

Hi,

MC heisst Movieclip, oder nicht?

Da ich wollte, dass die Kiste nur auf einen bestimmten Bereich des ersten MCs kollidiert, habe ich einen zweiten MC in den ersten MC gesetzt. Und auf diesen auch das hitTest-Script gesetzt.

Wenn ich von der Kiste aus den hitTest mache, reagiert er nicht mehr drauf, da es ein MC im MC ist. Man sollte doch auch ein Script reinsetzen können, dass ebenfalls alles durchgehenden MC's anspricht ohne alle aufzuzählen.

Ansonsten zum ersten Script von dir:

Danke, mir ist eben auch endlich(!!!!!) in den Sinn gekommen was pAnzahl darstellen soll. Bin ein wenig verpeilt manchmal.
So, schön und gut, Schneefall mit Kisten brauch ich nicht, aber das die MC's wenn sie unten angekommen sind, wieder oben zufällig neugeladen werden. Nicht wieder an der gleichen stelle.

Mit Dateien usw. bin ich ein wenig Eigen. Ich wollte nicht mal dem Kerl aus dem Handyladen mein Passwort für den Kundendienst geben... ^^

Ansonsten: Wie hast du dir das Wissen angeeignet? Learning by doing? Buch? Ein bestimmtes?
GiggleCat ist offline   Mit Zitat antworten
Alt 14-09-2005, 17:18   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
"..MC heisst Movieclip.."
ja

"..wieder oben ... Nicht wieder an der gleichen stelle.."
denn du die kiste hochsetzt, dann halt per random ein neues _x vergeben.

"..Mit Dateien usw. bin ich ein wenig Eigen.."
du kannst hier sowieso nur 50kbyte hochladen. also ein auf das problem reduzierte fla. und weisst du, dein zeugs will hier sowieso keiner haben :-))) (ist nur spass). wer nehmen will, der muss auch geben können.
davon mal abgesehen bleibt es dabei: ohne genaue erklärung was es sein soll kann dir hier niemand etwas erklären.
man munkelt und man könnte vermuten, das dein problem darinn liegt:
var p={x:0, y:0}
test_mc.localToGlobal(p);
test_mc.hitTest(p.x,p.y);


"..Wie hast du dir das Wissen angeeignet?.."
über 25jahre, jeden tag so 16stunden. und ich weiss zunehmend weniger über computer, da sich das wissen darüber schneller entwickelt als ich es aufnehmen kann.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (14-09-2005 um 17:20 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 21-09-2005, 20:44   #9 (permalink)
Neuer User
 
Benutzerbild von GiggleCat
 
Registriert seit: Sep 2005
Ort: Bei den sieben Zwergen
Beiträge: 5
Smile

Danke für deine Mühe, ich habe mir ein Buch bestellt mit dem mein Problem gelöst wurde

Ich glaube den Thread hätte ich im Spieleforum eröffnen sollen, aber was soll's.

Musste eigentlich ganz anders aufgebaut werden und der Zugriff auf den untersten MC über 20 andere funktioniert doch. Doch verliere ich manchmal den Überblick über die Namen.

Ach und das mit den fallenden Kisten ist sogar noch einfacher gelöst worden als mit dem Schneeflocken-script *smiles
GiggleCat ist offline   Mit Zitat antworten
Alt 05-10-2005, 03:30   #10 (permalink)
Phil-e
 
Benutzerbild von gonzo47
 
Registriert seit: Jan 2005
Ort: Erde
Beiträge: 82
Question Äh ...

Eigentlich dieselbe Frage :

hab hier son Spiel in der Mache.

Raumschiff schiesst - heisst : per attacheMovieClip wird der "schuss" geladen und benamst (auch mit "schuss"+increment) - so .

Jetzt werden nach belieben Feinde in die Bühne geladen und genauso benamst.
Wie kriegf ich jetzt mit einer schlauen Funktion raus welcher mc wen trifft also
kollision von enemyX-enemyY , enemyX-shotY , enemyX-derberHero.

Kann man das als Klasse Lösen die man an den enemy_mc "drantackert", die dann bei jedweder kollision den namen(klasse) vom gerammten mc returnt?

Gruss Phil
__________________
Dreckig rein - sauber wieder raus .....
gonzo47 ist offline   Mit Zitat antworten
Alt 05-10-2005, 14:03   #11 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
du musst jeden 'schuss' mit jedem 'raumschiff' auf kollision testen.
da ist es prinzipiell egal, ob du das in einer schleife, einer klasse oder objektorientiert machst. hauptsache, du bekommst das irgendwie geregelt (klassen wäre natürlich klasse).

so ganz grob:
for (i in raumschiff_array) {
for (j in schuss_array) {
if (raumschiff_array[i].hitTest(schuss_array[j])) {
...

oder z.b. jedes raumschiff hat sein eigenes programm:
raumschiff1.onEnterFrame=fTestTreffer;
raumschiff2.onEnterFrame=fTestTreffer;
raumschiff3.onEnterFrame=fTestTreffer;

function fTestTreffer(){
for (j in schuss_array) {
if (this.hitTest(schuss_array[j])) {
...

oder sinngemäss das gleiche:
jeder schuss hat sein eigenes programm


als 2. schritt kannst du versuchen das zu optimieren.
z.b., wenn ein schuss gerade aus geht, dann kann er niemals ein raumschiff treffen, das 'oben' bzw. 'hinter' dem schuss fliegt.
das aber wirklich erst als 2. schritt machen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 07-10-2005, 01:28   #12 (permalink)
Phil-e
 
Benutzerbild von gonzo47
 
Registriert seit: Jan 2005
Ort: Erde
Beiträge: 82
Danke sehr

Werde mich damit beschäftigen - muss ich, um diese arrays abzufragen, diese auch beim "schiessen" erzeugen ?
__________________
Dreckig rein - sauber wieder raus .....
gonzo47 ist offline   Mit Zitat antworten
Alt 07-10-2005, 16:10   #13 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
so oder anders ...

wenn du z.b. ein all_schuss_mc - objekt anlegst und alle schüsse darinn attachst, dann erstellt sich das array gewissermassen von selbst

_root.all_schuss_mc.attachMovie(...)

for (i in all_schuss_mc) {

ist auch bequemer, wenn der schuss wieder removeMovieClip't wird.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (07-10-2005 um 16:12 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 08-10-2005, 14:26   #14 (permalink)
Phil-e
 
Benutzerbild von gonzo47
 
Registriert seit: Jan 2005
Ort: Erde
Beiträge: 82
Thumbs up Es Funtkioniert schon mal

was ich da gebastelt hab - superklasse Hilfe
Werde mich sicher nochmal melden - wenns fertig ist lad ichs auch hoch

Danke Sehr
Phil
__________________
Dreckig rein - sauber wieder raus .....
gonzo47 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 16:26 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele