Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-06-2002, 10:48   #1 (permalink)
stolzer Bayer :-)
 
Benutzerbild von FunZer
 
Registriert seit: Jun 2001
Ort: Jetzt endgültig in Regensburg
Beiträge: 910
Probleme mit einem Script (oder überhaupt mal ein Script)

Hi,

ich habe folgendes Problem. Stellen wir uns mal eine Uhr vor. Die Uhr ist ein MC. In der Uhr ist ein Zeiger (eigener mc) ... soweit sogut.

Dann habe ich 4 Buttons (Button mit Namen 12, 3, 6, 9)

Jetzt möchte ich, wenn ich auf Button 3 klicke, dass der Zeiger mit der spitze auf 3 Uhr wandert und wenn ich 9 klicke dass er sich auf 9 dreht. Eigentlich alles total simpel und soweit würd ichs auch noch hinkriegen.

Allerdings möchte ich, dass er wenn er auf 3 steht, dann von 3 auf 9 geht und dann von 9 ab auf die neue Position. Versteht Ihr? Er soll immer von dem Punkt wo er steht dann auf den nächsten Punkt drehen. Das muss mit irgendeinem Script FunZen, aber leider hab ich schon vergeblich gesucht...

Hat jemand was rumliegen oder weiß jemand lösung. Schön und wichtig wäre, wenn der zeiger dann abbremst, also eine abbremsfunktion wäre auch nicht schlecht.

Vielen Dank für die Hilfe.

FunZer
FunZer ist offline   Mit Zitat antworten
Alt 12-06-2002, 11:14   #2 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
hi funzer,
ganz einfach, du machst deine tweening animation
und in den jeweiligen keyframes schreibst du
ActionScript:
  1. //framescript für 9 uhr
  2. if(_root.zeit == 9) _root.stop();
  3.  
  4. //buttonscript für 9 uhr
  5. if(_root.zeit != 9){
  6.       _root.zeit = 9;
  7.       _root.play();
  8. }
ob es abbremst oder nicht,
kannst du dann innerhalb deines
tweenings bestimmen.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 12-06-2002, 11:46   #3 (permalink)
membered
 
Benutzerbild von michi
 
Registriert seit: Jun 2001
Ort: Wien
Beiträge: 496
Ich habs dir mal komplett in AS gebaut.

Bye,
michi
Angehängte Dateien
Dateityp: zip werhatanderuhrgedreht.zip (4,5 KB, 13x aufgerufen)
michi ist offline   Mit Zitat antworten
Alt 12-06-2002, 12:14   #4 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
sag mal ralf...wann krieg ich dich eigentlich mal zu gesicht?

munich?...

greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 12-06-2002, 12:30   #5 (permalink)
stolzer Bayer :-)
 
Benutzerbild von FunZer
 
Registriert seit: Jun 2001
Ort: Jetzt endgültig in Regensburg
Beiträge: 910
Thumbs up

Zitat:
Geschrieben von michi
Ich habs dir mal komplett in AS gebaut.

Bye,
michi

Super, genau das hab ich gesucht. Leider steig ich glaub ich nicht durch. Das ist ja immer das Problem an fertigen flas ...

ich möchts ja auch kapieren und ungern das Script klauen / verwenden ... vielleicht kannst mir ganz kurz helfen, damit ich da einen Einblick bekomme wie das gemacht ist....

@bokel Danke auch Dir, aber das Script vom michi ist besser, da nur as :-)

FunZer
FunZer ist offline   Mit Zitat antworten
Alt 12-06-2002, 13:24   #6 (permalink)
membered
 
Benutzerbild von michi
 
Registriert seit: Jun 2001
Ort: Wien
Beiträge: 496
Du kannst das Script echt ohne Probleme klauen. Und hier die Erklärung, damit dein Cheffe nicht blöd schaut und sich fragt, woher du das so plötzlich kannst
PHP-Code:
onClipEvent(load)
    {
// je höher Speed wird, desto langsamer wird Bewegung.
    
speed=15;
// Brauch ich, damit Initialisierungs-Scripte nur 1Mal ablaufen.
    
checked=true;
    }

onClipEvent(enterFrame)
    {
// Sobald per Button die Variable _root.wohin auf den Wert 0, 90, 180 oder 270 gesetzt wird.
    
if (_root.wohin!=true)
        {

// Damit folgender Script-Teil nur einmal abläuft.
        
if (checked==true)
            {
// Die Variable drehung nimmt den derzeitigen Winkel des Zeigers auf.
            
drehung=this._rotation;
// Der Befehl _rotation geht nur von -180 bis 180. Somit hatte ich ein
// Problem mit der Richtung der Zeigerbewegung. Deshalb wird hier,
// wenn die Grad kleiner 0 sind, 360° dazugezählt, damit auch ja brav alles
// im Uhrzeigersinn läuft!
            
if (drehung<0)
                {
                
drehung=360+this._rotation;
                }
// Wird gesetzt, damit dieser Init-Teil nicht nochmal abläuft.
            
checked=false;
            }

// Kleiner Fake. Wenn der Zeiger auf 9:00 stand und auf 12:00 musste,
// hat er manchmal gesponnen. Daher wird die Bewegung nur mit normalem
// addieren der Variable speed gemacht, bis der Zeiger auf 12:00 steht.
// Danach werden die Grad auf 0 gesetzt, weil 12:00 ja 0° sind. Dann
// gehts normal mit else weiter.
        
if (drehung>_root.wohin and drehung<360 and _root.wohin!=0)
            {
            
drehung+=speed;
            if (
drehung>=360)
                {
                
drehung=0;
                }
            }
        else
            {
// Damit im Uhrzeigersinn gedreht wird, setz ich hier mal auf 360.
            
if (_root.wohin==0)
                {
                
_root.wohin=360;
                }
// Die Differenz zwischen derzeitiger Drehung und Winkel, den es zu
// erreichen gilt wird bei jedem Durchlauf durch die Geschwindigkeit geteilt.
// Dadurch tritt der Effekt des Langsamerwerdens auf. Nachteil: Man
// muss beim Wählen der Variable "speed" (oben) ein wenig umdenken.
            
drehung+=(_root.wohin-drehung)/speed;
            }
// Da wir bisher nur mit Variablen gerechnet haben, muss die ja auch
// mal zugewiesen werden!
        
this._rotation=drehung;

// Hier wird gechecked, obs noch was bringt, die Bewegung aufrecht zu
// erhalten. Wenn eine Zahl schließlich immer wieder geteilt wird, gehts zwar
// ins unendliche, 0 wird aber nie erreicht.
        
if (Math.abs(_root.wohin-drehung)<1)
            {
            
drehung=_root.wohin;
// Und damit nicht noch blöde Kommazahlen dastehen, wird die Drehung
// nochmals auf ganze Zahlen angepasst.
            
switch (_root.wohin)
                {
                case 
0drehung=0; return;
                case 
90drehung=90; return;
                case 
180drehung=180; return;
                case 
270drehung=270; return;
                default: 
_root.wohin=false;
                }
// Zum Schluss wird noch die Variable auf true gesetzt, damit dieser
// Programmteil nicht pausenlos abläuft.
            
_root.wohin=true;
// Die gerade auf ganze Zahlen gerundete Drehung wird noch schnell zugewiesen
            
this._rotation=drehung;
// Und die Variable der Initiirung für den nächsten Click vorbereitet.
            
checked=true;
            }
        }
    } 
Ich hoff, ich habs nicht zu kompliziert gemacht und wenigstens halbwegs gut erklären können.

Hab ich wirklich gern gemacht! Immer wieder kleine Herausforderungen halten einen am Leben

Bye,
michi
michi ist offline   Mit Zitat antworten
Alt 12-06-2002, 13:31   #7 (permalink)
stolzer Bayer :-)
 
Benutzerbild von FunZer
 
Registriert seit: Jun 2001
Ort: Jetzt endgültig in Regensburg
Beiträge: 910
Thumbs up

Werds mir gleich mal reinziehen und versuchen es zu verstehen !!!

Vielen Lieben Dank erstmal hast mir wirklich geholfen... das hätt ich von selbst NIE geschafft... aber jetzt wird extrem geflasht, dann müsst Ihr mich um Hilfe fragen hähä

FunZer
FunZer 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 02:45 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele