Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 4 und Flash 5

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-07-2004, 18:09   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
einzelne duplicate ansprechen!

Hallo liebe flashgemeinde:-)

hab folgende frage:

ich will das per "duplicate" eine fläche mit kleinen quadraten "block" aufgebaut wird;
so weit klappt das auch. hab dafür das zusammengefriemelt:

Code:
zaehler = 20;
for(i=1; i<480; i++){
duplicateMovieClip(_root.bloecke.block ,"block"+i,i);
_root.bloecke.block._x+=zaehler;
if(i==20){
_root.bloecke.block._x=0;
_root.bloecke.block._y=20;
}
if(i==40){
_root.bloecke.block._x=0;
_root.bloecke.block._y=40;
}
if(i==60){
_root.bloecke.block._x=0;
_root.bloecke.block._y=60;
}
if(i==80){
_root.bloecke.block._x=0;
_root.bloecke.block._y=80;
}
if(i==100){
_root.bloecke.block._x=0;
_root.bloecke.block._y=100;
}
}
das geht so weiter bis es 480 blocke sind!
jeder block hat ja nun den namen block1, block2,block3,......block333...block320.... usw.

nun soll ein weiteres objekt namens "boulder" in die szene eingefügt werden, die ist dann mit der tastatur zu steuern. berührt der boulder einen der blöcke"1-480" soll der jenige block verschinden.

wie mache ich das denn nu ohne 480 einzelne hittests zu schreiben:-((

danke euch,
metraxas
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (10-07-2004 um 18:12 Uhr)
metraxas ist offline   Mit Zitat antworten
Alt 10-07-2004, 18:37   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Vom Prinzip her würde mir mal spontan sowas in der Art einfallen...
ActionScript:
  1. for(var i in _root) {
  2.   //"this" ist hier dein boulder
  3.   if(this.hitTest(_root[i]) && _root[i]._name.indexOf("block") != -1) {
  4.     _root[i].removeMovieClip();
  5.   }
  6. }
die zweite Abfrage mit dem Namen könntest dir auch sparen, wenn sonst nix auf _root leben sollte...

...und für den Aufbau von solchen Block-Gebilden ist folgendes Tut von Freund rusty sicher ganz hilfreich:
Tut's die keiner braucht! *modulo*
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 10-07-2004, 19:25   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
Danke rusty und sonar:

entschuldigt bitte:
dummerweise vergass ich zu erwähnen das ich noch mit flash5 hantiere:-((
also denke ich mal das die codes da oben dann nicht funktionieren oder,
ich kann zumindest die gezippten sachen nicht öffnen?
danke aber trotzdem das ihr euch die arbeit gemacht habt

ok
hab mir mal paar gedanken gemacht:
kann ich das nicht in etwar so lösen:

ich lege sowas:
Code:
onClipEvent(enterFrame){
if(this.hitTest(_root.block.bould._x, _root.block.bould._y)){
this._alpha=0; //:man kann das alpha ja auch noch mit unloadMovieClip ersetzen
}
}
auf den zu duplizierenden block! wird dann der script auf alle duplizierten blöcke übernommen: wenn ja müsste das doch eigentlich gehen oder? bei mir gehts aber dummerweise nicht :rolleyes
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (10-07-2004 um 19:30 Uhr)
metraxas ist offline   Mit Zitat antworten
Alt 10-07-2004, 19:59   #4 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Also... bis auf RustyCakes "Stage.scaleMode" (naja und "this.onMouseMove"...) is der Code schon F5-kompatibel.
Das mit dem onClipEvent(enterFrame) würde ich mir aus dem Kopf schlagen - du hättest ja dann 480 enterFrames quasi leer laufen Das kostet dann doch bissl Performance...

So wie ich dich verstanden hab, soll doch, wenn der Boulder, der per Keys gesteuert wird, eine der Tiles trifft, diese verschwinden lassen, oder? Dann könnte mein Code (der ja nur ein Teil des ganzen is - die Tastatursteuerung is ja nicht mit drin...) doch in die richtige Richtung gehen...

Servus@chief rusty
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)

Geändert von sonar (10-07-2004 um 20:00 Uhr)
sonar ist offline   Mit Zitat antworten
Alt 11-07-2004, 00:13   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
Zitat:
So wie ich dich verstanden hab, soll doch, wenn der Boulder, der per Keys gesteuert wird, eine der Tiles trifft, diese verschwinden lassen, oder?
Volltreffer, schiff versenkt

ok da ich schon bei deinem code anfange zu resignieren lass ich mal besser die finger von rusty´s code, sonst gibts garkeinen mehr ( ich bewundere immer wieder leute die sowas ausm ärmel schütteln ).

kannst du mir das mal ein bischen erläutern??
wo muss der script hin? auf den boulder in das
Code:
onClipEvent(keyDown) {
}
und was sagt mir denn diese zeile??:
Code:
if(this.hitTest(_root[i]) && _root[i]._name.indexOf("block") != -1) {
_root[i] verstehe ich mal so, das alles was "i" in "_root" erzeugt , also "blockxxx" gemeint ist?oder?
aber was ist das?:
Code:
 && _root[i]._name.indexOf("block") != -1)
vorallen was ist
Code:
._name.indexOf
und warum
Code:
!= -1
währe nett wenn...

danke
metraxas
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (11-07-2004 um 00:20 Uhr)
metraxas ist offline   Mit Zitat antworten
Alt 11-07-2004, 00:31   #6 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Uuupps!
Flash 5
Da hab ich wohl nicht aufgepasst
Ich lösch des teil dann oben wieder sonst gibts nur verwirrungen
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"

Geändert von RustyCake (11-07-2004 um 00:35 Uhr)
RustyCake ist offline   Mit Zitat antworten
Alt 11-07-2004, 00:33   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
ne, ich hatte es nur vergessen zu erwähnen
__________________
!!Gefährliches Halbwissen macht den meister!!
metraxas ist offline   Mit Zitat antworten
Alt 11-07-2004, 00:39   #8 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Ne war nicht Dein Fehler "Flash" ist hier für 5/4 und früher
Aber ich denk des Modulo könnte Dir auf jeden fall helfen
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 11-07-2004, 12:21   #9 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
So.
ActionScript:
  1. //es gilt fuer alles, was auf _root lebt....
  2. for(var i in _root) {
  3.   //"this" ist hier dein boulder
  4.   //und wenn dein boulder eines der objekte auf _root trifft
  5.   //und (&&) dessen Name "block" enthält...
  6.   if(this.hitTest(_root[i]) && _root[i]._name.indexOf("block") != -1) {
  7.     //entferne dieses Objekt
  8.     _root[i].removeMovieClip();
  9.   }
  10. }
...erstmal nicht so schwer
Um die Tastatursteuerung musst dich selber kümmern. Oder du stellst mal deine fla hoch.
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 11-07-2004, 15:41   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
ok danke es klappt soweit:-)
nur passieren da komische sachen
am besten du schaust dir das aelbst mal an

ich habs so gemacht:

PHP-Code:
onClipEvent (keyDown) {
    for (
i in _root.bloecke) {
        if (
this.hitTest(_root.bloecke[i]) && _root.bloecke[i]._name.indexOf("block") != -1) {
            
_root.bloecke[i].removeMovieClip();
        }
    }
    if (
Key.getCode() == 37) { //links
        
this._x -= 20;
    }
    if (
Key.getCode() == 38) { //oben
        
this._y -= 20;
    }
    if (
Key.getCode() == 39) { //rechts
        
this._x += 20;
    }
    if (
Key.getCode() == 40) { //unten
        
this._y += 20;
    }

jetzt löscht der bould die blöcke die er berührt aber leider nicht wenn er sie berührt sondern wenn er sie verlässt!!?
und der boulder liegt unter dan blöcken was auch nicht sein sollte.
hab dir mal die fla und swf gezippt und angehängt:

danke
metraxas
Angehängte Dateien
Dateityp: rar boulder_2.rar (3,5 KB, 6x aufgerufen)
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (11-07-2004 um 15:46 Uhr)
metraxas ist offline   Mit Zitat antworten
Alt 11-07-2004, 16:40   #11 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Und zurück.
Angehängte Dateien
Dateityp: zip boulder_1.fla.zip (4,6 KB, 9x aufgerufen)
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 11-07-2004, 19:17   #12 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
ok sonar ich danke dir vielmals:-)
das klappt wunderbar und ist auch nachzuvollziehen

danke für deine hilfe!!!!bekommst dann die vorabversion des spieles ...sofern es irgendwann mal fertig werden sollte
bis zum nächsten mal!
metraxas
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (11-07-2004 um 19:19 Uhr)
metraxas ist offline   Mit Zitat antworten
Alt 13-07-2004, 17:59   #13 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
hiho,
da ist schon das nächste prob:-)

hab einen weiters objekt im _root namens "stein".

nun soll der stein , wenn er keinen der bloecke berührt seine y richtung positiv ändern(+=10). An sonsten soll er da bleiben wo er ist.

jetzt dachte ich mir das ich mit sonars code folgendes fabrizieren kann,

code auf dem "stein":

PHP-Code:
onClipEvent (load) {
    var 
tf this._parent.bloecke;
    for (var 
i in tf) {
    var 
fallen tf[i];
}
}
onClipEvent (enterFrame) {
        if (
this.hitTest(fallen)) {
            
this._y this._y;
    } else {
        
this._y += 10;
    }

...geht aber doch net:-(


dann dachte ich mir das ebenfalls auf dem objekt "stein":

PHP-Code:
onClipEvent (load) {
    var 
tf this._parent.bloecke;
}
onClipEvent (enterFrame) {
    for (var 
i in tf) {
        if (
this.hitTest(tf[i])) {
            
this._y this._y;
        } else {
            
this._y += 10;
        }
    }

..und ratet mal was passiert....nücht!! der ball is fott..einfach weg...wohin auch immer

warumm geht das nicht? wieso kann ich nicht einfach aus dem code der sonar mitgeschickt hat das:
PHP-Code:
tl[i].removeMovieClip(); 
in
PHP-Code:
this._y this._y
ändern???

gibts denn eine möglichkeit mit zb. function() oder so , diese "bloecke" in eine variable zu verpacken das ich das von überall in jeder form ansprechen kann zb. hitTest???. irgendwann werde ich sonst wieder auf das selbe problem stossen da diese blöcke später noch andere eigenschaften erhalten sollen.(bei verschwinden eines blockes gibt es (a)punkte für den spieler, (b)taucht dann an einer anderen stelle ein weiter block auf.....)

langsam verliere ich die lust:-(((
bitte hilf nochaml sonar!!!!
danke
metraxas!
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (13-07-2004 um 18:13 Uhr)
metraxas ist offline   Mit Zitat antworten
Alt 13-07-2004, 18:50   #14 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Möchtest Du den Stein oder Ball nur um 10 pixel verschieben?
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 13-07-2004, 18:58   #15 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
hi RustyCake,

der "stein" liegt am oberen rand des filmes(über den blöcken) und soll solange er keinen block berührt nach unten fallen( in 10px schritten also "+=" nicht nur "+"). wenn er einen block berührt soll er seine y position die er hat beibehalten. liegt der stein also über bzw auf einem block und man "frisst" den block unter dem stein mit dem boulder weg soll der stein wieder +=10 fallen und am nachsten block(hinderniss) wieder hängenbleiben!


metraxas
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (13-07-2004 um 19:01 Uhr)
metraxas 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 18:43 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele