Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-11-2004, 17:18   #1 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 14
Dringend Hilfe bei Menüsteurung/Kollisonsabfrage/Drehscheibenfkt. ...

Hallo da draußen,

da ich nicht so viel erfahrung mit Actionskript hab (keine), habe ich mir auch verschiedenen Tuts hilfen und auch code rausgeholt. Leider bin ich jetzt mit meinem Latein am ende ...

Ich möchte ein Menü entwerfen, dass sich wie eine Scheibe dreht. Folgender Code ist für die Drehung verantwortlich:

PHP-Code:
logo_mc.leseMausRotation = function() {
    var 
this._parent._xmouse-this._x;
    var 
this._parent._ymouse-this._y;
    return 
Math.atan2(yx)*180/Math.PI;
};
logo_mc.positionzurMaus = function() {
    
this._letztedrehung this._rotation;
    
this._rotation this.leseMausRotation()-this._clickrotation;
    
};
logo_mc.drehen = function() {
    
this._rotation += this.drehTempo;
    
this.drehTempo *= .9;
};
logo_mc.onPress = function() {
    
this._clickrotation this.leseMausRotation()-this._rotation;
    
this.onEnterFrame this.positionzurMaus;
};

logo_mc.onRelease logo_mc.onReleaseOutside=function () {
    
this.drehTempo this._rotation-this._letztedrehung;
    if (
this.drehTempo>180) {
        
this.drehTempo -= 360;
    } else if (
this.drehTempo<-180) {
        
this.drehTempo += 360;
    }
        
    
this.onEnterFrame this.drehen;
}; 
Also das funktiniert auch einwandfrei (ist ja auch bloß kopiert).

Dann habe ich versucht eine Kollisionsabfrage zu erstellen und habe folgenden Code eingefügt:

PHP-Code:
    if (_root.main.logo_mc.contact_mc.hitTest(_root.main.treffer)) {
        
_root.main.nextmenu 1;
        
_root.main.mc_goto_schalt._alpha 100;
        
        } else if (!(
_root.main.logo_mc.contact_mc.hitTest(_root.main.treffer))) {
        
_root.main.nextmenu 0;
        
_root.main.mc_goto_schalt._alpha 0;

    if (
_root.main.logo_mc.members_mc.hitTest(_root.main.treffer)) {
        
_root.main.nextmenu 2;
        
_root.main.mc_goto_schalt._alpha 100;
        
        } else if (!(
_root.main.logo_mc.members_mc.hitTest(_root.main.treffer))) {
        
_root.main.nextmenu 0;
        
_root.main.mc_goto_schalt._alpha 0;
    }
        } 
Das tut auch seine Sache.

Und hier nochmal der gesamte Code:
PHP-Code:
logo_mc.leseMausRotation = function() {
    var 
this._parent._xmouse-this._x;
    var 
this._parent._ymouse-this._y;
    return 
Math.atan2(yx)*180/Math.PI;
};
logo_mc.positionzurMaus = function() {
    
this._letztedrehung this._rotation;
    
this._rotation this.leseMausRotation()-this._clickrotation;
    
};
logo_mc.drehen = function() {
    
this._rotation += this.drehTempo;
    
this.drehTempo *= .9;
};
logo_mc.onPress = function() {
    
this._clickrotation this.leseMausRotation()-this._rotation;
    
this.onEnterFrame this.positionzurMaus;
    if (
_root.main.logo_mc.contact_mc.hitTest(_root.main.treffer)) {
        
_root.main.nextmenu 1;
        
_root.main.mc_goto_schalt._alpha 100;
        
        } else if (!(
_root.main.logo_mc.contact_mc.hitTest(_root.main.treffer))) {
        
_root.main.nextmenu 0;
        
_root.main.mc_goto_schalt._alpha 0;

    if (
_root.main.logo_mc.members_mc.hitTest(_root.main.treffer)) {
        
_root.main.nextmenu 2;
        
_root.main.mc_goto_schalt._alpha 100;
        
        } else if (!(
_root.main.logo_mc.members_mc.hitTest(_root.main.treffer))) {
        
_root.main.nextmenu 0;
        
_root.main.mc_goto_schalt._alpha 0;
    }
        }
    
};

logo_mc.onRelease logo_mc.onReleaseOutside=function () {
    
this.drehTempo this._rotation-this._letztedrehung;
    if (
this.drehTempo>180) {
        
this.drehTempo -= 360;
    } else if (
this.drehTempo<-180) {
        
this.drehTempo += 360;
    }
    if (
_root.main.logo_mc.contact_mc.hitTest(_root.main.treffer)) {
        
_root.main.nextmenu 1;
        
_root.main.mc_goto_schalt._alpha 100;
        
        } else if (!(
_root.main.logo_mc.contact_mc.hitTest(_root.main.treffer))) {
        
_root.main.nextmenu 0;
        
_root.main.mc_goto_schalt._alpha 0;

    if (
_root.main.logo_mc.members_mc.hitTest(_root.main.treffer)) {
        
_root.main.nextmenu 2;
        
_root.main.alpha1 100;
        
_root.main.mc_goto_schalt._alpha _root.main.alpha1;
        
        } else if (!(
_root.main.logo_mc.members_mc.hitTest(_root.main.treffer))) {
        
_root.main.nextmenu 0;
        
_root.main.alpha1 0;
        
_root.main.mc_goto_schalt._alpha _root.main.alpha1;
    }
        }
    
    
this.onEnterFrame this.drehen;
}; 
Das Problem ist so zu schildern: Ich würde gern, dass wenn ich die Maus halte oder loslasse beim drehen, die Kollosionsabfrage "automatisch" erfolgt.

Jetzt ist es so, dass ich das eine MC auf das andere "legen" (releasen) muss, damit die Abfrage gestartet wird.

Also im Klartext: Ich drehe die Drehscheibe, lasse los, sie dreht sich weiter und während ihrer drehung werden die einzelnen menüpunkte getriggert (Kollisionsabfrage) ...

Ich glaube, dass der Kollionsabfrage code irgendwo anders, vorher, in den code eingefügt werden muss ... aber wo und wie, da hab ich leider keine ahnung.

auf jeden danke schon mal im vorraus
kallekalypso ist offline   Mit Zitat antworten
Alt 03-11-2004, 17:58   #2 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 14
kann wohl keiner helfen ? .. habs heut den halben tag versucht hinzukriegen ...
kallekalypso ist offline   Mit Zitat antworten
Alt 03-11-2004, 18:02   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Beiträge: 2.051
magst du mal die fla anhängen...kann mir das so nur schwer vorstellen... !
kuma ist offline   Mit Zitat antworten
Alt 03-11-2004, 18:41   #4 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 14
Ohje, ich lad sie hoch aber die ist so ungeordnet , hoffe du kommst klar ... in der libary --> hauptmenü . Im der zeitleiste im Ordner 1 befindet sich ein layer mit Namen "Bezeichungen". Dort im ersten Frame liegt der Code.

danke schonmal

muh.zip
kallekalypso ist offline   Mit Zitat antworten
Alt 06-11-2004, 13:16   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Beiträge: 2.051
hi also, der code ist nicht schwer zu verstehen - ist gut nachvollziehbar für mich. jedoch verstehe ich dein problem nicht ganz! könntest es etwas genauer beschreiebm???
kuma ist offline   Mit Zitat antworten
Alt 06-11-2004, 18:37   #6 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 14
Klar. Also ich möchte, dass ...

1. ... wenn ich das Rad gedrückt haltend (press) drehe, dann sollen die menüpunkte getriggert werden

2. ... wenn ich das Rad gedrückt drehe, und dann loslasse (release), dann sollen die Menüpunkte ebenfalls getriggert werden, auch wenn sich das Rad eigenständig dreht. D.h. ich drehe es, lasse los, und wenn es sich dann von selber dreht, dann sollen die Punkte die das "Go-to" Fenster passieren, getriggert werden.

Jetzt funktioniert es ja nur, wenn ich das Rad drehe und genau über den Trigger (MC) release.

Hoffe das ist ein wenig verständlicher.

danke auf jedenfalls

gruß
kallekalypso 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 04:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele