Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-07-2010, 15:11   #1 (permalink)
*
 
Registriert seit: Jul 2008
Beiträge: 304
elastischer button

hallo leute!

ich habe ein für euch sicherlich einfach zu lösendes problem!
dieses AS liegt direkt auf einem mc und funktioniert auch solange der mc in der root zeitleiste liegt.
ActionScript:
  1. onClipEvent (load) {
  2.     defaultX = _x;
  3.     defaultY = _y;
  4.     newXpos = defaultX;
  5.     newYpos = defaultY;
  6. }
  7. //
  8. onClipEvent (enterFrame) {
  9.     if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
  10.         xDifference = _root._xmouse-defaultX;
  11.         yDifference = _root._ymouse-defaultY;
  12.         newXpos = (_root._xmouse-xDifference/maxDistance);
  13.         newYpos = (_root._ymouse-yDifference/maxDistance);
  14.     } else {
  15.         newXpos = defaultX;
  16.         newYpos = defaultY;
  17.     }
  18.     newX = (newX*friction)+((newXpos-_x)*ratio);
  19.     newY = (newY*friction)+((newYpos-_y)*ratio);
  20.     _x += newX;
  21.     _y += newY;
  22. }
sobald der mc in einem anderen mc liegt funktioniert das nicht mehr richtig. woran liegt das?
ich hab mal die .fla mit einem beispiel angehangen zur verdeutlichung.

ich hoffe es kann jemand helfen!
l.g.
capten
Angehängte Dateien
Dateityp: fla ff.fla (64,0 KB, 3x aufgerufen)

Geändert von capten (14-07-2010 um 15:13 Uhr)
capten ist offline   Mit Zitat antworten
Alt 14-07-2010, 17:09   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
So sollte es klappen, denke ich mal:
PHP-Code:
onClipEvent (load) {
    
defaultX _x;
    
defaultY _y;
    
newXpos defaultX;
    
newYpos defaultY;
}
//
onClipEvent (enterFrame) {
    if (
this.hitTest(_root._xmouse_root._ymousetrue)) {
        
xDifference this._parent._xmouse-defaultX;
        
yDifference this._parent._ymouse-defaultY;
        
newXpos = (this._parent._xmouse-xDifference/maxDistance);
        
newYpos = (this._parent._ymouse-yDifference/maxDistance);
    } else {
        
newXpos defaultX;
        
newYpos defaultY;
    }
    
newX = (newX*friction)+((newXpos-_x)*ratio);
    
newY = (newY*friction)+((newYpos-_y)*ratio);
    
_x += newX;
    
_y += newY;

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 15-07-2010, 12:32   #3 (permalink)
*
 
Registriert seit: Jul 2008
Beiträge: 304
Arrow ein kleines problem bleibt!

EDIT:

so hab es fasst! eine sache bleibt noch zu lösen.
wenn ich über einen mc rolle und danach direkt über einen anderen, wird der auch mit gezogen! (siehe anhang)
woran liegt das und wie bekommt man das weg?
ActionScript:
  1. var friction = 0.8;
  2. var ratio = 0.2;
  3. //
  4. var maxDistance = 4;
  5. //
  6. function elast(welcher) {
  7.     defaultX = welcher._x;
  8.     defaultY = welcher._y;
  9.     newXpos = defaultX;
  10.     newYpos = defaultY;
  11.     //
  12.     welcher.onEnterFrame = function() {
  13.         if (welcher.hitTest(_root._xmouse, _root._ymouse, true)) {
  14.             xDifference = welcher._xmouse-defaultX;
  15.             yDifference = welcher._ymouse-defaultY;
  16.             newXpos = (welcher._xmouse-xDifference/maxDistance);
  17.             newYpos = (welcher._ymouse-yDifference/maxDistance);
  18.         } else {
  19.             newXpos = defaultX;
  20.             newYpos = defaultY;
  21.         }
  22.         //
  23.         newX = (newX*friction)+((newXpos-welcher._x)*ratio);
  24.         newY = (newY*friction)+((newYpos-welcher._y)*ratio);
  25.         //
  26.         welcher._x += newX;
  27.         welcher._y += newY;
  28.         //
  29.         if (welcher._x == 0 && welcher._y == 0) {
  30.             delete welcher.onEnterFrame;
  31.         }
  32.         //   
  33.     };
  34. }

l.g.
Angehängte Dateien
Dateityp: fla elast.fla (32,0 KB, 5x aufgerufen)

Geändert von capten (15-07-2010 um 20:24 Uhr)
capten ist offline   Mit Zitat antworten
Alt 16-07-2010, 14:01   #4 (permalink)
*
 
Registriert seit: Jul 2008
Beiträge: 304
hat niemand einen kleinen tipp?
capten ist offline   Mit Zitat antworten
Alt 26-07-2010, 14:14   #5 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
PHP-Code:
var friction 0.8;
var 
ratio 0.2;
//
var maxDistance 4;
//
function elast(welcher) {
    var 
welcher;
    
w.newX 0;
    
w.newY 0;
    
w.defaultX w._x;
    
w.defaultY w._y;
    
w.newXpos w.defaultX;
    
w.newYpos w.defaultY;

    
//
    
w.onEnterFrame = function() {
        if (
this.hitTest(_root._xmouse_root._ymousetrue)) {
            
this.xDifference this._xmouse-this.defaultX;
            
this.yDifference this._ymouse-this.defaultY;
            
this.newXpos = (this._xmouse-this.xDifference/maxDistance);
            
this.newYpos = (this._ymouse-this.yDifference/maxDistance);
        } else {
            
this.newXpos this.defaultX;
            
this.newYpos this.defaultY;
        }
        
//
        
this.newX = (this.newX*friction)+((this.newXpos-this._x)*ratio);
        
this.newY = (this.newY*friction)+((this.newYpos-this._y)*ratio);
        
//
        
this._x += this.newX;
        
this._y += this.newY;
        
//
        
if (this._x == && this._y == 0) {
            
delete this.onEnterFrame;
        }
        
//     
    
};

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 28-07-2010, 20:24   #6 (permalink)
*
 
Registriert seit: Jul 2008
Beiträge: 304
danke für deine antwort! allerdings funktioniert das auch nicht richtig.

wenn man etwas wilder zwischen den mc's hin und her wechselt gehen die nicht zur ihrem ursprungsort zurück.
es kommt auch vor wenn man die maus öfter über einen mc drüber und wieder raus bewegt.

woran könnte das liegen?
capten ist offline   Mit Zitat antworten
Alt 29-07-2010, 11:44   #7 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Liegt am defaultX und Y. Kannste ja einfach auf 0 setzen:
PHP-Code:
w.defaultX 0
w
.defaultY 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 29-07-2010, 19:28   #8 (permalink)
*
 
Registriert seit: Jul 2008
Beiträge: 304
danke! jetzt funktioniert es!

eine kurze frage noch:
ich hatte probiert anstatt dem _xmouse/_ymouse einen mc als cursor zu nehmen.
der hitTest funktioniert auch aber das ziehen des buttons nicht mehr.

ActionScript:
  1. if (this.hitTest(eigenercursor._x, eigenercursor._y, true)) {
  2.             this.xDifference = this.eigenercursor._x-this.defaultX;
  3.             this.yDifference = this.eigenercursor._y-this.defaultY;
  4.             this.newXpos = (this.eigenercursor._x-this.xDifference/maxDistance);
  5.             this.newYpos = (this.eigenercursor._y-this.yDifference/maxDistance);

was hab ich da übersehen?
capten ist offline   Mit Zitat antworten
Alt 30-07-2010, 14:34   #9 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Kannst doch einen eigenen Cursor verwenden und trotzdem _x/_ymouse benutzen?
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 30-07-2010, 15:47   #10 (permalink)
*
 
Registriert seit: Jul 2008
Beiträge: 304
ich würde trotzdem sehr gerne wissen wie man das NUR mit einem mc machen könnte.
muss man in jeden elastischen button dann einen eigenen mc als cursor packen damit es funktioniert?

Geändert von capten (30-07-2010 um 17:40 Uhr)
capten ist offline   Mit Zitat antworten
Alt 31-07-2010, 15:40   #11 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Ich denke mal, da du dann die lokalen Koordinaten (innerhalb des MCs) brauchst, solltest du dir mal globalToLocal angucken.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 31-07-2010, 16:59   #12 (permalink)
*
 
Registriert seit: Jul 2008
Beiträge: 304
ich hab noch nie mit globalToLocal gearbeitet.
das ist mein zwischenstand der noch nicht funktioniert. geht das in die richtige richtung?
muss man bei "myPoint" noch ein _x oder _y mitgeben?
ActionScript:
  1. var friction = 0.8;
  2. var ratio = 0.2;
  3. //
  4. var maxDistance = 4;
  5. //
  6. function elast(welcher) {
  7.     var w = welcher;
  8.     w.newX = 0;
  9.     w.newY = 0;
  10.     w.defaultX = w._x;
  11.     w.defaultY = w._y;
  12.     w.newXpos = w.defaultX;
  13.     w.newYpos = w.defaultY;
  14. //
  15.     var myPoint:Object = {x:w._x, y:w._y};
  16.     // Create your generic point object.
  17.     meincursor.globalToLocal(myPoint);
  18.     //
  19.     w.onEnterFrame = function() {
  20.         if (this.hitTest(meincursor._x, meincursor._y, true)) {
  21.             this.xDifference = myPoint-this.defaultX;
  22.             this.yDifference = myPoint-this.defaultY;
  23.             this.newXpos = (myPoint-this.xDifference/maxDistance);
  24.             this.newYpos = (myPoint-this.yDifference/maxDistance);
  25.         } else {
  26.             this.newXpos = this.defaultX;
  27.             this.newYpos = this.defaultY;
  28.         }
  29.         //
  30.         this.newX = (this.newX*friction)+((this.newXpos-this._x)*ratio);
  31.         this.newY = (this.newY*friction)+((this.newYpos-this._y)*ratio);
  32.         //
  33.         this._x += this.newX;
  34.         this._y += this.newY;
  35.         //
  36.         if (this._x == 0 && this._y == 0) {
  37.             delete this.onEnterFrame;
  38.         }
  39.         //     
  40.     };
  41. }
capten ist offline   Mit Zitat antworten
Alt 31-07-2010, 17:19   #13 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hmmm...
PHP-Code:
var friction 0.8;
var 
ratio 0.2;
//
meincursor.startDrag(true);
//
var maxDistance 4;
//
function elast(welcher) {
    var 
welcher;
    
w.newX 0;
    
w.newY 0;
    
w.defaultX w._x;
    
w.defaultY w._y;
    
w.newXpos w.defaultX;
    
w.newYpos w.defaultY;

    
w.onEnterFrame = function() {
        
//
        
var myPoint = {x:_root.meincursor._xy:_root.meincursor._y};
        
this.globalToLocal(myPoint);
        
//
        
if (this.hitTest(meincursor._xmeincursor._ytrue)) {
            
this.xDifference myPoint.x-this.defaultX;
            
this.yDifference myPoint.y-this.defaultY;
            
this.newXpos = (myPoint.x-this.xDifference/maxDistance);
            
this.newYpos = (myPoint.y-this.yDifference/maxDistance);
        } else {
            
this.newXpos this.defaultX;
            
this.newYpos this.defaultY;
        }
        
//
        
this.newX = (this.newX*friction)+((this.newXpos-this._x)*ratio);
        
this.newY = (this.newY*friction)+((this.newYpos-this._y)*ratio);
        
//
        
this._x += this.newX;
        
this._y += this.newY;
        
//
        
if (this._x == && this._y == 0) {
            
delete this.onEnterFrame;
        }
        
//          
    
};

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 31-07-2010, 17:47   #14 (permalink)
*
 
Registriert seit: Jul 2008
Beiträge: 304
tausend dank!
ganz schön verwirrend mit ".x" und "._x" aber wieder was gelernt.
capten 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
elastischer slider xpixelrangerx Flash 8 0 06-02-2007 08:21
!!!hilfe Elastischer Button!!!! mattspanky Flash MX 4 16-01-2005 13:00
elastischer stoß m00n Softwarearchitektur und Entwurfsmuster 17 15-09-2004 13:28
elastischer button blaxxxun Flash MX 2 17-10-2002 23:16
elastischer Bewegungsabfang bebie ActionScript 1 8 04-08-2001 14:04


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele