Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-05-2007, 13:26   #1 (permalink)
lernend
 
Benutzerbild von mychiara
 
Registriert seit: Mar 2003
Ort: essen
Beiträge: 771
drehscheibe mit stopper - hittest

hello,

ich hab da mal wieder ein kleines problem mit einer art glücksrad.
also das drehen des rades macht überhaupt keine probleme, nur der "stopper".

zur besseren veranschaulichung mal eine kleine skizze, denn es ist einfach als das in worte zu fassen die verständlich sind:



also der stopper soll immer dann wenn er einen smallcircle trifft ein kleines stück
in die jeweilige richtung rotieren, je nachdem in welche richtung sich die drehscheibe dreht.

das problem ist, dass der stopper scheinbar nur sporadisch auf den hittest reagiert.

hier noch mal der betreffende code:

PHP-Code:

// hier werden alle variablen deklariert

function init () :Void {

       
// vars werden initialisiert
}

function 
createSmallCircles () :Void {
    
    var 
smallCircles_mc:MovieClip;
    var 
abstand:Number =  360 __anzSmall;
    
    for (var 
i:Number 0__anzSmalli++) {
        
        
smallCircles_arr.push smallCircles_mc wheel_mc.attachMovie ("smallCircle""sC_mc" ii) );
        
        var 
winkelGrad:Number           =     abstand;
        var 
radian:Number         =     winkelGrad * (Math.PI 180);
        
        
smallCircles_mc._x         =    Math.cos (radian) * (__radiusWheel 10);
        
smallCircles_mc._y         =    Math.sin (radian) * (__radiusWheel 10);

    }
    
    
activateButtonEvents ();
}

function 
activateButtonEvents () :Void {
    
    
wheel_mc.onPress press_handler;
    
wheel_mc.onRelease wheel_mc.onReleaseOutside release_handler;    
}

function 
press_handler () :Void {
    
    
__spinning              =     false;
    
__clickRotation         =     readMouseRotation () - wheel_mc._rotation;
    
    
wheel_mc.onEnterFrame        =     getPositionToMouse;
}

function 
release_handler () :Void {
    
    
__spinning     =    true;
    
speed          =     wheel_mc._rotation __lastSpin;
    
    if (
speed 180) {
        
speed -= 360;
        
    } else if (
speed < -180) {
        
speed += 360;
    }
    
    
wheel_mc.onEnterFrame =    spinWheel;
    
}


function 
readMouseRotation () :Number {
    
    var 
dx:Number     =     wheel._parent._xmouse wheel._x;
    var 
dy:Number     =     wheel._parent._ymouse wheel._y;
    
    return 
Math.atan2 (dydx) * 180 Math.PI;
}

function 
getPositionToMouse () :Void {
    
    
__lastSpin             =     wheel_mc._rotation;
    
wheel_mc._rotation         =     readMouseRotation () - __clickRotation;
    
    
checkStopper ();
    
}

function 
spinWheel () :Void {
    
    
wheel_mc._rotation            +=        speed;
    
speed                    *=        FRICTION;
    
    
checkStopper ();
        
    if (
Math.abs (speed) <= 0.7delete wheel_mc.onEnterFrame;
    
}

/* HIER IST DER HITTEST, vllt kann mans auch noch ein wenig schöner 
machen, ist ja unter umständen nicht gerade die performanteste sache
auf jedem frame 20 mal ein hittest durch zu laufen*/

function checkStopper () :Void {
    
//if (!__spinning)
        
for (var i:Number 0smallCircles_arr.lengthi++) {
            
            if (
stop_mc.hitTest (smallCircles_arr[i]) ) {
            
            
stop_mc._rotation += -speed;
                        
            } else {
                
                
stop_mc._rotation 0;
            }

        }
}


init (); 
hier gucken

Ich bräuchte mal eine kleinen denkanstoss. DANKE!!

edit sorry: für die komisch formatierung
__________________
cheerio mychiara

--------------------------------------------------------------------------

lars roboter [myspace] | larsroboter.com:::.

Geändert von mychiara (17-05-2007 um 13:33 Uhr)
mychiara ist offline   Mit Zitat antworten
Alt 20-05-2007, 07:37   #2 (permalink)
Developer
 
Benutzerbild von malthoff
 
Registriert seit: Sep 2001
Ort: Unterhaching/München
Beiträge: 513
hi.

interessanterweise reagiert der hitTest nur bei einem der "smallCircles"
und soweit ich erkennen kann nur bei dem letzten, der generiert wurde.

kann es sein, dass du das "smallCircles_arr" nicht vorher als Array initialisiert
hast? Einen anderen Fehler seh ich so auch nicht.
malthoff ist offline   Mit Zitat antworten
Alt 20-05-2007, 21:36   #3 (permalink)
lernend
 
Benutzerbild von mychiara
 
Registriert seit: Mar 2003
Ort: essen
Beiträge: 771
das smallCircles_arr Array wird ganz oben wo das kommentar steht deklariert und in der init function initialisiert. also daran wirds nich gelegen haben. danke trotzdem. aber der hinweis das immer nur der letzte smallCircle auf den hittest reagiert wiederum ist wahrschienlich schon ne gute sache! merci. ist mir gar nich aufgefallen.

werd ich dann noch mal schauen. - merci!
__________________
cheerio mychiara

--------------------------------------------------------------------------

lars roboter [myspace] | larsroboter.com:::.
mychiara ist offline   Mit Zitat antworten
Alt 20-05-2007, 22:54   #4 (permalink)
Developer
 
Benutzerbild von malthoff
 
Registriert seit: Sep 2001
Ort: Unterhaching/München
Beiträge: 513
schreib mal, wenn es läuft, woran es gelegen hat. find ich ganz interessant.
malthoff 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 22:49 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele