Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-02-2011, 13:55   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Beiträge: 84
Question hittest ohne sich selbst

Hallo,

ich habe ein kleines Problemchen. Ich habe 24 Steine, nach dem bewegen sollen diese überprüft werden, ob sie nicht auf einem anderen liegen. Ist dies der fall, sollen sie zurück an die position, wo sie vorher lagen.

Die Steine tragen die Namen stein_1 bis stein_24.

PHP-Code:
startpos_x this._x;
startpos_y this._y

for (var 
1j<=24j++) {

     if (
this.hitTest("_root.stein_"+j))  {
          
setProperty(this_x,startpos_x)
          
setProperty(this_y,startpos_y)
                           }

       } 
Problem ist nun, dass der Stein immer zurück hüpft. Liegt wohl daran, dass er sich selbst überprüft, also sich selbst berührt. Wie kann ich das ausschließen?

Danke für Anregungen.
Nick
lordnick ist offline   Mit Zitat antworten
Alt 03-02-2011, 14:28   #2 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Post

hier mal ein ganz simples bsp.:
PHP-Code:
var itemHolder = new Array();

var 
distance 5;

var 
6;

var 
= -1;
var 
20;

while ( 
a++ < ) {
    
    var 
item attachMovie"Item""item" agetNextHighestDepth() );
        
item._x * ( item._width distance );
        
item._y Math.floor) * ( item._height distance );
        
item.sX item._x;
        
item.sY item._y;
        
item.onPress = function() {
            
            
this.startDrag();
            
        }
        
item.onRelease item.onReleaseOutside = function() {
            
            
stopDrag();
            
        }


    
itemHolder.pushitem );
    
}  

//---

this.onEnterFrame = function() {
    
    for ( var 
str1 in itemHolder ) {
        
        var 
item1 itemHolderstr1 ];
        
        for ( var 
str2 in itemHolder ) {
            
            var 
item2 itemHolderstr2 ];
            
            if ( 
item1 != item2 ) {
                
                if ( 
item1.hitTestitem2 ) ) {
                    
                    
stopDrag();
                    
                    
item1._x item1.sX;
                    
item1._y item1.sY;
                    
                }
                
                
            }
            
        }
        
    }


pack den code in eine neue fla und leg in der bib einen mc Item an.... du kannst jetzt versuchen die items mit drag und drop zu bewegen. jedoch wenn du mit einem item über ein anderes kommst springt dieses wieder zurück zur seiner ausgangspos zurück

cheers,
sal

edit: CS3 fla mit anbei.
Angehängte Dateien
Dateityp: fla bsp.fla (24,0 KB, 3x aufgerufen)
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!

Geändert von salazar (03-02-2011 um 14:40 Uhr)
salazar ist offline   Mit Zitat antworten
Alt 03-02-2011, 14:54   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Beiträge: 84
danke ersteinmal für das beispiel.

leider kann ich die datei bei mir nicht öffnen. mal schauen ob ich es gebacken bekomme mit deinem code.

dachte, man könnte evtl diese zeile
PHP-Code:
if (this.hitTest("_root.stein_"+j))  { 
mit einer ersetzen, die das ganze kürzer macht; so evtl:
PHP-Code:
if (this.hitTest("_root.stein_"+j) && this != "_root.stein"+j)  { 
. Funktioniert aber nicht

Mal schauen, ob ich duch deinen Code soweit durchsteige, dass ich ihn verwenden kann; bzw. hoffe ich, dass der AS auch bei meiner alten flashversion läuft.
lordnick ist offline   Mit Zitat antworten
Alt 03-02-2011, 15:51   #4 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Zitat:
Zitat von lordnick Beitrag anzeigen
Mal schauen, ob ich duch deinen Code soweit durchsteige, dass ich ihn verwenden kann; bzw. hoffe ich, dass der AS auch bei meiner alten flashversion läuft.
mit flash CS4 kann ich leider nur bis auf CS3 runter speichern... wie das immer so ist mit den flash versionen
der code läuft einwandfrei. pack den wie gesagt in frame 1 einer frischen fla rein und leg dir in der bibliothek ein neues symbol/movieclip an. z.B. zeichneste dort ein kleines quadrat rein, 20x20pix klein.
in der bib klickste dann mit rechter maustaste drauf und wählst eigenschaften/properties aus. dort machste dann bei export for actionscript ein häkchen und trägst bei identifier "Item" ein.... schon kannste das testen.

der ganze code vor dem "//---" ist eh nur da zum anordnen der test items... erst danach wirds für den hitTest der items untereinander interessant.

allerings bin ich mir grad nicht mehr sicher ob ich dein anliegen korrekt verstanden habe!

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!

Geändert von salazar (03-02-2011 um 15:57 Uhr)
salazar ist offline   Mit Zitat antworten
Alt 03-02-2011, 15:54   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Ort: Köln
Beiträge: 28
Du machst auch erst den HitTest und prüfst dann ob er sich selbst testen würde. Machs andersrum

PHP-Code:
if (this != "_root.stein"+&& this.hitTest("_root.stein_"+j) )  { 
arne_ ist offline   Mit Zitat antworten
Alt 06-02-2011, 19:30   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Beiträge: 84
Zitat:
Zitat von arne_ Beitrag anzeigen
Du machst auch erst den HitTest und prüfst dann ob er sich selbst testen würde. Machs andersrum

PHP-Code:
if (this != "_root.stein"+&& this.hitTest("_root.stein_"+j) )  { 
Macht das denn einen Unterschied? Es muss ja beides zutreffen damit der Fall aktiv wird. Habe es dennoch getestet und ... nix passiert. Also der Stein flutscht immer zurück an seine alte Position.

Zitat:
Zitat von salazar Beitrag anzeigen
mit flash CS4 kann ich leider nur bis auf CS3 runter speichern... wie das immer so ist mit den flash versionen
der code läuft einwandfrei. pack den wie gesagt in frame 1 einer frischen fla rein und leg dir in der bibliothek ein neues symbol/movieclip an. z.B. zeichneste dort ein kleines quadrat rein, 20x20pix klein.
in der bib klickste dann mit rechter maustaste drauf und wählst eigenschaften/properties aus. dort machste dann bei export for actionscript ein häkchen und trägst bei identifier "Item" ein.... schon kannste das testen.

der ganze code vor dem "//---" ist eh nur da zum anordnen der test items... erst danach wirds für den hitTest der items untereinander interessant.

allerings bin ich mir grad nicht mehr sicher ob ich dein anliegen korrekt verstanden habe!

cheers,
sal
Hab nun auch einmal deinen Vorschlag ausprobiert. Funktioniert einwandfrei. Es werden 24 Steine angezeigt und wenn ein Stein den anderen Berührt, flutscht es zurück an seine alte Position. Werden aber alle Steine zurückgesetzt, die später erzeugt wurden als der Stein, der ausgewählt war. Sind z. B. Stein 1, 5 und 6 nicht mehr am ursprünglichen Platz und wird Stein 5 oder Stein 6 von Stein 2 berührt, so flutschen Stein 5 und 6 und der Stein 2 zurück an die ursprüngliche Position.

Leider bringt mich dein AS vorschlag somit auch nicht zur Lösung meines Problemchens.

Habs nun umständlich gelöst. Ich frage einfach alle Steine ab, ob sie mit dem ausgewählten Stein in Berührung kommen. Unschön es geht.

@ Salazar: Offtopic: Hast du eigentlich ein tutorial zu deinem SameGame?
lordnick ist offline   Mit Zitat antworten
Alt 08-02-2011, 16:55   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Ort: Köln
Beiträge: 28
Zitat:
Macht das denn einen Unterschied? Es muss ja beides zutreffen damit der Fall aktiv wird. Habe es dennoch getestet und ... nix passiert. Also der Stein flutscht immer zurück an seine alte Position.
Natürlich, du hast recht. Ich habe zu unaufmerksam gelesen. Allerdings macht es schon einen kleinen Unterschied. Und zwar wird in deiner Reihenfolge erst der hitTest durchgeführt bevor du checkst ob du dich selbst testest. Machst du es andersrum sparst du dir einen HitTest. In deinem Fall macht das sicher keinen Performanceunterschied, in anderen Anwendungen kann das allerdings schon einen Unterschied machen.
arne_ ist offline   Mit Zitat antworten
Alt 08-02-2011, 16:57   #8 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Zitat:
Zitat von lordnick Beitrag anzeigen
@ Salazar: Offtopic: Hast du eigentlich ein tutorial zu deinem SameGame?
hi,
nee du,
da hab ich kein tut zu geschrieben...

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
hittest schleife for

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
ein sich selbst löschender mc senfkorn ActionScript 2 4 25-08-2009 13:05
hitTest auf Instanzen von sich selbst nbuechi ActionScript 2 3 08-06-2006 13:06
mc verändert sich selbst??!?!? cris-the-best Flash MX 2004 5 18-11-2005 04:52
Öffnet sich im IE von selbst yoshimura ActionScript 1 3 31-10-2003 11:56
MC sich selbst unloaden mike_moriati ActionScript 1 1 07-03-2002 16:17


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele